Notation
Tipp: Eine
konsistente Namensgebung für die Variablen ist hilfreich. Zum Beispiel
immer nur Kleinbuchstaben, bei Bedarf durch "_" getrennt, etwa
V[previous_account]. Oder mit Gross- und Kleinbuchstaben: Inhalt der Variablen Systemvariablen
Sie finden eine ausführliche Liste der Systemvariablen in der Dokumentation: Systemvariablen. Gültigkeit Falls es einmal nötig sein sollte, Werte modusübergreifend zur Verfügung zu haben, können Sie mit Langtextvariablen und den Optionen toSharedText sowie fromSharedText der CopyText-Anweisung arbeiten. Häufiger kommt es vor, dass Parameter eines mit "/O..." aufgerufenen InputScripts im neuen Modus benötigt werden. Die Parameterübergabe in den neuen Modus erfolgt automatisch. Analog ist auch die Rückgabe von Werte aus einem aufgerufenen Modus möglich, siehe Anweisung "ReturnValues". Variablen zuweisen Set V[MM_init] "X" Um einer Variablen den Wert einer anderen Variablen zuzuweisen, arbeiten Sie mit der &V[...]-Notation. Beispiel: Set V[MM_nr2] "&V[MM_nr1]" Die Schreibweise Set V[MM_nr2] &V[MM_nr1] // !! nicht empfehlenswert !! ist nicht zu empfehlen, denn falls der Wert der Variablen V[MM_nr1] ein Leerzeichen enthält, wird nur der erste Teil des Strings zugewiesen und der restliche Teil als Option zum Set-Befehl interpretiert. Unproblematisch ist das Weglassen nur bei Zahlenwerten, z.B. Set V[i] 1 Wert einer Variablen
abfragen if V[MM_init=X] Vorsicht: Die Gleichheit wird hier sehr locker interpretiert :
Der Grund hierfür ist, dass die Variablen sehr häufig zum Vergleich eingegebener Werte benutzt werden, und hier müsste man sonst die automatische Umsetzung in Grossbuchstaben in der SAP-Anwendung bei zahlreichen Feldern sowie die Sonderbehandlung von 000..0 im Script berücksichtigen. Sie können aber durch die Option -strict bei if erreichen, dass auf exakte Gleichheit geprüft wird: if V[FI_mwskz=V0] -strict Wenn Sie im Vergleich "<" oder ">" statt "=" verwenden, interpretiert GuiXT beide Ausdrücke als Zahlenwerte und vergleicht dann. In folgendem Beispiel fragen wir ab, ob die Variable k einen Wert <100 hat: if V[k<100] Kurzform für Abfrage, ob
Variable nicht leer ist if V[varname] verwenden. Zwei Variablen
vergleichen if V[konto1=&V[konto2]] Bitte beachten: zwei schliessende Klammen am Ende und keine "..." verwenden. Generisches Rücksetzen
einer Menge von Variablen if not V[_transactionid=&V[MM_transactionid]] Set V[MM_*] "" endif Variablen konkatenieren Set V[MM01_text] "&V[M01_text1]&V[MM01_text2]" Dazwischen können sich auch konstante Strings befinden. Beispiel: Set V[id] "&V[a]-&V[b]-&V[c]" Teilstrings abgreifen Set V[x] "00113100" Jetzt hat V[y] den Wert "31". Ebenso bei Set V[x] "00113100" Es gibt zwischen den beiden Notationen einen Bedeutungsunterschied, der sich nur in Unicodesystemen bemerkbar macht. GuiXT arbeitet intern dann mit der UTF8-Codierung, und dort belegen manche Zeichen, zum Beispiel Umlaute ä,ö,ü, mehr als 1 Byte. Während (4-6) die Bytes 4 bis 6 abgreift, bezieht sich (4,6) auf die Zeichen 4 bis 6. Beispiel: Set V[x] "München" Jetzt hat V[y] den Wert "nch". Dagegen bei Set V[x] "München" den Wert "che". Da in Variablen auch Strukturen abgelegt werden können, deren Komponenten aus binären oder gepackten Zahlen bestehen, kann nicht generell die Zeichen-Interpretation verwendet werden. Länge eines Strings in
Bytes oder in Zeichen Beispiel: Set V[leng] "München" -stringLength Set V[count] "München" -charCount V[leng] ist 7 in nicht-Unicodesystemen und 8 in Unicodesystemen, da 'ü' in UTF8 zwei Bytes belegt. Dagegen ist V[count] immer 7. Tipp: Verwenden Sie -stringLength in Verbindung mit der Teilstringnotation (i-k) und -charCount in Verbindung mit der Teilstringnotation (i,k); siehe Beispiel im nächsten Abschnitt. Teilstrings mit
variablen Positionen // zum Testen Komponenten aus
SAP-Strukturen abgreifen Call
"BAPI_CUSTOMER_GETDETAIL2" in.CUSTOMERNO="0000002000"
out.CUSTOMERADDRESS="addr" Erläuterung: Der Funktionsbaustein "BAPI_CUSTOMER_GETDETAIL2" besitzt einen Export-Parameter "CUSTOMERADDRESS". Dieser wird in unsere Variable V[addr] gestellt. Laut SAP Funktionsbibliothek ist die Dictionary-Struktur des Parameters "CUSTOMERADDRES" "BAPICUSTOMER_04", und dort befindet sich der Ort in der Komponente "CITY". Häufig liefern Funktionsbausteine auch Tabellen zurück, bei denen jede Zeile eine SAP-Struktur besitzt, auf die wir mit der symbolischen Notation zugreifen können. Bei Verwenden von VersionNumber werden die Strukturinformation im GuiXT Cache (lokale Dateien) gespeichert, sodass das relativ aufwändige Lesen aus dem SAP Repository nur bei Ändern der VersionNumber anfällt. Komponenten in SAP
Strukturen setzen Set
V[line](BAPICUSTOMER_IDRANGE-SIGN) "I" Set V[meineVariable] Wert1 +
Wert2 Die Rechnungen erfolgen intern über doppeltgenaue Gleitpunktzahlen. Beispiel 1 Set V[x] 2 / 3 decimals=5 Resultat: 0,66667 DatumsangabenBei der Umwandlung in Zahlen werden Datumsangaben wie z.B. "01.06.2014" erkannt und automatisch in Tagen berechnet. Das Ergebnis wird wieder als Datum in gleichem Format ausgegeben, falls von einem Datum Zahlen addiert oder subtrahiert wurden. Beispiel 1: Set V[x] "01.06.2014" - 1 Resultat: "31.05.2014" Beispiel 2: Set V[x] "01.06.2014" - "01.01.2014" Resultat: "151" Beispiel 3: Die folgende Datumsrechnung prüft, ob ein gegebenes Datum V[date] ein Sonntag ist. Dazu wird ein beliebiger Sonntag, z.B. der 31.12.2000, von dem Datum subtrahiert und dann berechnet, ob die Differenz durch 7 teilbar ist: Set V[x] "&V[date]" -
"31.12.2000" Sie können in einem Variablennamen den Inhalt anderer Variablen verwenden. Beispiel:
Set V[name] "x" Hierdurch wird V[x] auf "10" gesetzt. Meist benutzt man diese Möglichkeit für einen fortlaufenden Index. Als Beispiel übertragen wir aus den angezeigten Zeilen einer Erfassungstabelle "Alle Positionen" die Spalte "Material" in fortlaufend nummerierte Variablen: Set V[i] 1
Feldtexte aus dem SAP Data Dictionary
"&ddic[BSEG-BSCHL]" Buchungsschlüssel
Bei Verwenden von
VersionNumber
werden die gelesenen
Texte im GuiXT Cache (lokale Dateien) gespeichert, sodass das
relativ aufwändige Lesen aus dem SAP Repository nur bei Ändern
der VersionNumber anfällt. |