Anfang des Inhaltsbereichs

Unbedingter Modulaufruf Dokument im Navigationsbaum lokalisieren

Der einfache Aufruf von PAI-Modulen erfolgt zum Zeitpunkt PAI nach den automatischen Eingabeüberprüfungen des Dynpros und in der Reihenfolge, die in der Dynproablauflogik angegeben ist. Dies hat zur Folge, daß erst alle Eingaben von der automatischen Überprüfung als fehlerfrei erkannt sein müssen, bevor ein Modul aufgerufen werden kann. Insbesondere müssen alle obligatorischen Felder ausgefüllt werden und sämtliche Überprüfungen gegen Wertelisten und Prüftabellen bei Feldern mit Bezug zum ABAP-Dictionary müssen erfolgreich sein.

Dadurch kann es sein, daß ein Benutzer erst umfangreiche Eingaben vornehmen muß, um einen Bildschirm verlassen zu können. Um dies zu verhindern, können spezielle Funktionscodes mit einem speziellen Modulaufruf kombiniert werden. Das entsprechende Modul wird unabhängig von den Benutzereingaben aufgerufen.

Funktionscodes vom Typ E

Die Funktionscodes von Dynpro und GUI-Status können mit einem Funktionstyp E versehen werden. Bei Bildschirmelementen des Dynpro muß hierfür das Attribut Funktionstyp im Screen Painter auf E gesetzt werden. Bei Funktionen des GUI-Status wählt man im Menu Painter Springen ® Objektlisten ® Funktionsliste, wählt die gewünschten Funktionscodes aus und gibt E für den Funktionstyp an.

Wählt der Benutzer ein Bildschirmelement oder ein Oberflächenelement mit Funktionscode vom Typ E, wird die automatische Eingabeüberprüfung umgangen und in der Dynproablauflogik direkt ein spezieller Modulaufruf ausgeführt. Ist der spezielle Modulaufruf nicht vorhanden, wird die normale PAI-Verarbeitung durchgeführt, d.h. die automatische Eingabeüberprüfung findet statt.

In der Regel soll das Dynpro bei Auswahl eines Funktionscodes vom Typ E verlassen werden. Deshalb werden normalerweise die Funktionscodes, die in der Symbolleiste des GUI-Status den Symbolen Diese Grafik wird im zugehörigen Text erklärt (F3), Diese Grafik wird im zugehörigen Text erklärt (Shift+F3) und Diese Grafik wird im zugehörigen Text erklärt (F12) zugeordnet sind, mit dem Typ E versehen.

Modulaufruf für Funktionscodes vom Typ E

Benutzeraktionen mit Funktionscodes vom Typ E verzweigen in der Dynproablauflogik direkt zu folgender Anweisung:

MODULE <mod> AT EXIT-COMMAND.

Bei einem Funktionscode vom Typ E wird diese Anweisung unabhängig von ihrer Position in der Dynproablauflogik ausgeführt bevor die automatischen Eingabeüberprüfungen des Dynpros stattfinden. Vor der Ausführung des Moduls <mod> wird nur das OK-Feld zum gleichnamigen ABAP-Feld transportiert, aber keine weiteren Dynprofelder. Wenn mehrere MODULE-Anweisungen den Zusatz AT EXIT COMMAND haben, wird nur die erste ausgeführt. Wenn keine MODULE-Anweisungen den Zusatz AT EXIT COMMAND hat, wird die normale PAI-Verarbeitung ausgeführt.

Bei einem normalen Funktionscode, der nicht den Typ E hat, wird die Anweisung nicht ausgeführt.

Module für Funktionscodes vom Typ E

In der Regel wird mit der Anweisung MODULE... AT EXIT-COMMAND ein Modul aufgerufen, um das aktuelle Dynpro vor der automatischen Eingabeüberprüfung zu verlassen. Das Modul sollte also eine entsprechende Variante der LEAVE-Anweisung enthalten, um das gesamte Programm, eine Aufrufkette oder nur das aktuelle Dynpro zu verlassen. Falls das Modul das Dynpro nicht verläßt, beginnt nach seiner Verarbeitung die normale PAI-Verarbeitung. D.h. die automatischen Feldprüfungen werden durchgeführt und dann die normalen PAI-Module aufgerufen, wobei der Datentransport in der durch die FIELDS-Anweisungen festgelegten Reihenfolge erfolgt.

Beispiel

Unbedingter Modulaufruf.

PROGRAM demo_dynpro_at_exit_command.

DATA: ok_code TYPE sy-ucomm,
      save_ok LIKE ok_code,
      input1(20) TYPE c, input2(20) TYPE c.

CALL SCREEN 100.

MODULE init_screen_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.
ENDMODULE.

MODULE cancel INPUT.
  MESSAGE i888(sabapdocu) WITH text-001 ok_code input1 input2.
  IF ok_code = 'CANCEL'.
    CLEAR ok_code.
    LEAVE PROGRAM.
  ENDIF.
ENDMODULE.

MODULE back INPUT.
  MESSAGE i888(sabapdocu) WITH text-002 ok_code input1 input2.
  IF ok_code = 'BACK' OR ok_code = 'EXIT'.
    CLEAR: ok_code, input1, input2.
    LEAVE TO SCREEN 100.
  ENDIF.
ENDMODULE.

MODULE execute1 INPUT.
  MESSAGE i888(sabapdocu) WITH text-003 ok_code input1 input2.
  save_ok = ok_code.
  CLEAR ok_code.
ENDMODULE.

MODULE execute2 INPUT.
  MESSAGE i888(sabapdocu) WITH text-004 ok_code input1 input2.
  IF save_ok = 'EXECUTE'.
    MESSAGE s888(sabapdocu) WITH text-005.
  ENDIF.
ENDMODULE.

Die statische Folgedynpronummer von Dynpro 100 ist 100 und sein Layout ist wie folgt:

Diese Grafik wird im zugehörigen Text erklärt

Den Eingabefeldern sind die Dynprofelder INPUT1 und INPUT2 zugeordnet. Die Eingabefelder sind in ihren Attributen als Mußfelder gekennzeichnet. Die Funktionscodes der Drucktasten sind EXECUTE und CANCEL, wobei CANCEL den Funktionstyp E hat.

Im GUI-Status STATUS_100 sind die Symbole Diese Grafik wird im zugehörigen Text erklärt (F3) und Diese Grafik wird im zugehörigen Text erklärt (F12) durch die Funktionscodes BACK und CANCEL aktiviert. Beide haben den Funktionstyp E. Weiterhin ist der Funktionstaste F8 der Funktionscode EXECUTE zugeordnet. EXECUTE hat nicht den Funktionstyp E.

Die Bildschirmablauflogik ist:

PROCESS BEFORE OUTPUT.
  MODULE init_screen_0100.

PROCESS AFTER INPUT.
  MODULE execute1.
  MODULE cancel AT EXIT-COMMAND.
  MODULE back AT EXIT-COMMAND.
  MODULE execute2.

Das Programm demonstriert durch Informations- und Statusnachrichten, welche Module nach Benutzeraktionen aufgerufen und welche Daten transportiert werden.

Das Modul BACK wird nie aufgerufen. Zwei Modulaufrufe mit AT EXIT-COMMAND machen in der Dynproablauflogik keinen Sinn. In obigem Beispiel sollte also der Funktionscode BACK auch im Modul CANCEL behandelt werden. Dann ist die Position der Modulanweisung mit AT EXIT-COMMAND irrelevant.

 

 

Ende des Inhaltsbereichs