Show TOC Anfang des Inhaltsbereichs

Funktionscodes auswerten  Dokument im Navigationsbaum lokalisieren

Beim jedem Ereignis PAI, das ein Benutzer durch Auswahl einer Drucktaste, eines Ankreuzfelds oder Auswahlknopfs auf dem Dynpro oder eines Oberflächenelements eines GUI-Status, auslöst, wird der zugehörige Funktionscode in das Systemfeld syst-ucomm bzw. sy-ucomm gestellt und dem OK-Feld zugewiesen, falls er nicht leer ist. Ein leerer Funktionscode wird weder in das Feld sy-ucomm gestellt noch dem OK-Feld zugewiesen.

Diese Grafik wird im zugehörigen Text erklärt

Es empfiehlt sich im ABAP-Programm statt mit dem Systemfeld sy-ucomm, mit dem OK-Feld zu arbeiten. Zum einen hat ein ABAP-Programm die vollständige Kontrolle über die in ihm deklarierten Felder, zum anderen sollte ein Systemfeld nie in einem ABAP-Programm geändert werden. Es ist aber aus folgendem Grund empfehlenswert das OK-Feld zu initialisieren:

Genauso wie das OK-Feld des ABAP-Programms und das Systemfeld sy-ucomm zum Zeitpunkt PAI den Inhalt der entsprechenden Dynprofelder zugewiesen bekommen, wird ihr Inhalt zum Zeitpunkt PBO dem gleichnamigen OK-Feld und dem Systemfeld syst-ucomm des folgenden Dynpros zugewiesen. Um zu verhindern, dass der Funktionscode eines Dynpros zum Zeitpunkt PBO mit einem ungewollten Wert vorbelegt wird, muss das OK-Feld des ABAP-Programms also leer sein. Dies ist insbesondere dann wichtig, wenn das nächste PAI-Ereignis, z.B. durch die ENTER-Taste, mit einem leeren Funktionscode ausgelöst wird. Ein leerer Funktionscode hat keinen Einfluss auf die Felder und es wird der alte Inhalt transportiert.

In der Anwendungslogik sollte als eine der ersten Aktionen nach dem Ereignis PAI der Funktionscode in einer Hilfsvariablen gespeichert und das OK-Feld sofort zu initialisiert werden. Danach kann dann der Inhalt der Hilfsvariablen, z.B. durch eine CASE-Kontrollstruktur ausgewertet und der Programmverlauf entsprechend verzweigt werden.

Das OK-Feld jedes Dynpros kann einen anderen Namen haben. Gängige Praxis ist es aber, in jedem Dynpro eines ABAP-Programms den gleichen Namen für das OK-Feld zu wählen. Dann genügt auch ein einziges gleichnamiges Feld im ABAP-Programm, um den jeweiligen Funktionscode zu übernehmen und auszuwerten.

Beispiel

Globale Datendeklaration:

DATA: ok_code LIKE sy-ucomm,
      save_ok LIKE sy-ucomm.

Im ABAP-Programm muss ein zum OK-Feld des Dynpros gleichnamiges Feld deklariert werden. Für die Typisierung empfiehlt sich ein Bezug auf sy-ucomm, da dessen Typ immer mit dem Typ des OK-Felds im Dynpro übereinstimmt. Gleichzeitig sollte eine Hilfsvariable vom gleichen Typ deklariert werden.

PAI-Modul:

MODULE user_command_100 INPUT.

  save_ok = ok_code.
  CLEAR ok_code.

  CASE save_ok.
    
WHEN...
   ...
  ENDCASE.

ENDMODULE.

Im ersten PAI-Modul, welches das OK-Feld verwendet, sollte dieses der Hilfsvariablen zugewiesen und dann initialisiert werden. Danach wird mit der Hilfsvariablen weitergearbeitet.

 

 

Ende des Inhaltsbereichs