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.

Terminauftrag

Ü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.

Empfehlen