!--a11y-->

Dynpro 項目から同名の ABAP 項目へのデータの転送は、各ダイアログステップで 1 回のみ行われます。単純なモジュールコールのみを使用する場合は、PAI イベントで、PAI 処理の開始前にすべてのデータが転送されます。
Dynpro 制御ロジックの FIELD 命令では、Dynpro 項目から対応する ABAP 項目へどの時点でデータを渡すかを制御することができます。
この時点を指定するには、PAI 制御ロジックで次の命令を使用します。
FIELD <f>.
Dynpro 項目 <f> から ABAP 項目 <f> へのデータの移送は、FIELD 命令が処理されてはじめて実行されます。項目が複数の FIELD 命令に指定されている場合は、最初のFIELD 命令が処理されたときに項目の内容がプログラムに渡されます。
PAI イベントの開始時には、FIELDS 命令に指定されていない項目のみが転送されます。PAI モジュールでは、項目は、Dynpro からプログラムに渡されるまで使用しないでください。渡される前に使用すると、ABAP 項目に、前のダイアログステップの終了時の値と同じ値が含まれたままになります。
PBO イベントで初期値が設定されていた項目で、ユーザによって変更されないものについては例外です。それらの項目は FIELD 命令によって移送されません。このタイプの項目に、対応する FIELD 命令の実行前に PAI モジュールで値が取り込まれた場合、その項目に割り当てられた値は上書きされません。
FIELD 命令には、条件付モジュールコールおよび妥当性チェックとの組合わせによる追加機能があります。

データ転送の制御
PROGRAM DEMO_DYNPRO_FIELD_CHAIN.
DATA: OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE OK_CODE,
BOX1, BOX2, BOX3, BOX4,
MOD1_RESULT1, MOD1_RESULT2, MOD1_RESULT3,
MOD1_RESULT4,
MOD2_RESULT1, MOD2_RESULT2, MOD2_RESULT3,
MOD2_RESULT4,
MOD3_RESULT1, MOD3_RESULT2, MOD3_RESULT3,
MOD3_RESULT4.
CALL SCREEN 100.
MODULE INIT_SCREEN_100 OUTPUT.
SET
PF-STATUS 'STATUS_100'.
CLEAR:
BOX1, BOX2, BOX3, BOX4.
ENDMODULE.
MODULE USER_COMMAND_0100 INPUT.
SAVE_OK =
OK_CODE.
CLEAR
OK_CODE.
IF SAVE_OK
= 'CANCEL'.
LEAVE
PROGRAM.
ENDIF.
ENDMODULE.
MODULE MODULE_1 INPUT.
MOD1_RESULT1
= BOX1.
MOD1_RESULT2
= BOX2.
MOD1_RESULT3
= BOX3.
MOD1_RESULT4
= BOX4.
ENDMODULE.
MODULE MODULE_2 INPUT.
MOD2_RESULT1
= BOX1.
MOD2_RESULT2
= BOX2.
MOD2_RESULT3
= BOX3.
MOD2_RESULT4
= BOX4.
ENDMODULE.
MODULE MODULE_3 INPUT.
MOD3_RESULT1
= BOX1.
MOD3_RESULT2
= BOX2.
MOD3_RESULT3
= BOX3.
MOD3_RESULT4
= BOX4.
ENDMODULE.
Dynpro 100 の次画面 ( 静的定義) は同じ Dynpro です。このレイアウトは次のようなものです。
Dynpro 項目 BOX1 、BOX2 、BOX3 、および BOX4 は、それぞれ入力可能な左側のチェックボックスに割り当てられています。
この Dynpro 制御ロジックは次のとおりです。
PROCESS BEFORE OUTPUT.
MODULE
INIT_SCREEN_100.
PROCESS AFTER INPUT.
MODULE
USER_COMMAND_0100.
MODULE MODULE_1.
FIELD BOX2.
MODULE
MODULE_2.
FIELD: BOX1, BOX3.
MODULE
MODULE_3.
GUI
ステータス STATUS_100
では、アイコン
(F12)
が機能コード CANCEL
で有効になっています。
ユーザがチェックボックスを選択し、ENTER を選択して PAI イベントをトリガすると、出力項目に各 Dynpro 項目が利用できるダイアログモジュールが表示されます。
すべてのチェックボックスが選択されると、次のような結果になります。
キ Dynpro 項目 BOX4 は、どの Field 命令にも指定されていないため、PAI イベントで移送されます。
キ BOX2 はダイアログモジュールMODULE_2 になるまでは移送されないため、USER_COMMAND_0100 や MODULE_1 では使用できません。
キ BOX1 と BOX3 はダイアログモジュール MODULE_3 の前に移送されるため、このモジュールでのみ使用できます。