Funktion Mit der Set-Anweisung können Sie Werte in Eingabefelder setzen. Die Set-Anweisung ist insbesondere zum Gebrauch in einem InputScript (Einbildtransaktionen) gedacht.

Im Unterschied zu Default prüft Set nicht, ob das Eingabefeld leer ist, sondern überschreibt einen eventuell existierenden Wert. In normalen GuiXT-Scripten ist  Set kaum verwendbar, da der ursprünglich anzuzeigende Wert schon bei Anzeige des Bildes überschrieben wird.

Ausser Eingabefeldern können Sie  durch  Set auch intern benutzten Variablen einen Wert zuweisen: Set V[Varname] "Wert".

Beispiel Set F[Auftragsart] "BV"

Das Eingabefeld Auftragsart erhält den Wert  "BV".

Häufig wird als Wert ein Parameter des InputScript oder ein vorher definiertes Eingabefeld genannt, z.B.

Parameter AufArt

...

Set F[Auftragsart] "&U[AufArt]"

Format
Set F[Eingabefeld] "Wert" setzt einen Wert für ein Eingabefeld.
Set V[Varname] "Wert" setzt eine globale Variable.
Set V[gnm*] "Wert" setzt einen Wert für alle globalen Variablen bei denen der Name mit "gnm*" beginnt.
Set V[varname](x-y) "Wert" setzt einen Wert in die Stellen x bis y. Falls die bisherige Länge der Variablen kürzer ist als x, wird mit Leerzeichen aufgefüllt.
Set Text[xxx] "Wert" als Kurzschreibweise für:

Set V[y] "Wert"
CopyText fromString="y" toText="xxx"

Analog wird &Text[xxx] in Strings durch den aktuellen Inhalt des Langtextes xxx ersetzt.
Set list[row,col] "Wert"

Set list[row,col,len] "Wert"

Nur in ABAP-Listanzeige möglich. Der angegebene Wert wird in die Liste geschrieben, und zwar in Zeile row und Spalte col, wobei die Zählung bei 0 beginnt und sich auf die aktuell angezeigte Seite bezieht. Optional kann durch len die gewünschte Länge des Strings mitgegeben werden.

Hinweis: Die Systemvariable V[_listfirstvisiblerow] enthält die absolute Nummer der ersten auf der Seite angezeigten Zeile, bei 1 beginnend.

Zusatzoptionen
-stringlength Die Länge des Strings (in Bytes) wird in der Variablen zur Verfügung gestellt
-charcount Die Anzahl Zeichen des Strings wird in der Variablen zur Verfügung gestellt
search= Angabe eines Suchstrings. Wird der String gefunden, so wird das danach angegebene Wort übertragen. Beispiel:

Set V[Belegnr] "&V[_message]" Search="Beleg"

Falls die Systemvariable V[_message] den Inhalt "Es wurde der Beleg 10004003 erzeugt" hat, so wird der Variablen V[Belegnr] der Wert "10004003" zugewiesen.  Bei der Suche wird Gross/Kleinschreibung ignoriert.

Durch if Q[ok] kann man abfragen, ob der String gefunden wurde.

-position Nur in Verbindung mit search=: Die Position 1,2,3,... (in Bytes) des gesuchten Strings wird in der Variablen zur Verfügung gestellt. Falls nicht gefunden: 0.
-charposition Nur in Verbindung mit search=: Die Position 1,2,3,... (in Zeichen) des gesuchten Strings wird in der Variablen zur Verfügung gestellt. Falls nicht gefunden: 0.
pattern= Angabe einer Suchmaske, welche die Zeichen
  • '%'  beliebiger String bis zum nächsten passenden Zeichen der Suchmaske
  • '_'  einzelnes Zeichen

enthalten kann.  Es werden von links nach rechts alle Zeichen in die Variable übertragen, die einem "%" oder "_" entsprechen. Wenn die angegebene Suchmaske nicht mehr mit dem String übereinstimmt, werden keine weiteren Zeichen übertragen.

Durch if Q[ok] kann man abfragen, ob die Suchmaske vollständig den angegebenen String beschrieben hat.

Beispiele:

Set V[x]   "02.05.2007"  pattern="__.__.____"       //  ok  V[x] = "02052007"
Set V[x]   "[abcd]"      pattern="[%]"             //  ok  V[x] ="abcd"
Set V[x]   "12"          pattern="%kg"             // nicht ok   V[x]= "12"
Set V[x]   "Beleg 400000087 hinzugefügt" pattern="Beleg % hinzugefügt"  // ok   V[x]= "400000087"  

regex= Angabe eines regulären Ausdrucks (ECMAScript Syntax). Es wird der auf den regulären Ausdurck passende Teilstring übertragen.

Durch if Q[ok] kann man abfragen, ob der reguläre Ausdruck auf den angegebenen String zutrifft.

Beispiele:

Set V[x]   "478"  regex="^[0-9]{3}$"       //  ok.  V[x] = "478",  prüft auf genau 3 Ziffern
Set V[x]   "M20"    regex="^(M1|M2|V1)$"             //  nicht ok,  V[x] = "", prüft auf M1 oder M2 oder V1
Set V[x]   "Beleg 400000087 hinzugefügt am 04.11.2020"    regex="[0-9]+"             //   ok,  V[x] = "400000087",  prüft auf Ziffernfolge

regexreplace=
regexreplaceFirst=
In Verbindung mit regex=: Alle gefundenen Teilstrings bzw. der erste gefundene Teilstring werden durch den angegebenen String ersetzt.

Durch if Q[ok] kann man abfragen, ob der String verändert wurde.

Beispiel:

Set V[x]   "Die Zahl 478 kommt zweimal vor: 487"  regex="[0-9]{3}"   regexreplace="XXX"     //  ok.  V[x] = "Die Zahl XXX kommt zweimal vor: XXX"

-uppercase Der Wert wird in Grossbuchstaben umgesetzt
-lowercase Der Wert wird in Kleinbuchstaben umgesetzt
-alignright Der String wird rechtsbündig übertragen. Nur sinnvoll mit Längenangabe in der Zielvariablen.
-unpack Ein Wert, der aus einem Funktionsbaustein/BAPI als gepackter Dezimalwert geliefert wurde,  wird als normale Ziffernreihe übertragen.
-pack Ein numerischer Wert wird in gepacktem Format abgelegt
Rechenoperationen und Zusatzoptionen
Set erlaubt die Angabe von Rechenoperationen +, -, *, / mit jeweils zwei Operanden. Das Ergebnis der Rechenoperation wird in aufbereiteter Form in die Variable gestellt. Die beiden Operanden können als Direktwerte (z.B. 1 oder 5830) oder als Inhalte von Variablen ("&V[...]") angegeben werden. Beispiele:

Set V[Wert]           5830 / 365
Set V[Wert]   "&V[Gesamt]" / 365
Set V[Wert]   "&V[Gesamt]" / "&V[Tage]"
Set V[Summe] "&V[Betrag1]" + "&V[Betrag2]"
Set V[Index]   "&V[Index]" +
1

Das Ergebnis wird kaufmännisch gerundet und mit 2 Dezimalstellen in die Ergebnisvariable gestellt. Dabei wird bei Anmeldung mit Sprache Englisch der Punkt, sonst das Komma zur Abtrennung der Dezimalstellen verwendet (siehe auch die Zusatzoptionen und die Anweisung DecimalSeparator). Ganzzahlige Werte werden ohne Dezimalstellen dargestellt.

decimals= Angabe der Anzahl gewünschter Dezimalstellen zur Aufbereitung des Ergebnisses (0,1,2,3,...). Auch ganzzahlige Werte werden mit der angegebenen Anzahl von Dezimalstellen dargestellt.
decimalseparator= Angabe des Trennzeichens für die Dezimalstellen: "," oder "." . Dieses wird sowohl bei der Interpretation der Operanden als auch bei der Darstellung des Ergebnisses berücksichtigt.   
decimalseparator=UserDefault Der im Benutzerstammsatz abgelegte Default (Punkt oder Komma) wird benutzt. Beim ersten Verwenden dieser Anweisung wird der Defaultwert über einen Remote Function Call (RFC) eingelesen. Es ist daher ein gültiger RFC Benutzer im GuiXT-Profile erforderlich.
groupseparator= Angabe eines Trennzeichens für die Tausendergruppen, meist "," oder ".". Es wird zur Darstellung des Ergebnisses verwendet.
groupseparator=UserDefault Der im Benutzerstammsatz abgelegte Default (Punkt oder Komma) wird benutzt. Beim ersten Verwenden dieser Anweisung wird der Defaultwert über einen Remote Function Call (RFC) eingelesen. Es ist daher ein gültiger RFC Benutzer im GuiXT-Profile erforderlich.
Beispiel
Set V[x]   246824717   Decimals=3   DecimalSeparator="."   GroupSeparator=","

Die Variable V[x] erhält den Wert "3,526,067.286". Das exakte Ergebnis ist "3526067,285714..."; es wird auf 3 Dezimalstellen gerundet und gemäss den Optionen aufbereitet.

Tipps & Tricks
  • Das Ankreuzen einer Checkbox ist ebenfalls mit Set möglich. Als Werte sind "X" oder " " möglich, oder entsprechend die Angabe eines Parameters, der einen dieser Werte besitzt.
  • Analog aktivieren Sie durch Set einen Radiobutton. Dabei ist es nicht nötig, die übrigen Radiobuttons der gleichen Gruppe zu deaktivieren, das geschieht automatisch bei dem Aktivieren eines einzelnen Radiobuttons. Zum Beispiel werden durch

    Set R[Dokumentation] "X"

    in Transaktion SE38 die weiteren Radiobuttons der gleichen Gruppe, R[Quelltext], R[Varianten], R[Attribute], R[Textelemente], auf nicht aktiv gesetzt.

  • Bitte lesen Sie das InputAssistant Tutorial zur Anwendung von Set.

 

Komponente GuiXT (für eigene Variablen: GuiXT + InputAssistant)