Angebot anfordern
Preisliste herunterladen
Beratungsgespräch vereinbaren
Support
Stefan Rubsch
 - 31. Juli 2018

Hartkodierte Werte aus SAP-Formularen entfernen

Sie haben schon seit längerem SAP-Formulare im Einsatz? Dann ist es sehr wahrscheinlich, dass Sie einige hartkodierte Werte in den Formularen und den Source Codes haben. Problematisch ist das natürlich bei Stammdatenänderungen oder aber bei einer Zusammenlegung von Mandanten. In diesen Fällen empfiehlt es sich, zunächst die betroffenen Formulare herunterzuladen und auf die entsprechenden Attribute als hartkodierte Werte zu prüfen. Wie Sie die Formulare möglichst schnell und einfach massenhaft downloaden können, ist in diesem Artikel genauer beschrieben. Nach dem sie den Download ausgeführt und die XML-Daten auf hartkodierte Werte untersucht haben, können Sie mit der Bereinigung dieser beginnen. In diesem Artikel zeige ich Ihnen, welche Möglichkeiten Sie dabei haben und auf welche Besonderheiten Sie bei den einzelnen Formularen achten sollten.

Allgemeines Vorgehen, um hartkodierte Werte zu entfernen

Es ist wichtig, die Werte nach der Anpassung weiterhin jederzeit verändern zu können, ohne den Quellcode anpassen zu müssen. Zu diesem Zweck wurde entschieden, für jede DOI (Domains of Interest, wie Mandant, Länderschlüssel…) eine eigene Mapping-Tabelle anzulegen. Diese Customizing-Tabelle kann von den Fachbereichen über den Pflegedialog der sm31 angepasst werden. Die Werte werden mit Hilfe von Methoden aus den Tabellen gelesen. Um hartkodierte Werte in den Formularen zu ersetzen, implementierten wir die Methoden in den entsprechenden Formularen. Hier ist bei der Analyse zuvor vor allem darauf zu achten, dass die genauen Orte der hartkodierten Werte erfasst werden, um die Methoden an den korrekten Stellen aufrufen zu können. Wie diese drei Schritte im einzelnen umgesetzt wurden, zeige ich Ihnen in den nächsten Abschnitten.

Aufbau der Mapping-Tabelle

Zunächst beginnen wir mit dem Aufbau der Customizing-Tabelle Im unten aufgeführten Bild ist ein Beispiel für das Mapping des Länderschlüssels. Der Aufbau ist bei allen Domains of Interest gleich.

BLOG_MAPPINGTABELLE

Hartkodierte Werte – Mapping-Tabelle

In der ersten Spalte ist ein Schlüsselwort definiert, das als Schlüssel für den entsprechenden Wert gilt, der in der zweiten Spalte aufgeführt ist.

Erstellen der Mapping-Methoden

Um nun diese Werte aus den Tabellen zu lesen, wurden Methoden verwendet, die in einer Klasse gebündelt wurden.

BLOG_MAPPINGMETHODE

Hartkodierte Werte – Mapping-Methode

Als Eingabeparaemter wurden hier immer die Schlüsselwörter der Tabelle verwendet, um die Werte zu identifizieren. Zu beachten ist hier, dass SAP Keywords immer in Großbuchstaben speichert. Somit ist es notwendig, den erhaltenen Wert zu konvertieren. Im Anschluss werden die Werte per SELECT aus der Tabelle gelesen, wo der Importparameter und der Schlüsselwert übereinstimmen.

Im Anschluss sollte noch ein Fehlerhandling eingetragen werden, um möglichen Unachtsamkeiten beim Customizing entgegenzuwirken.  Hier werden drei Fälle unterschieden:

1. Der Methode wurde kein Keyword übergeben.

2. Zum Keyword existiert in der Tabelle kein Mapping-Wert.

3. Die Datenbank ist nicht erreichbar.

Im folgenden werde ich Ihnen aufzeigen, wie die Methoden in den einzelnen Formulararten implementiert wurden.

Implementierung der Mapping-Methoden

In dem Artikel gehen wir auf Sapscript, Smartforms und Adobe Forms jeweils gesondert ein, da sich Unterschiede in der Implementierung ergeben.

SapScript

In SapScript wird zunächst ein Symbol definiert, die den Wert aus der Methode entgegennimmt. Im zweiten Schritt wird diese mit dem Aufruf eines Unterprogramms, indem die Methode enthalten ist, gefüllt. Anschließend wird die betreffende Variable mit dem neu selektierten Wert befüllt.

Das Unterprogramm wird im Formular zugehörigen Report implementiert. Wie oben bereits erwähnt, wird dort die Methode aufgerufen.

Smartforms

Lokale Variable

Im ersten, möglichen Fall kommt der hartkodierte Wert nur in einem Coding-Element vor. Hierfür definieren wir eine lokale Variable, die das entsprechende Land aus der Methode entgegennimmt. Diese rufen wir direkt danach auf und füllen die angelegte Variable. Nach der Abfrage der Fehlercodes könnte noch ein entsprechendes Fehlerhandling implementiert werden. Anschließend wird die Variable in die Formularlogik integriert, so wie es zuvor der hartkodierte Wert war. Im folgenden Bild ist wieder ein Beispiel mit dem Länderschlüssel dargestellt.

Hartkodierte Werte – Mapping-Methode Implementierung Smartforms Code

 

Globale Variable

Wenn hartkodierte Werte als globale Variablen definiert sind, wird zunächst ebenfalls eine globale Mappingvariable angelegt. Anschließend wird im Reiter Initialisierung die Variable als Ausgangsparameter deklariert. Außerdem wird dort sie dort direkt über den Aufruf der Methode befüllt.

Hartkodierte Werte – Smartforms Globale Variable

Auftauchen können sie in Elementbedingungen und mehreren Coding-Elementen.  Bei ersteren die entsprechende auswählen, auf den Tab Bedingungen gehen und dort die entsprechende Variable durch die neu angelegte globale ersetzen.

Bei der zweiten Möglichkeit orientieren Sie sich wieder idealerweise an ihrer Analyseliste, wo alle Vorkommnisse mit dem Ort aufgeführt sind. Hier geben Sie die Variable als Eingangsparameter an und ersetzen die alte im Code.

 

Adobe Forms

Bei Adobe Forms können die Werte sowohl im Formular selbst als auch in der Schnittstelle existieren.

In der Schnittstelle wird die Methode einfach in der Coding Initialisierung aufgerufen und dort eine lokale Variable gefüllt.

Bei den Formular-Layouts legen wir in dem Fall für jedes Fall eine globale Variable an, die wir auch in den Kontext mit übernehmen. Das ermöglicht es uns, die Variable im Layout im Skritping zu nutzen und die hartkodierten Werte dadurch zu ersetzen.

 

Sonderfall Mandant

Sollten Sie wirklich eine Mandantenzusammenlegung planen, ist hier eine Anpassung vorzunehmen. Um die alte Logik der Mandantendifferenzierung beibehalten zu können, ist es notwendig, die Customizing-Tabelle anders aufzubauen Sie besteht wieder aus einer Spalte für Keyword . Zusätzlich ist der Buchungskreis und der alte Mandant angegeben. So ist es möglich, die alte Unterscheidung beizubehalten, da wir die Buchungskreise dafür verwenden, die auf den alten Mandanten basieren.

Standen Sie auch schon mal vor der Aufgabe, hartkodierte Werte in Formularen zu bereinigen? Wie sind Sie dabei vorgegangen? Wir freuen uns auf Ihre Kommentare oder kontaktieren Sie mich einfach direkt.

Stefan Rubsch

Mein Name ist Stefan Rubsch und ich bin begeisterter SAP Consultant bei mindsquare. Wie meine Kollegen habe ich mein Hobby zum Beruf gemacht.

Sie haben Fragen? Kontaktieren Sie mich!





Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.