Ich musste ein Inputscript entwickeln, dass Belege überarbeitet. Da es sich um sehr viele Belege handelt (ca. 250’000) hätte die Laufzeit von dem Script über 24 Stunden gedauert.

Daher hatte ich die Idee mit GuiXT 5 zusätzliche Modi zu kreieren und in jedem einzelnen Modi die Belege gesondert zu bearbeiten. => Reduktion der Laufzeit entsprechend der Anzahl geöffneter Modi

Das Ganze hat sich als nicht so einfach herausgestellt, so dass ich nun die gefundene Lösung hier kurz aufskkiziere, falls Sie mal was ähnliches benötigen.

Man benötigt dazu mindestens 3 Scripte.

GuiXT-Script von wo aus man das Ganze Startet. (z.B. SAPLSMTR_NAVIGATION.0100.TXT)

Pushbutton (Toolbar) "Start Prozess" process="newmodes.txt"
   using MODES = 6

if V[startnewmodes>0]
  Set V[startnewmodes] "&V[startnewmodes]" - 1
  Enter "/OVK02" process="Belege_bearbeiten.txt" wait=1000
endif

InputScript um die verschiedenen Modi zu starten (newmodes.txt).

Parameter MODES

Set V[startnewmodes] "&U[MODES]"
Return

InputScript mit der eigentlichen Verarbeitung (Belege_verarbeiten.txt, das Script was dann sehr lange dauert).

Screen *
   Returnvalues "OK:/?"
   Enter

Screen *
// Hier würden sie Ihr Code rein schreiben, der die entsprechenden Belege überarbeitet

Enter

Absolut entscheidend sind die folgenden Anfangszeilen in dem InputScript Belege_verarbeiten.txt

Screen *
  Returnvalues "OK:/?"
  Enter

Sie sind dafür verantwortlich, dass auf den ursprünglichen Modus zurückgekehrt wird und man so wieder den nächsten Modus öffnen kann.

Ohne diese Zeile mit Returnvalues „OK:/?“  funktioniert das Ganze nicht!!

Besten Dank an die Synactive GmbH, die mir die entscheidenden Hinweise gegeben hat.

Bei so vielen Belegen wäre natürlich ein überarbeiten der Belege mittels eines Aufrufs eines ABAP-Funktionsbausteins mit der neuen Call Schnittstelle wohl das schnellere Verfahren. Lieder gibt es immer noch Kunden, welche kein RFC User nutzen dürfen und somit diese Möglichkeit ausgeschlossen ist.

Empfehlen