Ansicht
Dokumentation

ABENDIAL_MOD_EVENT_BLOCK_GUIDL - DIAL MOD EVENT BLOCK GUIDL

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 R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

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
  • 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 )