ABAP/AT SELECTION-SCREEN のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- ABAP/AT SELECTION-SCREEN へ行く。
- 1 (2014-06-26 (木) 11:02:33)
選択画面でユーザのアクション直後に走るイベントブロック。 入力チェックなどに用いられる。
概要 †
このイベントは、選択画面処理にのみ実行される。
注意点はすべての選択画面処理を、AT SELECTION-SCREEN配下に記述しないこと。 理由は、すべての処理をEnter押下のたびに実行する必要はないことと可読性が低下することで、項目間の相関チェックなどを除いては後述のオプションなどで項目ごとに切り分けて記述すべきと考える。
なお、呼び出しの順序はオプション記述がPARAMETERS構文で定義した順に呼び出され、AT SELECTION-SCREENが最後となる。
オプション †
ON (Parameter) †
用法 †
対象の項目が変更されたタイミングのみ実行する。
このオプションで他のパラメータに代入するコードを書いても無視されるので注意。 例えば、会社コードから隠しパラメータとして定義した管理領域を誘導する場合などは使えない。
サンプル †
# AT SELECTION-SCREEN ON P_BUKRS.
#
# * 会社コードの権限チェック
# PERFORM F_FUNC_AUTHORITY_CHECK USING P_BUKRS.
ON END OF (Selection) †
用法 †
サンプル †
#
#
ON VALUE-REQUEST FOR (Parameter Field) †
用法 †
任意の検索ヘルプを実装する。 PARAMETERS〜MATCHCODE構文で項目依存のヘルプを用いない場合など。
サンプル †
# AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VKORG.
#
# * ユーザパラメータの会社コードに紐付く販売組織のみヘルプに表示
# PERFORM F_FUNC_CALL_SEARCH_HELP_VKORG.
※上記はあくまで例で、上記要件の充足は[[検索ヘルプExit]]がベター。
ON HELP-REQUEST FOR (Parameter) †
用法 †
任意のF1ヘルプを実装する。 ただ、部品の共通化という観点から基本的にはABAPディクショナリで設定したものを用いることが望ましい。
サンプル †
# AT SELECTION SCREEN ON HELP-REQUEST FOR P_ZSFLAG.
#
# * xxフラグのF1ヘルプ
# PERFORM F_FUNC_CALL_ZSFLAG_HELP.
#
その他 †
ON RADIOBUTTON GROUP (Radio Button Group) †
用法 †
PARAMETERSで定義したラジオボタングループへのイベント割り当て。 特定のまとまりを選んだ場合のみの必須項目チェックなど? エラーをトリガすると、ここだけ再入力可能となる。
サンプル †
#
#
その他 †
ON BLOCK (Block) †
SELECTION-SCREEN構文で定義した画面ブロックへのイベント割り当て。 エラーをトリガすると、ここだけ再入力可能となる。
用法 †
サンプル †
#
#
その他 †
OUTPUT †
用法 †
Enter押下のたびに走るPBOイベント。 最も最初に走るタイミングはバリアントのインポート後らしい。 諸々の理由により、このイベントでパラメータや選択オプションの値を変更すると、値が破壊されるという恐ろしい記述がABAPのヘルプにあるため、こういった用途では使わず、あくまでラジオボタンxxxがOnの場合は項目yyyを非表示にする・・・など、選択画面の値に従った項目属性の制御に用いること。
サンプル †
# 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.
その他 †
ON EXIT-COMMAND †
用法 †
選択画面で中止や戻るなどのExitコマンドがトリガされた場合に使用する・・・らしいが、デフォルトの選択画面1000を使用している限りはあまり使用しないのではないだろうか。 ヘルプに「システムに重大な障害を発生させないために特別に注意を払って下さい」などという仰々しい文言があることもあり、余計登場の機会はないだろう。
サンプル †
#
#
その他 †
コメントはありません。 Comments/ABAP/AT SELECTION-SCREEN