!--a11y-->

ユーザが Dynpro 上の押ボタンを選択するか、またはGUI ステータスのエレメントを選択してトリガする各 PAI イベントでは、対応する機能コードがシステム項目 SYST-UCOMM または SY-UCOMM に取り込まれ、OK_CODE 項目に割り当てられます ( その機能コードが空白のときを除く) 。空白の機能コードは SY-UCOMM 項目にも OK_CODE 項目にも取り込まれません。
ABAP プログラムでは、SY-UCOMM ではなく OK_CODE 項目に対して処理を行うようにします。これには 2 つの理由があります。1 つは、ABAP プログラム内で宣言された項目はそのプログラムによって完全制御されること、もう 1 つは、ABAP システム項目の値は変更できないことによります。このほかに、以下の理由から、ABAP プログラム内の OK_CODE 項目は必ず初期化するようにしてください。PAI イベントでシステム項目 SY-UCOMM と ABAP プログラムの OK_CODE 項目が対応する Dynpro 項目の内容を受け取るのと同様に、PBO イベントではこれらの項目の内容が Dynpro の OK_CODE 項目とシステム項目 SYST-UCOMM に割り当てられます。そのため、ABAP プログラムの OK_CODE 項目をクリアして、PBO イベントで Dynpro の機能コードに不適切な値が残っていないようにする必要があります。これは、次の PAI イベントが空白の機能コードによってトリがされる (Enter キーの使用などにより) 場合があるときに、特に重要です。空白の機能コードは SY-UCOMM 項目にも OK_CODE 項目にも影響を及ぼさないため、以前の項目内容が移送されてします。
アプリケーションプログラムでは、補助変数への機能コードの保存とそれに続く OK_CODE の初期化を、PAI 処理の第 1 ステップにします。その後、補助変数から機能コードを読み込み (CASE 構造の使用などにより) 、そこからプログラムフローを制御することができます。
OK_CODE 項目には、各 Dynpro で異なる名称を割り当てることができます。しかし、通常は、ABAP プログラムの各 Dynpro のこの項目には同じ名称を使用します。それによって、ABAP プログラムでは同名のこの項目が 1 つのみ必要となるだけですみ、その項目へ機能コードを取り込んだり、そこから機能コードを読み込んだりすることができます。

グローバルデータ宣言:
DATA: OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM.
Dynpro 上の OK_CODE 項目と同じ名前の項目が、ABAP プログラムに含まれていなければなりません。型を指定するためには、システム項目 SY-UCOMM を参照します。なぜなら、この型は Dynpro 上の OK_CODE 項目の型と常に一致しているためです。それと同時に、適切な補助変数を宣言します。
AI モジュール:
MODULE USER_COMMAND_100 INPUT.
SAVE_OK =
OK_CODE.
CLEAR
OK_CODE.
CASE
SAVE_OK.
WHEN...
...
ENDCASE.
ENDMODULE.
最初の PAI モジュールで、OK_FIELD の内容を補助変数に割り当て、その後、OK_CODE 項目をクリアして補助変数の処理を行います。