!--a11y-->

実行プログラムで ABAP ディクショナリ項目を参照して項目が定義されおり、その ABAP ディクショナリ項目に入力可能値ヘルプが定義されている場合、ユーザがその項目の F4 ヘルプを呼び出すと、ABAP ディクショナリヘルプの入力可能値が自動的に表示されます。ディクショナリへの参照がない入力項目に入力可能値ヘルプを作成したり、項目にデフォルトでリンクされているヘルプを上書きするには、次のイベントに対応するイベントブロックを作成します。
AT SELECTION-SCREEN ON VALUE-REQUEST FOR <field>
このイベントは、ユーザが項目 <field> の F4 ヘルプを呼び出したときにトリガされます。対応するイベントブロックが定義されていない場合は、ABAP ディクショナリの入力可能値ヘルプが表示されます。項目にディクショナリへの参照がなければ、何も表示されません。対応するイベントブロックが定義されている場合は、それがデフォルトの入力可能値ヘルプ機構に優先します。適切な値リストを表示し、ユーザがその中から値を選択できるようにするのはプログラマの責任です。
論理データベース内で宣言されている選択画面の入力項目に対して AT SELECTION-SCREEN ON VALUE-REQUEST イベントブロックを宣言することはできません。プログラムで論理データベースの入力可能値ヘルプ機構をオーバーライドすることはできません。PARAMETERS および SELECT-OPTIONS 命令の VALUE-REQUEST オプションを使用すると、論理データベースプログラム内に別のヘルプを定義することができます。

REPORT SELECTION_SCREEN_F4_DEMO.
PARAMETERS: P_CARR_1 TYPE
SPFLI-CARRID,
P_CARR_2
TYPE SPFLI-CARRID.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_CARR_2.
CALL SCREEN 100 STARTING AT 10 5
ENDING
AT 50 10.
MODULE VALUE_LIST OUTPUT.
SUPPRESS DIALOG.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
SET PF-STATUS SPACE.
NEW-PAGE NO-TITLE.
WRITE 'Star Alliance' COLOR COL_HEADING.
ULINE.
P_CARR_2
= 'AC '.
WRITE: /
P_CARR_2 COLOR COL_KEY, 'Air Canada'.
HIDE
P_CARR_2.
P_CARR_2
= 'LH '.
WRITE: /
P_CARR_2 COLOR COL_KEY, 'Lufthansa'.
HIDE
P_CARR_2.
P_CARR_2
= 'SAS'.
WRITE: /
P_CARR_2 COLOR COL_KEY, 'SAS'.
HIDE
P_CARR_2.
P_CARR_2
= 'THA'.
4 WRITE: / P_CARR_2 COLOR COL_KEY,
'Thai International'.
HIDE
P_CARR_2.
P_CARR_2
= 'UA '.
WRITE: /
P_CARR_2 COLOR COL_KEY, 'United Airlines'.
HIDE
P_CARR_2.
CLEAR P_CARR_2.
ENDMODULE.
AT LINE-SELECTION.
CHECK NOT P_CARR_2 IS INITIAL.
LEAVE TO SCREEN 0.
このプログラムでは、2 つのパラメータを指定して選択画面を定義しています。いずれのパラメータもデータベーステーブル SPFLI の CARRID 列を参照しています。P_CARR_1 には ABAP ディクショナリの入力可能値ヘルプを使用し、P_CARR_2 には別個の入力可能値ヘルプがプログラミングされています。この入力可能値ヘルプには画面 100 が使用されています。ダイアログモジュール VALUE_LIST が PBO イベントで開始されます。実際の画面マスクは使用しないため、PAI ではダイアログモジュールを使用しません。
PROCESS BEFORE
OUTPUT.
MODULE VALUE_LIST.
PROCESS AFTER INPUT.
ダイアログモジュール VALUE_LIST は、画面 100 のダイアログの代わりに一覧処理を実行します。一覧にはパラメータP_CARR_2 の値が含まれています。これらの値は HIDE 領域にも格納されます。ユーザが値一覧から行を選択すると、AT LINE-SELECTION イベントがトリガされ、選択した値が HIDE 領域から項目 P_CARR_2 にコピーされます。ユーザが有効な行を選択した場合は、処理がイベントブロック AT LINE-SELECTION から選択画面に直ちに戻り、対応する入力項目に値が入力されます。