Ansicht
Dokumentation
ABENDIAL_MOD_EVENT_BLOCK_GUIDL - DIAL MOD EVENT BLOCK GUIDL
ROGBILLS - Synchronize billing plans SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3upDiese Dokumentation steht unter dem Copyright der SAP AG.
Dialogmodule und Ereignisblöcke
Neben Prozeduren gibt es zwei weitere Arten von Verarbeitungsblöcken, die jedoch über keine Parameterschnittstelle verfügen und keine Deklaration lokaler Daten erlauben (Ausnahmen sind hier AT SELECTION-SCREEN und GET, was aber nicht ausgenutzt werden sollte.):
- Dialogmodule
- Sie werden durch die Anweisung MODULE eingeleitet und mit der Anweisung ENDMODULE abgeschlossen. Sie stellen die funktionale Schnittstelle zwischen klassischen Dynpros und deren ABAP-Programm dar und werden aus der Dynpro-Ablauflogik heraus aufgerufen.
- Ereignisblöcke
- Sie werden durch ein zugehöriges Schlüsselwort eingeleitet und implizit durch den nächsten Verarbeitungsblock abgeschlossen. Die Verarbeitung eines solchen Ereignisblocks wird durch das ABAP-Laufzeit-Framework beim Eintreten des zugehörigen Ereignisses angestoßen. Ereignisblöcke gibt es für:
- das Laden eines Programms (LOAD-OF-PROGRAM)
- Reporting-Ereignisse, die während der Verarbeitung eines ausführbaren Programms (mit logischer Datenbank) auftreten (INITIALIZATION, START-OF-SELECTION, GET, END-OF-SELECTION)
- Selektionsbildereignisse (AT SELECTION-SCREEN ...)
- Listenereignisse der klassischen Listenverarbeitung (AT LINE-SELECTION, AT USER-COMMAND)
Keine Implementierungen in Dialogmodulen und Ereignisblöcken
Verwenden Sie Dialogmodule und Ereignisblöcke nur noch in Fällen, in denen sie technisch notwendig sind. Dann soll die benötigte Funktionalität nicht dort implementiert werden, sondern es sind geeignete (lokale) Methoden aufzurufen.
Aufgrund der fehlenden Möglichkeit zur Deklaration lokaler Daten kann in Dialogmodulen und Ereignisblöcken keine sinnvolle Programmlogik implementiert werden. Daher sollen Dialogmodule und Ereignisblöcke, soweit ihre Verwendung noch erforderlich ist, nur noch einen Methodenaufruf enthalten. Bei einer durchgehenden Verwendung von ABAP Objects sind heutzutage noch erforderlich:
- LOAD-OF-PROGRAM oder INITIALIZATION als Programmkonstruktor in den Fällen, in denen andere Programmtypen als Class-Pools verwendet werden
- Dialogmodule und AT SELECTION-SCREEN bei der Verarbeitung klassischer Dynpros und Selektionsbilder
- START-OF-SELECTION in ausführbaren Programmen zur Hintergrundverarbeitung. Dabei soll die Anweisung, obwohl in vielen Situationen optional, aus Gründen der Lesbarkeit immer explizit angegeben werden.
- Auch wenn syntaktisch möglich, sollte ein Ereignisblock innerhalb eines Programms niemals mehrfach angegeben werden.
Hinweis
Die Verwendung von LOAD-OF-PROGRAM in einer Funktionsgruppe kann als Analogon zur Verwendung eines statischen Konstruktors in einer globalen Klasse gesehen werden. In ausführbaren Programmen kann stattdessen INITIALIZATION verwendet werden, wenn dort die eventuell bei SUBMIT übergebenen Parameter ausgewertet werden sollen.
Beispiel
Folgender Quelltext zeigt die PAI-Module der Funktionsgruppe DEMO_CR_CAR_RENTAL_SCREENS aus dem Paket SABAP_DEMOS_CAR_RENTAL_DYNPRO, deren Bildschirmbilder über Transaktion DEMO_CR_CAR_RENTAL aufgerufen werden können. Diese Dialogmodule folgen obiger Regel. Sie enthalten keine eigene Implementierung, sondern rufen Methoden einer lokalen Klasse der Funktionsgruppe auf.
MODULE cancel INPUT.
screen_handler=>cancel( ).
ENDMODULE.
MODULE user_command_0100 INPUT.
screen_handler=>user_command_0100( ).
ENDMODULE.
MODULE customers_mark INPUT.
customer_table=>mark( ).
ENDMODULE.
MODULE reservations_mark INPUT.
reservation_table=>mark( ).
ENDMODULE.
SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up BAL Application Log Documentation
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 5088 Date: 20240523 Time: 171619 sap01-206 ( 81 ms )