実行可能プログラムに宣言された入力項目が ABAP ディクショナリ項目を参照し、その ABAP ディクショナリ項目に入力可能値ヘルプが定義されている場合、ユーザがその項目の F4 ヘルプを呼び出すと、ABAP ディクショナリヘルプの入力可能値が自動的に表示されます。ディクショナリへの参照がないレポート入力項目に入力可能値ヘルプを作成したり、項目にリンクされているディクショナリ入力ヘルプを上書きしたりするために、次のイベントに対応するイベントブロックを作成することができます (パラメータの検索ヘルプを参照)。
AT SELECTION-SCREEN ON VALUE-REQUEST FOR field
このイベントは、ユーザが項目 field のF4 ヘルプを呼び出したときにトリガされます。対応するイベントブロックが定義されていない場合は、ディクショナリの入力可能値ヘルプや値リストは表示されません。対応するイベントブロックが存在する場合は、それがデフォルトの入力可能値ヘルプメカニズムに優先します。プログラマは、適切な値リストを表示し、ユーザがその中から値を選択できるようにする必要があります。
論理データベース内で宣言されている選択画面の入力項目に対して AT SELECTION-SCREEN ON VALUE-REQUEST イベントブロックを宣言することはできません。実行可能プログラム内で論理データベースの入力可能値ヘルプメカニズムを上書きすることはできません。PARAMETERS およびSELECT-OPTIONS 命令の VALUE-REQUEST オプションを使用して、論理データベースプログラム内に別のヘルプを定義することができます。
REPORT demo_selection_screen_f4.
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'.
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 にはディクショナリの入力ヘルプが使用されますが、p_carr_2 には特別な入力ヘルプはプログラムされていません。この入力可能値ヘルプには画面 100 が使用されています。制御ロジックでは、ダイアログモジュールvalue_list が PBO イベントで開始されます。実際の画面マスク 100 は不要で、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 から選択画面に直ちに戻り、対応する入力項目に値が入力されます。