選択画面でユーザのアクション直後に走る[[イベントブロック>ABAP/イベントブロック]]。
入力チェックなどに用いられる。
* 概要 [#zfc7ec36]
このイベントは、選択画面処理にのみ実行される。
注意点は''すべての選択画面処理を、AT SELECTION-SCREEN配下に記述しないこと。''
理由は、すべての処理をEnter押下のたびに実行する必要はないことと可読性が低下することで、項目間の相関チェックなどを除いては後述のオプションなどで項目ごとに切り分けて記述すべきと考える。
なお、呼び出しの順序はオプション記述が[[PARAMETERS>ABAP/PARAMETERS]]構文で定義した順に呼び出され、AT SELECTION-SCREENが最後となる。
* オプション [#a0e0133e]
** ON (Parameter) [#rd409208]
*** 用法 [#t8184bc5]
対象の項目が変更されたタイミングのみ実行する。
このオプションで他のパラメータに代入するコードを書いても無視されるので注意。
例えば、[[会社コード>財務会計/会社コード]]から隠しパラメータとして定義した[[管理領域>管理会計/管理領域]]を誘導する場合などは使えない。
*** サンプル [#p68a8f51]
# AT SELECTION-SCREEN ON P_BUKRS.
#
# * 会社コードの権限チェック
# PERFORM F_FUNC_AUTHORITY_CHECK USING P_BUKRS.
AT SELECTION-SCREEN ON P_BUKRS.
* 会社コードの権限チェック
PERFORM F_FUNC_AUTHORITY_CHECK USING P_BUKRS.
** ON END OF (Selection) [#i35d38fb]
*** 用法 [#jff98e61]
*** サンプル [#f7846be8]
#
#
** ON VALUE-REQUEST FOR (Parameter Field) [#o8d04517]
*** 用法 [#yab738f5]
任意の[[検索ヘルプ>SAPのオブジェクト/検索ヘルプ]]を実装する。
PARAMETERS〜MATCHCODE構文で項目依存のヘルプを用いない場合など。
PARAMETERS~MATCHCODE構文で項目依存のヘルプを用いない場合など。
*** サンプル [#gf667eb0]
# AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VKORG.
#
# * ユーザパラメータの会社コードに紐付く販売組織のみヘルプに表示
# PERFORM F_FUNC_CALL_SEARCH_HELP_VKORG.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VKORG.
* ユーザパラメータの会社コードに紐付く販売組織のみヘルプに表示
PERFORM F_FUNC_CALL_SEARCH_HELP_VKORG.
※上記はあくまで例で、上記要件の充足は[[[[検索ヘルプExit>SAPの拡張手段#c844e4a7]]]]がベター。
** ON HELP-REQUEST FOR (Parameter) [#fb4dc257]
*** 用法 [#qa480867]
任意の[[F1ヘルプ>SAPの基本操作#ce512397]]を実装する。
ただ、部品の共通化という観点から基本的には[[ABAPディクショナリ>ABAP/ABAPディクショナリ]]で設定したものを用いることが望ましい。
*** サンプル [#w88579d9]
# AT SELECTION SCREEN ON HELP-REQUEST FOR P_ZSFLAG.
#
# * xxフラグのF1ヘルプ
# PERFORM F_FUNC_CALL_ZSFLAG_HELP.
#
AT SELECTION SCREEN ON HELP-REQUEST FOR P_ZSFLAG.
* xxフラグのF1ヘルプ
PERFORM F_FUNC_CALL_ZSFLAG_HELP.
* その他 [#x87f3583]
** ON RADIOBUTTON GROUP (Radio Button Group) [#z8b868e1]
*** 用法 [#m856af9a]
[[PARAMETERS>ABAP/PARAMETERS]]で定義したラジオボタングループへのイベント割り当て。
特定のまとまりを選んだ場合のみの必須項目チェックなど?
エラーをトリガすると、ここだけ再入力可能となる。
*** サンプル [#qfea8227]
#
#
* その他 [#kbaaff70]
** ON BLOCK (Block) [#mb54abe7]
[[SELECTION-SCREEN>ABAP/SELECTION-SCREEN]]構文で定義した画面ブロックへのイベント割り当て。
エラーをトリガすると、ここだけ再入力可能となる。
*** 用法 [#vab9859e]
*** サンプル [#md9ae6a2]
#
#
* その他 [#ea66ffec]
** OUTPUT [#l8d0dbe6]
*** 用法 [#fbd4c399]
Enter押下のたびに走る[[PBO>ABAP/Dynpro#h61692f1]]イベント。
最も最初に走るタイミングは[[バリアント>SAPのオブジェクト/バリアント]]のインポート後らしい。
諸々の理由により、''このイベントでパラメータや選択オプションの値を変更すると、値が破壊される''という恐ろしい記述がABAPのヘルプにあるため、こういった用途では使わず、あくまでラジオボタンxxxがOnの場合は項目yyyを非表示にする・・・など、選択画面の値に従った項目属性の制御に用いること。
*** サンプル [#k0f59322]
# AT SELECTION-SCREEN OUTPUT.
# * xxフラグの値で販売組織の表示/非表示制御
# LOOP AT SCREEN.
# IF ( SCREEN-NAME = 'P_VKORG' ).
# IF ( P_ZXFLAG IS INITIAL ).
# SCREEN-INPUT = '0'.
# ELSE.
# SCREEN-INPUT = '1'.
# ENDIF.
# ENDIF.
# ENDLOOP.
AT SELECTION-SCREEN OUTPUT.
* xxフラグの値で販売組織の表示/非表示制御
LOOP AT SCREEN.
IF ( SCREEN-NAME = 'P_VKORG' ).
IF ( P_ZXFLAG IS INITIAL ).
SCREEN-INPUT = '0'.
ELSE.
SCREEN-INPUT = '1'.
ENDIF.
ENDIF.
ENDLOOP.
* その他 [#n8a18ada]
** ON EXIT-COMMAND [#eb5c7042]
*** 用法 [#yae8b6d0]
選択画面で中止や戻るなどのExitコマンドがトリガされた場合に使用する・・・らしいが、デフォルトの選択画面1000を使用している限りはあまり使用しないのではないだろうか。
ヘルプに「システムに重大な障害を発生させないために特別に注意を払って下さい」などという仰々しい文言があることもあり、余計登場の機会はないだろう。
*** サンプル [#gcc611fb]
#
#
* その他 [#t08612b8]
~
~
CENTER:【スポンサードリンク】
#htmlinsert(amazon_book_sap_system_implement)
~
~
----
#pcomment(reply)