Ü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

Empfehlen