GuiXT bietet die Möglichkeit, sich aus einer SAP Meldung die ausgegebene Belegnummer abzugreifen.
set V[VA_Belegnummer] "&V[_message]" Search="Terminauftrag"
Gerade bei mehrsprachigen Systemen und in Fällen, wo der Text der Meldung variert, da wäre es praktisch, wenn man unabhängig von der Sprache und der Belegart die Nummer extrahieren könnte. Wie in unserem Beispiel mal Terminauftrag im anderen Fall Sofortauftrag.
Über das untenstehende generische Script können sie dies elegant tun. Das Script Extrakt_Belegnummern.txt einfach als Include in Ihre Scripte einbauen. So erhalten Sie max. 3 gefüllte Variablen V[nummer1], V[nummer2] und V[nummer3] zurück.
Extrakt_Belegnummern.txt
// Generisches Script zum ausfiltern von Belegnummern aus dem Meldungstext // 22.07.2013 / Gérald Koehn / Koehn Consulting / www.guixt.ch set V[nummer*] "" set Text[num] "0123456789" set V[anz_char] "&V[_message]" -charcount set V[i] 1 // Zähler der CHAR set V[n] 1 // Zähler der Nummern Label Num_Extrakt if V[i<V[anz_char]] or V[i=&V[anz_char]] set V[einzel_char] "&V[_message](&[i],&[i])" // Check, ob Char blank if V[einzel_char] // Wenn der Replace in num erfolgreich ist, so haben wir eine Zahl gefunden Replacetext "num" from="&V[einzel_char]" to="&V[einzel_char]" if Q[ok] // Nummer konnte ersetzt werden, dadurch handelt es sich um eine Zahl set V[nummer&[n]] "&V[nummer&[n]]&V[einzel_char]" endif else // Leerzeichen // daher erhöhen wir hier den Nummernzähler n um 1 // dies jedoch nur, wenn die vorhergehende nummer gefüllt war if V[nummer&[n]] set V[n] &[n] + 1 endif endif set V[i] &[i] + 1 goto Num_Extrakt endif
Ab der GuiXT Version 2013 Q3 3 stehen neue Systemvariablen zur Verfügung, die es erlauben die Werte aus einer Meldung direkt auszulesen.
&V[_msgv1], &V[_msgv2], &V[_msgv3], &V[_msgv4]. Hat man diese neuere GuiXT Version, so wird natürlich obiges Beispiel obsolet und man die Werte direkt aus den Systemvariablen entnehmen.