!--a11y-->

イベントキーワード PROCESS ON VALUE-REQUEST を使用して POV イベントでダイアログモジュールを呼び出すことができます。
PROCESS ON VALUE-REQUEST.
...
FIELD
<f> MODULE <mod>.
...
PROCESS ON VALUE-REQUEST 命令の後は、MODULE 命令のみを使用することができます。ユーザが項目 <f> の F4 を選択すると、FIELD <f> 命令に属するモジュール <mod> が呼び出されます。同一の項目<f> に対して FIELD 命令が複数ある場合は、最初の命令のみが実行されます。モジュール<mod> は、通常の PAI モジュールと同様に ABAP プログラムで定義されます。ただし、PROCESS ON HELP-REQUEST イベントでは Dynpro 項目 <f> の内容が FIELD 命令によって移送されていないため、この項目の内容を使用することはできません。モジュール内で独自の値一覧をプログラムすることができるようになります。ただし、このプロシージャは、検索ヘルプを実際に使用することができない場合のみ推奨されます。Dynpro からの項目内容の取得などの標準動作の一部はシステムによって実行されるため、検索ヘルプの定義は PROCESS ON VALUE-REQUEST よりもはるかに容易です。また、システム全体で F4 ヘルプの外観と印象を確実に統一することもできます。さらに、Dynpro ごとに項目に対する入力ヘルプの割当をやり直す必要もなくなります。
検索ヘルプ ( および検索ヘルプExit) の説明とは異なりますが、標準 F4 機能の一部を直接使用しなければならない状況もあります。このような場合に、POV イベントで使用可能な標準汎用モジュールがいくつかあります。これらの汎用モジュールは検索ヘルプおよびその他のすべての入力ヘルプをサポートし、Dynpro と入力ヘルプ間のデータ移送を実行します。これらにはすべて F4IF_ の接頭辞があります。その主なものは以下のとおりです。
キ F4IF_FIELD_VALUE_REQUEST
ABAP ディクショナリの入力ヘルプを動的に呼び出します。構造のコンポート名または ABAP ディクショナリのデータベーステーブルをインポートパラメータ TABNAME および FIELDNAME で汎用モジュールに渡します。汎用モジュールによって、このコンポーネントの ABAP ディクショナリ入力ヘルプ が起動されます。関連する Dynpro 項目すべてが読み込まれます。インポートパラメータDYNPPROG 、DYNPNR およびDYNPROFIELD を指定すると、ユーザの選択が Dynpro 上の対応項目に返されます。テーブルパラメータ RETURN_TAB を指定した場合は、選択がテーブルに返されます。
キ F4IF_INT_TABLE_VALUE_REQUEST
この汎用モジュールは、ABAP プログラムで作成した値一覧を表示します。この値一覧は、テーブルパラメータ VALUE_TAB として汎用モジュールに渡されます。インポートパラメータ DYNPPROG 、DYNPNR およびDYNPROFIELD を指定すると、ユーザの選択が Dynpro 上の対応項目に返されます。テーブルパラメータ RETURN_TAB を指定した場合は、選択がテーブルに返されます。
さらに、DYNP_VALUES_READ と DYNP_VALUES_UPDATE という 2 つの汎用モジュールがあり、これらは Dynpro 項目の値を読み込み、POV イベントで値を返すことができます。詳細については、それぞれの汎用モジュール文書を参照してください。

ダイアログモジュールの入力ヘルプ
REPORT DEMO_DYNPRO_F4_HELP_MODULE.
TYPES: BEGIN OF VALUES,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
END OF VALUES.
DATA: CARRIER(3) TYPE C,
CONNECTION(4) TYPE C.
DATA: PROGNAME LIKE SY-REPID,
DYNNUM LIKE SY-DYNNR,
DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
FIELD_VALUE LIKE LINE OF
DYNPRO_VALUES,
VALUES_TAB TYPE TABLE OF
VALUES.
CALL SCREEN 100.
MODULE
INIT OUTPUT.
PROGNAME = SY-REPID.
DYNNUM =
SY-DYNNR.
CLEAR: FIELD_VALUE,
DYNPRO_VALUES.
FIELD_VALUE-FIELDNAME =
'CARRIER'.
APPEND
FIELD_VALUE TO DYNPRO_VALUES.
ENDMODULE.
MODULE CANCEL INPUT.
LEAVE
PROGRAM.
ENDMODULE.
MODULE VALUE_CARRIER INPUT.
CALL
FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
TABNAME
= 'DEMOF4HELP'
FIELDNAME
= 'CARRIER1'
DYNPPROG = PROGNAME
DYNPNR = DYNNUM
DYNPROFIELD
= 'CARRIER'.
ENDMODULE.
MODULE VALUE_CONNECTION INPUT.
CALL
FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME
= PROGNAME
DYNUMB
= DYNNUM
TRANSLATE_TO_UPPER
= 'X'
TABLES
DYNPFIELDS
= DYNPRO_VALUES.
READ TABLE DYNPRO_VALUES INDEX 1 INTO FIELD_VALUE.
SELECT CARRID
CONNID
FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE
VALUES_TAB
WHERE CARRID = FIELD_VALUE-FIELDVALUE.
CALL
FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD
= 'CONNID'
DYNPPROG
= PROGNAME
DYNPNR
= DYNNUM
DYNPROFIELD =
'CONNECTION'
VALUE_ORG =
'S'
TABLES
VALUE_TAB =
VALUES_TAB.
ENDMODULE.
Dynpro 100 の次画面 ( 静的定義) は同じ Dynpro です。これは次のようなレイアウトになります。
入力項目はプログラム項目 CARRIER と CONNECTION から取得されています。押しボタンの機能コードは CANCEL で機能タイプは E です。
この Dynpro 制御ロジックは次のとおりです。
PROCESS
BEFORE OUTPUT.
MODULE INIT.
PROCESS AFTER INPUT.
MODULE
CANCEL AT EXIT-COMMAND.
PROCESS ON VALUE-REQUEST.
FIELD
CARRIER MODULE VALUE_CARRIER.
FIELD
CONNECTION MODULE VALUE_CONNECTION.
ユーザが個別の項目で入力ヘルプを選択すると、以下のように表示されます。
キ 航空会社 項目には POV モジュールVALUE_CARRIER が呼び出されます。汎用モジュール F4IF_FIELD_VALUE_REQUEST によって ABAP ディクショナリからの構造 DEMOF4HELP のコンポーネント CARRIER1 に入力ヘルプ、すなわち検索ヘルプ DEMOF4DE が表示されます。ユーザの選択は Dynpro 項目 CARRIER に返されます。
キ フライト番号 項目には POV モジュールVALUE_CONNECTION が呼び出されます。汎用モジュール DYNP_VALUE_READ によって、Dynpro 項目 CARRIER の値がプログラムに移送されます。次に、プログラムは、SELECT 命令を使用してデータベーステーブル SPFLI から対応する値を内部テーブル VALUES_TAB に読み込み、この内部テーブルを F4IF_INT_TABLE_VALUE_REQUEST に渡します。これによって内部テーブルが入力ヘルプとして表示され、ユーザの選択が Dynpro 項目 CONNECTION に配置されます。