Mit GuiXT können Sie dem Benutzer auf einer einzigen Bildschirmmaske alle für einen bestimmten Ablauf relevanten Felder und Funktionen anbieten und damit ein effizientes Arbeiten ermöglichen: er benötigt keine weiteren Navigationsschrite und muss sich nicht in komplexen Bildschirmmasken zurechtfinden.


Als Beispiel implementieren wir das vereinfachte Anlegen einer Störmeldung in der Instandhaltung (Transaktion IW21): 

GuiXT Maske zur Schnellerfassung einer Störmeldung zum Equipment

Vorgehensweise

  1. Festlegen, wo die Schnellerfassung angeboten werden soll, z.B. im Einstiegsbild der entsprechenden Transaktion.
    Da man mit der vereinfachten Version eines Ablaufs nicht immer auskommt, empfiehlt sich eine Option, zwischen "einfach+schnell" und "Standard" hin- und herschalten zu können.

  2. Alle benötigten Eingaben bei Bedienen der SAP Transaktion zusammenstellen und daraus mit GuiXT Mitteln eine eigene Eingabemaske implementieren.

  3. Die Funktion "Enter" bzw. "Prüfen" implementieren. Hierbei müssen unter Umständen Datenbankzugriffe durchgeführt werden, um Eingaben zu prüfen oder Texte dazuzulesen.

  4. Die Funktion "Sichern" implementieren. Entweder als InputScript oder durch Aufruf eines BAPI (siehe nachfolgendes Tutorial). Da "Sichern" auch die Prüfungen einschliessen soll,  verwenden Sie am besten ein Include oder ein gemeisames InputScript, das mit einem Parameter für "Prüfen" oder "Sichern" aufgerufen wird.

 

Teil 1
Wir bieten die Schnellerfassung im EInstiegsbild der Transaktion IW21 als Drucktaste an:

Aus der Schnellerfassung kann der Benutzer wieder zum SAP Standard zurückschalten: 

GuiXT Script:

if Q[Transaction=IW21]
 
if V[iw21_simple]

    // Button zum Umschalten auf Standard
     Pushbutton (toolbar) "Zu SAP Standardmeldung" process="iw21_simple_off.txt"

    // Normalen Button (Meldung) entfernen
    del P[Meldung]

     // bestehende Eingabefelder entfernen
   del (0,0) (10,100)

    // hier dann die Schnellerfassung
   
Title "Schnellerfassung Störmeldung"

  else

    Pushbutton (toolbar) "Schnellerfassung Störmeldung" process="iw21_simple_on.txt"

  endif
endif

mit

// iw21_simple_on.txt
Set
V[iw21_simple] "X"
Return

// iw21_simple_off.txt
Set
V[iw21_simple] ""
Return

 

Teil 2 (UI der Schnellerfassung)

Wir implementieren die benötigten Eingabefelder mit GuiXT:

// Gruppenrahmen um alles
Box
(1,3)
(18,100)

// Equipment
InputField (2,6) "Equipment" (2,32) size=18 _
  
name="iw21_equnr" -required searchHelp="EQUIR"

// Kurztext
InputField (4,6) "Beschreibung der Störung" (4,32) size=40 _
 
name="iw21_qmtxt" -required

// Langtext
TextBox (5,5.6) (10.5,75.6) name="iw21_longtext"

// Störbeginn

// Default Tagesdatum und Uhrzeit setzen
if not V[iw21_ausvn]
  Set V[iw21_ausvn] "&V[today_user]"
  Set V[iw21_auztv] "&V[today_h:00]"
endif

InputField (12,6) "Störbeginn Datum" (12,24) -date _
  
name="iw21_ausvn"

// Störbeginn Uhrzeit

// build up time dropdown 00:00;00:15; ...
if not text[iw21_time_dropdown]
  include "build_iw21_time_dropdown.txt"
ndif

Text (12,36) "Uhrzeit" -label size=10
DropDownList (12,46) "iw21_time_dropdown" width=10 refer="V[iw21_auztv]"

// Priorität

// Default Priorität 2=Hoch
if not V[iw21_priok]
  Set V[iw21_priok] "2"
endif

Set text[iw21_priority_dropdown] "1=Sehr hoch;2=Hoch;3=Mittel;4=Niedrig"

Text (14,6) "Priorität" -label size=18
DropDownList (14,24) "iw21_priority_dropdown" width=20 refer="V[iw21_priok]" -noSort

Erläuterungen:

 

 

Teil 3 (Funktion "Prüfen")

Bei "Enter" sowie der Drucktaste "Prüfen" werden zunächst einige Plausibilitätsprüfungen durchgeführt, zum Beispiel ob ein Kurztext angegeben wurde. Die weiteren Prüfungen erfolgen, indem die IW21 probeweise mit den eingegebenen Werten durchlaufen wird, aber statt die Eingaben zu sichern wieder auf die Schnellerfassung zurückgekehrt wird. Da bei "Sichern" zunächst das gleiche abläuft, verwenden wir für "Prüfen" und "Sichern" das gleiche InputScript und steuern über einen Parameter, welcher Fall vorliegt (InputScript dazu in Teil 4):

 

On Enter process="iw21_simple_save.txt
 
using MODE = "C"

Pushbutton (16,6) "Prüfen" size=(2,18) process="iw21_simple_save.txt"
  using MODE = "C"

Pushbutton (16,31) "Sichern" size=(2,18) process="iw21_simple_save.txt"
  using MODE = "S"

 

Teil 4 (Funktion "Sichern")

Bei "Sichern" wird das gleiche InputScript wie bei "Prüfen" aufgerufen und am Ende in IW21 mit /11 gesichert. Danach werden die Eingabedaten zurückgesetzt.

 

// -----------------------------------------------------
// IW21 Schnellerfassung (Prüfen/Sichern)
// Datei "iw21_simple_save.txt"
// -----------------------------------------------------

Parameter MODE // C=Check S=Save

// Plausibilitätsprüfungen

// Equipment angegeben?
if not V[iw21_equnr]
  SetCursor V[iw21_equnr]
  Return "E: Bitte Equipment eingeben" -statusline
endif

// Kurztext angegeben?
if not V[iw21_qmtxt]
  SetCursor V[iw21_qmtxt]
  Return "E: Bitte Kurztext eingeben" -statusline
endif

// Datum angegeben?
if not V[iw21_ausvn]
  SetCursor V[iw21_ausvn]
  Return "E: Bitte Datum prüfen" -statusline
endif

// Datumsformat korrekt?
CheckDate "&V[iw21_ausvn]"
if not Q[ok]
  SetCursor V[iw21_ausvn]
  Return "E: Bitte Datum prüfen" -statusline
endif

// -------------------------
// Meldung anlegen über IW21
// -------------------------

Set F[Meldungsart] "M2"
Enter

Screen SAPLIQS0.7200
 
Set F[Equipment] "&V[iw21_equnr]"
  Set F[Beschreibung] "&V[iw21_qmtxt]"
  Set F[StörBeginn] "&V[iw21_ausvn]"
  Set F[VIQMEL-AUZTV] "&V[iw21_auztv]"

  CopyText fromText="iw21_longtext" toScreen=X[TEXT]

 
Enter onError=continue

  // Fehler aufgetreten
  Message "&V[_lasterror]" -statusline
   Enter "/niw21"
 

  // InputScript beenden
  Leave

Screen SAPLIQS0.7200

 
// Bezeichnung Equipment setzen
  Set V[iw21_eqktx] "&F[RIWO1-EQTXT]"

  // Nur Prüfen? dann jetzt zurück
  if U[MODE=C]
       Message "S: Eingabedaten geprüft" -statusline
      Enter "/niw21"

 
  // InputScript beenden
    Leave
 
endif

  Enter "=10\TAB02" // Termine+Priorität

// Priorität setzen
Screen SAPLIQS0.7200
 
Set F[Priorität] "&V[iw21_priok]"
  Enter

// Änderung Priorität -> Popup "Termine neu bestimmen?"
Screen SAPLSPO1.0500
  Enter
"=OPT1"
// Ja

Screen SAPLIQS0.7200
 
 
// Sichern
  Enter /11 onError=continue

  // Fehler aufgetreten
  Message "&V[_lasterror]" -statusline
  Enter "/niw21"

  // InputScript beenden
  Leave

// jetzt sind wir zurück auf IW21 Start
Screen SAPLIQS0.0100

 // Erfolgsmeldung senden
  Message "S: &V[_message]" -statusline

 // Eingabedaten zurücksetzen
 Clear V[iw21_*]
  Clear text[iw21_longtext]

// Auf Schnellerfassung bleiben
Set V[iw21_simple] "X"

// Transaktion neu aufrufen
Enter "/niw21"

 

Der Vollständigkeit halber hier noch das include-Script zum Aufbau der Zetauswahl:

// Langtext mit Zeiten (pro Viertelstunde) für dropdown aufbauen
Clear text[iw21_time_dropdown]

Set V[k] 0

label next_hour

Set V[hh] &V[k] + 100
Set V[hh] "&V[hh](2-3)"
Set V[time] "&V[hh]:00"
copytext fromString="time" toText="iw21_time_dropdown" -appendLine

Set
V[time]
"&V[hh]:15"
copytext fromString="time" toText="iw21_time_dropdown" -appendLine

Set V[time] "&V[hh]:30"
copytext fromString="time" toText="iw21_time_dropdown" -appendLine

Set V[time] "&V[hh]:45"
copytext fromString="time" toText="iw21_time_dropdown" -appendLine

Set V[k] &V[k] + 1

if V[k<24]
  goto next_hour
endif