Bilder mit Reitern werden häufig in komplexen Transaktionen mit vielen verschiedenen Feldern verwendet. Die Reiter stellen eine Möglichkeit dar, gleichartige Felder zu gruppieren. Nicht jede Anwenderin schätzt allerdings diese Gruppierungen, wenn sie zum Beispiel einen einfachen Weg sucht, die relevanten Felder aufzufinden, ohne durch zu viele Reiter hindurch klicken zu müssen.
Mit GuiXT und InputAssistant können Sie R/3 Bildschirme mit Reitern anpassen, hierzu brauchen Sie allerdings ein gewisses Knowhow. Der Hauptgrund, warum diese Arbeit mit Reitern nicht so einfach ist, wie man sich das wünscht, liegt darin, dass R/3 die Reiter nicht nur auf der Bildschirmoberfläche verwendet, als eine bestimmte Art, die Daten darzustellen, sondern R/3 verbindet die Reiterstruktur mit der Anwendungslogik. Aus diesem Grund ist es wichtig, etwas über die Logik der Transaktion zu verstehen, wenn Sie, zum Beispiel, einige Felder von einem Reiter zu einem anderen verschieben wollen. Es besteht die Gefahr, dass Ihre Lösung nur für einen bestimmten Pfad durch die Transaktion funktioniert, mit einem anderen Pfad aber nicht. Wir empfehlen Ihnen daher, keine zu komplexen Änderungen vorzunehmen, die in den InputScripts schwer nachvollziehbar sind. |
Beispiel 1
Wir beginnen mit einem typischen Beispiel. Angenommen, Sie möchten in der Transaktion VA01 “Kundenauftrag anlegen” einige Felder aus dem etwas versteckten Reiter “Bestelldaten” auf den ersten Reiter “Verkauf” verschieben. VA01 Standard, Navigation zu “Bestelldaten“
Sie möchten eine schnellere Dateneingabe erreichen für die Felder
- Name
- Ihr Zeichen
- Bestellart (SCHR=Schriftlich or TELE=Telefonisch)
VA01 Standard, Reiter “Bestelldaten“
Die Lösung, die wir hier vorstellen, sieht folgendermaßen aus: VA01 with GUiXT: “Bestelldaten “ auf dem ersten Reiter “Verkauf”
Sie sehen hier auch, dass wir die Eingabe für die Bestellart als zwei Radiobuttons “schriftlich” und “telefonisch” anstelle einer codierten Eingabe präsentieren. Die hier vorgestellte Lösung hat den Vorteil, dass Sie sowohl die schnelle Dateneingabe mit den neuen Feldern als auch den Standard VA01 Reiter “Bestelldaten” verwenden können. Die Dateneingabe in irgendeines dieser Felder wird automatisch zum anderen transferiert. Es ist keine ganz leichte Aufgabe, dies zu garantieren, selbst nach Fehlermeldungen und Warnungen, und Sie benötigen das GuiXT Element “Link”, um eine relativ übersichtliche Lösung zu erstellen. Hier sind die Skripte, die Sie dafür benötigen. (2 GuiXT Skripte und ein InputScript). Zusätzliche Kommentare finden Sie in den Skripten und weiter unten in diesem Artikel. Bezüglich der Platzierung des neuen Rahmens und der neuen Felder vergleichen Sie das Special Topic Wie man mit skrollbaren Bildschirmbereichen umgeht
SAPMV45A.D4001.TXT
//———————————————————————————– // Beispiel: Kundenauftrag anlegen mit VA01, // 3 Felder von Reiter “Bestelldaten” nach “Verkauf” verschoben //———————————————————————————– // Die Lösung, die hier vorgestellt wird, ermöglicht sowohl die Eingabe // in den neuen als auch in den Standard Feldern // Um alle Felder zu synchronisieren, // selbst nach Eingabewiederholung nach Fehlermeldungen, // wird die “Link” Anweisung anstelle von “Set” verwendet //———————————————————————————– // Erfordert GuiXT version 2001 Q3 07 und höher // Beispiel basiert auf R/3 IDES 4.6C //———————————————————————————–
if Q[Transaction=VA01] and Q[Page=Verkauf]
Set V[BestAuftraggeber] “&[Auftraggeber]“ Set V[BestWarenempfänger] “&[Warenempfänger]“
// Bei neuem Auftrag alle Felder zurücksetzen if not V[BestAuftraggeber] and not V[BestWarenempfänger] Set V[Best*] ” “ endif
// Verwenden eines “Offset” der sich auf ein Feld innerhalb des Reiters bezieht // um den richtigen Anzeigeort zu bestimmen Offset F[AusliefWerk]+(0,46)
Box (0,0) (6,34) “Bestelldaten” InputField (1,1) “Name” (1,12) “Size=20″ “Name=BestName” InputField (2,1) “Ihr Zeichen” (2,12) “Size=12″ “Name=BestZeichen”
Radiobutton (4,1) “schriftlich” “Name=BestArt” “Value=SCHR” Radiobutton (5,1) “telefonisch” “Name=BestArt” “Value=TELE”
// Update: Bestelldaten zuerst eingeben On “/11″ “Fcode=KBES” “Process=Bestellung_Update.txt” On “/Menu=1,6″ “Fcode=KBES” “Process=Bestellung_Update.txt”
// F3 mit Cancel (F12) gleichsetzen, um ein Update des Popup screen zu vermeiden // (das normale F3 könnte wenn nötig auch simuliert werden) On “/3″ “Fcode=/12″ On “/Menu=3,5″
“Fcode=/12″
endif
SAPMV45A.D4002.TXT if Q[Page=Bestelldaten] Link [Ihr Zeichen] V[BestZeichen] Link [Name] V[BestName] Link [Bestellart] V[BestArt] endif
Bestellung_Update.txt // Fehlermeldungen in Standard Screens anzeigen No return on error
// Skip information “Sales area redetermined” Screen sapmsdyp.0010 Enter
Screen sapmv45a.4002 Link [Ihr Zeichen] V[BestZeichen] Link [Name] V[BestName] Link [Bestellart] V[BestArt]
Enter /11
Anmerkungen
- Verwenden Sie mindestens GuiXT 2001 Q3 07, denn die “Link” Anweisung ist in früheren Versionen noch nicht verfügbar
- Wir beschränken das Skript auf Transaktion VA01 und den Reiter “Verkauf”
- Es lohnt sich, nach der richtigen Stelle zu suchen, an der die Variablen zurück gesetzt werden. Der Eingangsbildschirm einer Transaktion ist manchmal gut geeignet, aber nicht immer: In VA01bleibt der Anwender auf dem zweiten Hauptbild, nachdem er den Auftrag fertig gestellt hat. Da R/3 dann die Felder “Auftraggeber” und “Warenempfänger” leert, ist dies eine gute Stelle, auch Ihre Variablen zurück zu setzen. In manchen Fällen kann es auch sinnvoll sein, die Eingabewerte zu behalten.
- Die “Offset” Anweisung ermöglicht es, eine ganze Gruppe von Eingabefeldern ohne Aufwand an eine andere Platzierung zu verschieben. Ein weiterer Vorteil ist, dass die neuen Eingabefelder durch “Offset” mit einem Feld auf dem Reiter verankert sind. Das ist besonders wichtig bei skrollbaren Reitern. >Details
- Ein Update können Sie erreichen durch /11 oder CTRL+S oder durch Klick auf das Update Icon. Diese drei Möglichkeiten basieren auf einem /11 function code. Eine vierte Möglichkeit ist der Klick auf “Sichern” im Menü, was den Befehl ON /Menu=1,6 bedingt.
- Etwas schwierig ist der Umgang mit der Update Option im F3 Popup Menü. Hier haben wir uns für die einfache Variante entschieden und /12 für /3 zugewiesen, was keinen erkennbaren Unterschied für den Anwender macht.
- Die “Link” Anweisung weist den Wert der Variablen den Eingabefeldern zu und updated die Variablen automatisch, sobald der Anwender einen neuen Wert eingibt.
- Die Information “Der Vertriebsbereich …wurde neu ermittelt” wird normalerweise angezeigt, wenn der Anwender zum ersten Mal Enter drückt. Wenn er den Update Button drückt, gleich nachdem er die Daten eingegeben hat, dann wird diese Information übersprungen.
Beispiel 2 Wir erweitern Beispiel 1, so dass es auch für Transaktion VA02 (Kundenauftrag ändern) und Transaktion VA03 (Kundenauftrag anzeigen) gilt. Die Technik ist ähnlich wie in Beispiel 1. Zusätzlich navigieren wir zuerst zu dem Bildschirm “Kundenauftrag Daten” mit der Anweisung Enter “=KBES” “Process=Bestellung_zusaetzliche_Felder.txt” um die Variablen V[BestZeichen], V[BestName], V[BestArt] mit Werten zu belegen. SAPMV45A.D0102.TXT // Eingangsbildschirm VA02/VA03 // Variablen zurücksetzen Set V[Best*] ” “
SAPMV45A.D4001.TXT //———————————————————————————– // Beispiel: Kundenauftrag anlegen mit VA01, 3 Felder von Reiter “Bestelldaten” nach “Verkauf” verschoben //———————————————————————————– // Die Lösung, die hier vorgestellt wird, ermöglicht sowohl die Eingabe // in den neuen als auch in den Standard Feldern // Um alle Felder zu synchronisieren, // selbst nach Eingabewiederholung, nach Fehlermeldungen, // wird die “Link” Anweisung anstelle von “Set” verwendet //———————————————————————————– // Erfordert GuiXT version 2001 Q3 07 und höher // Beispiel basiert auf R/3 IDES 4.6C //———————————————————————————– if Q[Transaction=VA01] and Q[Page=Verkauf]
Set V[BestAuftraggeber] “&[Auftraggeber]“ Set V[BestWarenempfänger] “&[Warenempfänger]“
// Bei neuem Auftrag alle Felder zurücksetzen if not V[BestAuftraggeber] and not V[BestWarenempfänger] Set V[Best*] ” “ endif
// Verwenden eines “Offset” der sich auf ein Feld innerhalb des Reiters bezieht // um den richtigen Anzeigeort zu bestimmen Offset F[AusliefWerk]+(0,46)
Box (0,0) (6,34) “Bestelldaten” InputField (1,1) “Name” (1,12) “Size=20″ “Name=BestName” InputField (2,1) “Ihr Zeichen” (2,12) “Size=12″ “Name=BestZeichen”
Radiobutton (4,1) “schriftlich” “Name=BestArt” “Value=SCHR” Radiobutton (5,1) “telefonisch” “Name=BestArt” “Value=TELE”
// Update: Bestelldaten zuerst eingeben On “/11″ “Fcode=KBES” “Process=Bestellung_Update.txt” On “/Menu=1,6″ “Fcode=KBES” “Process=Bestellung_Update.txt”
// F3 mit Cancel (F12) gleichsetzen, um ein update des popup screen zu vermeiden // (das normale F3 könnte wenn nötig auch simuliert werden) On “/3″ “Fcode=/12″ On “/Menu=3,5″ “Fcode=/12″
endif
if Q[Transaction=VA02] and Q[Page=Verkauf]
// Zusätzliche Felder lesen if not V[Best_additional_fields_done=X] Set V[Best_additional_fields_done] “X” Enter “KBES” “Process=Bestellung_zusaetzliche_Felder.txt” endif
// Verwenden eines “Offset” der sich auf ein Feld innerhalb des Reiters bezieht // um den richtigen Anzeigeort zu bestimmen Offset F[AusliefWerk]+(0,46)
Box (0,0) (6,34) “Bestelldaten” InputField (1,1) “Name” (1,12) “Size=20″ “Name=BestName” InputField (2,1) “Ihr Zeichen” (2,12) “Size=12″ “Name=BestZeichen”
Radiobutton (4,1) “schriftlich” “Name=BestArt” “Value=SCHR” Radiobutton (5,1) “telefonisch” “Name=BestArt” “Value=TELE”
// Update: Bestelldaten zuerst eingeben On “/11″ “Fcode=KBES” “Process=Order_Update.txt” On “/Menu=1,6″ “Fcode=KBES” “Process=Order_Update.txt”
// F3 mit Cancel (F12) gleichsetzen, um ein update des popup screen zu vermeiden // (das normale F3 könnte wenn nötig auch simuliert werden) On “/3″ “Fcode=/12″ On “/Menu=3,5″ “Fcode=/12″
endif
if Q[Transaction=VA03] and Q[Page=Verkauf]
// Zusätzliche Felder lesen if not V[Best_ZusaetzlicheDatenGeholt=X] Set V[Best_ZusaetzlicheDatenGeholt] “X” Enter “KBES” “Process=Bestellung_zusaetzliche_Felder.txt” endif
// Verwenden eines “Offset” der sich auf ein Feld innerhalb des Reiters bezieht // um den richtigen Anzeigeort zu bestimmen Offset F[AusliefWerk]+(0,46)
Box (0,0) (6,34) “Bestelldaten” Text (1,1) “Name” Text (1,12) “&[BestName]” “-Border” “Size=20″ Text (2,1) “Ihr Zeichen” Text (2,12) “&[BestZeichen]” “-Border” “Size=12″
if V[BestArt=SCHR] Text (4,1) “Bestellung per Brief/Fax” endif if V[BestArt=TELE] Text (5,1) “Bestellung per Telefon” endif
endif
Bestellung_zusaetzliche_Felder.txt Screen sapmv45a.4002 Set V[BestZeichen] “&F[Ihr Zeichen]“ Set V[BestName] “&F[Name]“ Set V[BestArt] “&F[Bestellart]“
// Zurück zur Übersicht Enter “/3 “
|