Für
eigene Eingabefelder ist es oft sinnvoll, einen beschreibenden
Text zu dem eingegebenen Schlüssel auszugeben. Das ist mit GuiXT-Mitteln
möglich, indem Sie über "Call" einen Funktionsbaustein aufzurufen, der
die entsprechenden SAP-Tabellen liest. Sie können zum Lesen aller
Tabellen den gleichen Funktionsbaustein /guixt/select verwenden;
Dokumentation dazu siehe
Funktionsbaustein /guixt/select. Alternativ können SAP-BAPIs oder
selbst programmierten Bausteine eingesetzt werden.
Nehmen wir an, Sie haben ein
eigenes Eingabefeld angelegt zur Eingabe einer Kundennummer:
In diesem Fall Cursor
auf Eingabefeld setzen; dabei können wir eigene Eingabefelder über
die Notation "SetCursor V[varname]" adressieren.
Aus Performancegründen
ist es meist sinnvoll, bei dem Lesen von Daten, die nicht in der
Transaktion selbst geändert werden, den GuiXT Cache mit
cache="transaction"
einzuschalten, um RFC-Zugriffe zu sparen.
Damit sieht das Script dann
wie folgt aus:
GuiXT
Set V[kunnr.description] ""
if V[kunnr]
// Führende Nullen ergänzen
Set V[k10](1-10) "0000000000&V[kunnr]" -alignRight
// Tabelle KNA1 lesen
Call "/guixt/select" cache="transaction" in.TABLE="KNA1" in.CONDITION="KUNNR = '&V[k10]'" in.FIELDS="NAME1,ORT01" out.FOUND="found" out.V1="name" out.V2="city"
if V[found]
Set V[kunnr.description] "&V[name], &V[city]"
else
SetCursor V[kunnr]
Message "E: Kunde '&V[kunnr]' nicht vorhanden" -statusline
endif
endif
InputField (10,1) "Kunde" (10,20) size=10 name="kunnr" techName="KNA1-KUNNR"
Text (10,33) "&V[kunnr.description]"
Falls Sie bei bestimmten
Benutzeraktionen ein InputScript starten, z.B. mit
GuiXT
On "/11" process="save.txt"
sollte auch dort geprüft
werden, ob eine gültige Kundennummer eingegeben wurde:
InputScript "save.txt":
GuiXT
// Kundennummer eingegeben?
if not V[kunnr]
SetCursor V[kunnr]
Return "E: Bitte Kundennummer eingeben" -statusline
endif
// Führende Nullen ergänzen
Set V[k10](1-10) "0000000000&V[kunnr]" -alignRight
// Gültige Kundennummer?
Call "/guixt/select" cache="transaction" in.TABLE="KNA1" in.CONDITION="KUNNR = '&V[k10]'" out.FOUND="found"
if not V[found]
SetCursor V[kunnr]
Return "E: Kunde '&V[kunnr]' nicht vorhanden" -statusline
endif
// Mit "Sichern" beginnen
Enter ...