In ME53N wird unter Positionsdetail die jeweilige aktive Position in einer Combox angezeigt. Möchte man nun den Inhalt der Combox in GuiXT zur Verfügung haben, so lässt sich nur der Wert der Position 1,2,3 usw auslesen. Dies interessiert doch wesentlich weniger als der zugehörige Text wie z.B. [ 10] C-1030, Verdrilltes Kabel.
Denn im Text ist die Materialnummer enthalten. Mit den in diesem Beispiel vorhandenen Scripten können sie über GuiXT und GUI Scripting die Materialnummer aus der Combobox extrahieren.
Dazu haben wir folgende Scripte:
saplmegui.0014.txt
set V[check_ME53N] Pattern="Bestellanforderung % anzeigen" if Q[ok] if Q[Page=Kontierung] and not V[pos_ausgelesen=X] and F[%#AUTOTEXT003] Enter Process="DropDownlist_Wert_lesen.txt" endif // Wenn der Wert der DropDownlist gewechselt wird, so soll der Inhalt neu bestimmt werden on "=DDOWN3200" Process="DropDownlist_Wert_lesen.txt" endif
dropdownlist_wert_lesen.txt
// InputScript um aus der ComboBox "Position" den Wert, resp den zugehörigen Text // auszulesen // 08.04.2013 / Gérald Koehn / Koehn Consulting / www.guixt.ch Screen SAPLMEGUI.0014 // Damit das VBS Script mehrfach verwendbar ist, setzen wir den Namen der Combox, // ausserhalb des VBS Scriptes set V[return_filename] "&%[TMP]\Inhalt_Combobox.txt" set V[name_combobox] "wnd[0]/usr/subSUB0:SAPLMEGUI:0020/subSUB3:SAPLMEVIEWS:1100/subSUB2:SAPLMEVIEWS:1200/subSUB1:SAPLMEGUI:1301/subSUB1:SAPLMEGUI:6000/cmbDYN_6000-LIST" ApplyGuiScript template="ComoBoxWert_lesen.vbs" set V[pos_ausgelesen] "X" CopyText fromfile="&%[TMP]\Inhalt_Combobox.txt" toText="inhalt_combobox" Set V[Inhalt_Combobox] "&Text[inhalt_combobox]" // Extrahieren der MaterialNummer aus dem Inhalt der Combobox Set V[Material_Combobox] "&V[Inhalt_Combobox]" Search="]" Enter
ComoBoxWert_lesen.vbs
session.findById("wnd[0]").maximize Dim value value = session.findById("&V[name_combobox]").value ' Schreiben des Wertes der Combobox in ein TextFile, welches wir unter ' dem Temp Verzeichnis des Users ablegen Dim oFS Set oFS = CreateObject("Scripting.FileSystemObject") Dim oTS Set oTS = oFS.CreateTextFile("&V[return_filename]") oTS.writeLine(value) oTS.Close