Überprüfung der Eingabe
Sie wollen zu einem Eingabefeld den zugehörigen Text mittels einer Call-Anweisung nachlesen. Dies möchten Sie jedoch nur tun, wenn das Feld durch den Anwender geändert wurde. Wenn der Anwender das Feld nicht ändert, so muss der Text ja nicht nachgelesen werden, da dieser immer noch richtig ist.
Bei der Übergabe von Werten an ein InputScript, gibt es verschiedene Möglichkeiten die Using/Parameter anzugeben. Siehe dazu auch die entsprechende Dokumentation von USING.
Fall 1
On "Enter" Process="Texte_ermitteln.txt
using Versandbedingung = [Versandbedingung]
Fall 2
On "Enter" Process="Texte_ermitteln.txt
using Versandbedingung = &[Versandbedingung]
Ändert der Anwender den Wert der Versandbedingung von 01 auf 02, wird im Fall 1 „02“ und im Fall 2 „01“ übergeben.
Diesen Umstand machen wir uns zu nutzen, indem wir beide Varianten an unterschiedliche Felder übergeben :
On "Enter" Process="VA01_Enter.txt"
Using VA01_VSBED_alt = &[VA01_VSBED] // alter Wert (vor Änderung durch Anwender)
Using VA01_VSBED_neu = [VA01_VSBED] // neuer Wert (nach Änderung durch Anwender)
Indem wir im InputScript „VA01_Enter.txt“ „VA01_VSBED_alt“ und „VA01_VSBED_neu“ miteinander vergleichen, können wir feststellen ob der Wert geändert wurde.
Untenstehende Scripte sind ein kleines Beispiel für . Das Beispiel setzt voraus, dass Sie in Ihrem System die GuiXT F4 Wertehilfe installiert haben. (Programm ZGUIXTF4
und Transaktion ZXF4
)
SAPMV45A.D0101.txt
// Beispiel zur Überprüfung, ob der Anwender den Wert des Feldes // Versandbedingung geändert hat. // 02.03.2004 / Gérald Koehn / Koehn Consulting / www.GuiXT.ch // Eingabefeld für Versandbedingung Box (12,0) (15,60) "Versanddaten" Inputfield (13,1) "Versandbedingung" (13,20) Name="VA01_VSBED" Size="2" -Required -Uppercase TechName="VBAK-VSBED" shname1="VTEXT" shdest1=V[VA01_VSBED_T] SearchHelpProcess="Return.txt" Text (13,25) "&V[VA01_VSBED_T]" On "Enter" Process="VA01_Enter.txt" Using VA01_VSBED_alt = &[VA01_VSBED] // alter Wert (vor Änderung durch Anwender) Using VA01_VSBED_neu = [VA01_VSBED] // neuer Wert (nach Änderung durch Anwender)
VA01_Enter.txt
Parameter VA01_VSBED_alt Parameter VA01_VSBED_neu // Nachlesen des Textes der Versandbedingung // Dies soll jedoch nur geschehen, falls die Versandbedingung durch den Anwender geändert wurde if not U[VA01_VSBED_alt=&U[VA01_VSBED_neu]] // wenn unterschiedlich (nicht gleich) // Beispiel für das lesen einer x-beliebigen transparenten Tabelle // und Übertragung in GuiXT Variablen // 10.05.2003 / Gérald Koehn / Koehn Consulting / www.guiXT.ch // Initialisierung der Texte resp. Tabellen copytext toText="M_Fields" fromString="M_Leer" copytext toText="Daten" fromString="M_Leer" copytext toText="Bedingung" fromString="M_Leer" // Setzen der Where Bedingung set V[M_Bedingung] "VSBED = '&V[VA01_VSBED]' and SPRAS = '&V[_language]' ." // Übertragen String in Tabelle Bedingung copytext toText="Bedingung" fromString="M_Bedingung" // Definition der zu lesenden Felder set V[M_Fields_01] "VTEXT" // Abfüllen der Tabelle mit den zu lesenden Feldern copytext toText="M_Fields" fromString="M_Fields_01" // Aufruf RFC- Baustein call "RFC_READ_TABLE" in.QUERY_TABLE="TVSBT" table.OPTIONS=Bedingung table.FIELDS=M_Fields table.DATA=Daten // Übertragen der gelesenen Daten aus Tabelle in Variable copytext fromText="Daten" ToString="M_Daten" // Abfüllen der einzelnen Feldern über Zuweisung von TeilString set V[VA01_VSBED_T] "&V[M_Daten](1-30)" endif Return
Return.txt
Return