Zielsetzung SAP Transaktionen sind meist Mehrbildtransaktionen, d.h. die Daten werden in mehreren Masken nacheinander eingegeben. Zunächst  eine Einstiegsmaske, in dem einige Schlüsselfelder einzugeben sind, dann ein oder mehrere oft umfangreiche Masken, in denen der jeweilige Geschäftsvorfall erfasst wird. 
 
Falls der Benutzer pro Bild nur wenige Daten einzugeben hat, empfindet er das als umständlich und langsam, denn er muß 
  • die tatsächlich einzugebenden Felder in jeder Maske suchen 
  • nach Datenfreigabe warten, bis die nächste Maske erscheint 
  • seine Arbeitsweise einer festgelegten Bildfolge und schwankenden Antwortzeiten anpassen 

Mit GuiXT+InputAssistant können Sie eine SAP Mehrbildtransaktion mit relativ geringem Aufwand, ohne Risiko und ohne Systemmodifikation, in eine Einbildtransaktion verwandeln. Der Benutzer bleibt dann in einer einzigen Maske  und kann alle für den Geschäftsvorfall nötigen Daten unmittelbar dort eingeben. 

Intern wird die ursprüngliche Transaktion mit ihren Masken prozessiert. Die Anwendungslogik und alle  Prüfungen bleiben unberührt. 
 

Was müssen Sie tun?
  • Mit GuiXT nehmen Sie weitere Eingabefelder auf dem Einstiegsbild der Transaktion oder in einem Menübild auf.  Sie fügen eine neue Drucktaste ein, durch die das Prozessieren der gesamten Transaktion ausgelöst wird 
  • In einem speziellen "InputScript" legen Sie fest, wie die Eingaben auf den nachfolgenden (nicht angezeigten) Masken und die Navigation innerhalb der Transaktion aussehen. Der InputAssistant prozessiert dann intern diese Masken und mischt die Eingabewerte ein. Auch bei Fehlermeldungen bleibt der Benutzer auf dem von Ihnen gestalteten Bild und kann dort seine Eingaben korrigieren.
 Beispiele
Allgemeines Einbildtransaktionen können entweder auf dem Einstiegsbild einer Transaktion oder in einem Menübild definiert werden. Es kann sich übrigens auch um das Einstiegsbild einer anderen Transaktion handeln. 
Ebenfalls möglich ist, nur den Einstieg in eine komplexe Transaktion(z.B. die ersten beiden Masken) automatisch ablaufen und den Benutzer die restlichen Masken manuell durchführen zu lassen. 
In beschränktem Rahmen sind eigene zusätzliche Verprobungen der Eingabewerte sowie das Setzen weiterer Felder in Abhängigkeit von den Eingabewerten möglich. 
Eingabefelder Unterstützt sind Felder zur Eingabe von Werten, Ankreuzfelder und Auswahlknöpfe: 

InputField (row1,col1)   "Text" (row2,col2) Size="..."  Name="..." Default="..." 
Checkbox (row,col) "Text"    Name="..." Default="..." 
Radiobutton (row,col) "text"     Name="group.name" Default="..." 

Beispiele: 

InputField (10,40) "Bezeichnung"  (10,48) Size="3" Name="Bz"  
Checkbox   (11,40) "Nur Grunddaten"  Name="NurGD"  Default="X"  
Radiobutton (14,20) "Stück"  Name="einheit.st"  Default="X"  
Radiobutton (15,20) "Gramm"  Name="einheit.g"
Radiobutton (16,20) "Kilo"   Name="einheit.kg"
 

  • Durch den Parameter Name="iname..."  erhält das Eingabefeld einen internen Namen.  Der Wert kann durch [iname] angesprochen werden 
  • Bei Checkbox und Radiobutton sind " " und "X" mögliche Werte. 
  • Der Name eines Radiobutton muß aus dem Namen der Gruppe sowie, durch Punkt getrennt, aus dem Namen des Buttons bestehen, also z.B. "einheit.kg". Der Name der Gruppe bestimmt, welche Radiobuttons eine logische Einheit bilden. Wenn ein Button aus der Gruppe aktiviert wird, werden automatisch alle anderen desaktiviert.
  • F1 bei eigenen Feldern ist nicht unterstützt. Man kann jedoch einzeilige Tipps als Quickinfo anzeigen lassen. Empfehlenswert ist eventuell auch das Einblenden eines Hilfesymbols mit Image, und die Anzeige einer .doc oder .html Dokumentation bei Klick auf das Hilfesymbol  (siehe Image).
  • F4 bei eigenen Feldern ist nicht unterstützt. Der InputAssisant zeigt jedoch bei Klick auf rechte Maustaste sowohl die Eingabehistorie als auch, falls vorhanden (Generierung), die lokale Wertehilfe an
  • Vor  SAP Rel. 4.0 ist es nötig, die aktuelle Transaktion durch die Anweisung Transaction im GuiXT Script anzugeben, andernfalls wird im Fehlerfall auf das letzte Menü statt auf das Grundbild der Transaktion verzweigt. Bei Start aus einem Menübild ist die Angabe einer Transaktion nicht erforderlich. Beispiel:

Transaction "FB01"

Pushbutton Pushbutton (row,col) "Text" "fcode" Process="..." 

"Process="..."  verweist auf eine Datei, in der das InputScript abgelegt ist. Die "fcode"-Angabe  kann entfallen, falls  nur "Enter" ausgelöst werden soll. 
Beispiele: 

Pushbutton (10,40) "Material anlegen"      Process="CreateMaterialSimple.txt" 
Pushbutton (toolbar) "Material anlegen" "/nmm01" Process="CreateMaterialSimple.txt" 

  • Durch using ist die Parametrisierung des InputScript möglich. Hierzu werden im Anschluß an die Pushbutton-Anweisung die zu übergebenden Parameter aufgeführt Die Namen der Parameter sind im InputScript definiert. 
  • Beispiel: 
    Pushbutton (toolbar) "Material anlegen" Process="CreateMaterialSimple.txt" 
        
    using Grunddaten      = [nurGD] 
        
    using MEStueck        = [einheit.st] 
        
    using MEKilo          = [einheit.kg]
         using Lagerort        = "0001"
InputScript Ein InputScript ist eine Textdatei mit beliebigem Namen, z.B. C:\GuiXT\Scripts\CreateMaterialSimple.txt. Sie besteht im einfachsten Fall aus der Angabe der prozessierten Masken (Screen-Anweisung), dem Setzen von Werten (Set) und der Navigation innerhalb der Transaktion (Enter). Falls kein Pfadname bei process= spezifiziert ist, wird das InputScript im aktuellen GuiXT Script Verzeichnis gesucht.

Beispiel:

Screen SAPMF05A.0300
 
Set [Betrag]  &[Betrag1]
 
Set [Bschl]   &[Bschl2]
 
Set [Konto]   &[Konto2]
 
Enter

Screen SAPMF05A.0300
 
Set [Betrag]  &[Betrag2]
 
Enter "BU"

Während der InputAssistant die Transaktion intern durchführt, sucht er im InputScript jeweils die nächste passende Screen-Anweisung und führt die entsprechenden Anweisungen aus. Falls er keine passende Screen-Anweisung findet, wird dem Benutzer das aktuelle Bild angezeigt, und er kann manuell weiterarbeiten. Ist für ein Bild kein Enter angegeben, so wird ebenfalls die Verarbeitung des InputScript beendet.

Bei Fehlermeldungen verzweigt der InputAssistant auf das ursprüngliche 
Bild, die Fehlermeldung wird dort eingeblendet und der Benutzer kann alle Werte korrigieren.

Warnungen während des Prozessieren eines InputScript werden ignoriert.

Es ist empfehlenswert, in einem InputScript alle benutzten Variablen (d.h. Werte aus Eingabefeldern) als Parameter zu definieren und aus dem GuiXT-Script heraus durch using zu übergeben. Sie gewinnen dadurch mehr Flexibilität bei der Wiederverwendung des InputScript und erhalten weitere Möglichkeiten zur Abfrage der Parameter und zur Steuerung der Transaktion.

Syntax:

Parameter pname
oder
Parameter pname  "defaultvalue"

z.B.:
Parameter SPR  "D"

Groß/Kleinschreibung spielt bei den Parameternamen keine Rolle. Der Defaultwert wird dann eingesetzt, wenn der Parameter in dem GuiXT Script nicht bewertet wurde.

Abfrage von Parametern. Der durch using übergebene Wert des Parameters bzw. der Defaultwert kann durch

if U[pname=wert]
...
endif

abgefragt werden. Beispiel:

if U[Spr=D] and U[Stdname=X]
 
Set [Bezeichnung] "Wartungsplan"
 
Set [Langtext] " "
endif

Durch

U[pname]

allein (ohne Vergleichswert) kann abgefragt werden, ob der Parameter einen Wert ungleich Space besitzt.

Eine eigene Prüfung der Parameter ist in gewissem Umfang ebenfalls möglich. Durch Return können Sie ein InputScript beenden und auf das Grundbild zurückgehen. Falls Sie nach Return einen Text angeben, wird dieser angezeigt in einem Fenster mit dem Titel "Information". Den Titel können Sie als zweiten Text bei Return setzen. Beispiel:

if not U[buk]
  
Return "Bitte Buchungskreis eingeben"
endif

if U[buk=0001] and not U[waers=DEM]
  
Return "Nur Währung DEM in Buchungskreis 0001 unterstützt"  "Bitte Währung/Buchungskreis korrigieren"
endif

Tipps & Tricks
  • Zum Testen können Sie über Options->Visible Auto Processing alle InputScripts auch sichtbar abspielen
  • Zum Erstellen von InputScripts können Sie den InputScript Recorder über Options->Record InputScript und Edit->Recorded InputScript einsetzen
  • Das Setzen von Radiobuttons oder Checkboxes erfolgt über Zuweisung der Werte "X" oder " "
  • Beim Setzen eines Radiobutton ist es nicht nötig (aber möglich), den übrigen Radiobuttons der gleichen Gruppe den Wert " " zuzuweisen.