Variablen, Berechnungen, Vergleiche

Variablen, Berechnungen und Vergleiche werden benötigt, um komplexe InputScripte zu erstellen. Sie können Sie auch in normalen GuiXT Skripten verwenden, aber der InputAssistant wird in diesem Fall ebenfalls benötigt.

Es ist auch möglich, dll-Funktionen oder ABAP-Funktionen aufzurufen (Call Anweisung), um komplexe logische und arithmetische Verfahren durchzuführen. Sie werden jedoch feststellen, dass die meisten üblichen Probleme gelöst werden können, ohne eine exit Funktion auszuführen.

Mit Variablen arbeiten

Eine Variable wird bezeichnet mit V[meine_variable], wobei meine_variable der Name der Variable ist.

Gebrauchen Sie nur a … z , A … Z, 0 … 9 und die Sonderzeichen “_” “.” “-” im Variablennamen.

Beispiele für Variablennamen:

  • NeuerBetrag
  • VorMonat

Es ist nicht notwendig, die Variablen explizit zu deklarieren, bevor Sie mit Ihnen arbeiten.

Eine Variable stellt immer einen String dar, den Wert der Variablen. Dieser Wert wird entweder bezeichnet durch &V[mein_Name] oder durch &[mein_Name].

Die folgenden Variablen sind schon systemseitig vordefiniert:

V[_user]
V[_client]
V[_transaction]
V[_host]
V[_database]

Sie finden eine ausführliche Liste der Systemvariablen in der Dokumentation: Systemvariablen.

Die Variablen haben immer eine globale Gültigkeit, das heißt, sie sind sichtbar (und behalten ihren Wert) in allen anderen Skripten der gleichen R/3 Session. Wenn Sie eine neue R/3 Session beginnen (z.B. mit der /0 Anweisung in R/3), dann arbeiten Sie mit einem neuen Variablen Set.

Wenn Sie die einfache Bezeichnung &[Name] für die Werte von Variablen und Feldern verwenden wollen, dann können Sie Variablennamen verwenden, die mit einem “.” beginnen, um einen Konflikt mit Feldnamen auf dem gleichen Bildschirm zu vermeiden.

Eine Alternative ist die Verwendung von qualifizierten Bezeichnungen &V[Name] und &F[Name]

Variablen vergleichen

Gebrauchen Sie folgendes Format, um eine Variable mit einem String zu vergleichen:

if V[meine_Variable=Wert]

endif

Sie können auch zwei Variablen miteinander vergleichen, mit folgendem Format, das etwas kompliziert aussieht:

if V[meine_Variable_1=&[meine_Variable_2]]

endif

Der if Ausdruck kann die Operatoren “and”, “not”, “or”, “(” and “)” enthalten.

Beispiel 1

if V[_database=PR1]
  
Title “Willkommen in unserem Produktionssystem PR1]”
else
  
Title “Willkommen in unserem System &V[_database]“
endif

Es ist auch möglich, den Operator “<” und “>” zu verwenden. Bitte beachten Sie, dass in diesem Fall die Variable immer als Zahl angesehen wird. Es gibt keinen Stringvergleich mit “<” oder “>”.

Beispiel 2

if V[index<100]
  
goto next_row
endif

Berechnungen

Die Set Anweisung unterstützt die Grundoperatoren + , -, *, /. Alle Operanden werden als Zahlen angesehen. Das Ergebnis wird dann in einem Stringformat gespeichert. Bis zu zwei Dezimalstellen (gerundet) für non-integer Ergebnisse. Das Format ist das folgende:

Set V[meineVariable]Wert1 + Wert2
Set V[meineVariable]Wert1 – Wert2
Set V[meineVariable]Wert1 * Wer
t2
Set V[meineVariable]Wert1 / Wert2

Bitte beachten Sie, dass wenigstens ein Leerzeichen vor und hinter dem Operator stehen muß.

Beispiel 3

Das folgende Skript unterteilt ein Mengenfeld auf dem Bildschirm in drei Teile und zeigt die resultierenden Teilmengen


Set V[gesamtmenge] &[menge]

// Setzen der Gesamtmenge = 0 wenn keine Menge angezeigt wird

screen

if not V[gesamtmenge]
  
Set V[gesamtmenge] 0
endif

// Menge teilen

Set V[menge_ost]   &V[gesamtmenge] * 0.50
Set V[menge_mitte] &V[gesamtmenge] * 0.10
Set V[menge_west]  &V[gesamtmenge] * 0.40

// Teilmengen anzeigen

Text (10,80) “Osten: &V[menge_ost]“
Text (11,80) “Mitte: &V[menge_mitte]“
Text (12,80) “West: &V[menge_west]“

Beispiel 4

Das folgende Skript kann “On Enter” in der Transaktion VA01ausgeführt werden , um den Wert 1 in die Spalte “Auftragsmenge” jeder Zeile einzufügen, in der der Benutzer die Materialnummer eingegeben hat, ohne eine Anzahl anzugeben:

Set V[i] 1

label start

Set V[mat] “&cell[AllePositionen,Material,&V[i]]”
if not V[mat]
  
goto end
endif

Set V[oqt] “&cell[AllePositionen,Auftragsmenge,&V[i]]”
if not V[oqt]
  
Set cell[AllePositionen,Auftragsmenge,&V[i]] “1″
endif

Set V[i] &V[i] + 1
goto start

 

www.synactive.com

Sap Guixt weiter Variablen, Berechnungen, Vergleiche

Variablen, Berechnungen, Vergleiche