[ABAP] Grundaufbau ABAP-Programm / Ereignisse

* globaler Deklarationsteil
TYPES ... " Definitionen
DATA ...  " Datenobjekte
CLASS ... " Klassen

* Implementierungsteil mit Ereignisblöcken
* Ereignis beim Laden eines Programms in die interne Sitzung
LOAD-OF-PROGRAM.
  " häufig für Autorisierungsabfrage genutzt

* Ereignis vor Prozessierung des Selektionsbildes
INITIALIZATION.
  " hier können z.B. dynamische Vorbelegungen vorgenommen werden

* Ereignis vor Anzeige des Selektionsbildschirms
AT SELECTION-SCREEN OUTPUT.
  " Parameter auf reine Anzeige setzen

* Ereignis bei Eingabeprüfung für Einzelfelder
AT SELECTION-SCREEN ON Feldname.

* Ereignis für F1-Hilfe bei einem Feld
AT SELECTION-SCREEN ON HELP-REQUEST FOR Feldname.
 " z.B. bei Druck auf Taste F1 in Eingabefeld

* Ereignis für F4-Hilfe bei einem Feld
AT SELECTION-SCREEN ON VALUE-REQUEST FOR Feldname.
  " z.B. bei Aufruf von File-Open-Dialogen o.ä.		

* Ereignis, wenn Benutzer die Funktionen "Zurück", "Beenden", Abbrechen" wählt
AT SELECTION-SCREEN ON EXIT-COMMAND.
 
* während der Abarbeitung des Selektionsbildschirms
AT SELECTION-SCREEN.
  " hier werden keine WRITE-Ausgaben prozessiert
  " hier zum Beispiel:
  "   AUTHORITY-CHECK ...
  "   MESSAGE ...

* Ereignis während Prozessierung des Selektionsbildes
START-OF-SELECTION.
  " WRITE wird erst am Ende der kompletten Abarbeitung des Ereignisses prozessiert

* Ereignis bei dem der Benutzer einen im Programm definierten Funktionscode auslöst
AT USER-COMMAND.
  " häufig für CASE ...
  " oder LOOP AT SCREEN INTO ...

* Ereignis zu dem der Benutzer den vordefinierten Funktionscode PICK (Mausklick) auslöst
AT LINE-SELECTION.
  " auf KLicks reagieren
  "   WRITE: / 'Verzweigungsliste Nr.: ', sy-lsind.
  "   WRITE: / 'Absolute Nummer der Zeile: ', sy-lilli.
  "   WRITE: / 'Inhalt der Zeile: ', sy-lisel.
  "   WRITE: / 'Row: ', sy-curow.
  "   WRITE: / 'Col: ', sy-cucol.

* Ereignisse während der Listenverarbeitung, wenn eine neue Seite begonnen wird
TOP-OF-PAGE.
  " und
TOP-OF-PAGE DURING LINE-SELECTION.
  " z.B. zur formatierten Ausgabe von Listenüberschriften
  "   WRITE: 'Nr.', 15 'NAME1', 25 'NAME2'.