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 Navigationsschritte und muss sich nicht in komplexen Bildschirmmasken zurechtfinden.
|
GuiXT Maske zur Schnellerfassung einer Störmeldung zum Equipment
|
Vorgehensweise
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:
GuiXTif 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
GuiXT
// iw21_simple_on.txt
Set V[iw21_simple] "X"
Return
GuiXT
// 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:
Die
Längenangabe size=18
der Equipmentnummer erhält man über F1 -> Technische Information
-> Datenelement
Ebenfalls
über F1 -> Technische Informationen den Namen der Suchhilfe:
Bei "EQUI" handelt es sich um eine Sammelsuchhilfe (Transaktion SE11).
Für die Schnellerfassung haben wir statt der Sammelsuchhilfe nur die am besten geeignete "EQUIR"
herausgesucht und searchHelp="EQUIR"
angegeben:
Für die Eingabe der Priorität sowie der Zeiten wird DropDownList genutzt
Die Langtexterfassung geschieht über TextBox
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):
GuiXT
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.
GuiXT
// -----------------------------------------------------
// 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