!--a11y-->

押ボタンは、ユーザがそれを選択したときに PAI イベントをトリガする唯一のDynpro エレメントです。押ボタンの属性では、20 文字までの長さの機能コードを指定することができます。
押ボタンには、ラベル (
属性で静的に指定されるテキスト)
が割り当てられます。また、アイコンを割り当てることもできます。押ボタンに出力項目属性を設定した場合は、そのテキストを ABAP
プログラムで動的に設定することもできます。この動的設定を行うには、押ボタンと同じ名前の項目を ABAP
プログラム内に作成する必要があります。その後、Dynpro
の表示前に、必要なテキストをその項目に割り当てます。また、テキストにアイコンのコードを組み込むことによって、押ボタンの動的テキストにアイコンを割り当てることもできます。アイコンのコードはすべてインクルードプログラム<ICON>
に含まれています。たとえば、ICON_CANCEL
(
)
アイコンのコードは @0W@
です。
各 PAI イベントでは、機能コードは空白の場合を除いてF SYST-UCOMM (SY-UCOMM) に取り込まれ、OK_CODE 項目に割り当てられます。空白の機能コードはSY-UCOMM 項目にも OK_CODE 項目にも取り込まれません。押ボタンの機能コードは、スクリーンペインタで対応する属性に入力されていないと、空白のままです。OK_CODE 項目を処理するためには、事前にスクリーンペインタでそれに名称を割り当てる必要があります。追加情報については、機能コードの読込を参照してください。
ユーザが PAI イベントをトリガする機能を選択し、機能コードをプログラムに渡すための基本的は方法は、GUI ステータスを使用する方法です。この方法を使用する主な理由は、スペースに関連しています。GUI ステータスには、押ボタンとして Dynpro に配置できる機能の数よりもはるかに多くの機能を設定することができます。
ただし、以下の場合は、押ボタンを使用してください。
キ ABAP エディタの第一画面に表示される実行、照会、変更機能などのように、Dynpro 上と GUI ステータスの両方に表示されるようにする、非常に重要で、かつ頻繁に使用する機能コード。
キ 押ボタンのみを使用する、GUI ステータスの機能コードが意味をなさないアプリケーション ( 計算アプリケーションの場合など) 。この場合、対応する押ボタンの機能コードは GUI ステータスのエレメントに対応する機能を持っておらず、Dynpro エレメントの属性としてのみ存在します。
キ 数多くの Dynpro 用に使用する GUI ステータスを、ほかのどこでも使用されない特定の機能を持つ Dynpro 上で使用するとき。この場合、その GUI ステータスは押ボタンとして Dynpro 上に配置します。
押ボタンを定義するときには、機能コードを GUI ステータスの対応する機能と一致させるか、または機能コードがまったく異なる機能の機能コードと偶然に一致することがないようにする必要があります。GUI ステータスの機能コードの整合性はメニューペインタでチェックされますが、押ボタンの場合、実行時まで Dynpro の GUI ステータスはわからないため、このチェックは実行できません。

Dynpro 上の押ボタン
PROGRAM DEMO_DYNPRO_PUSH_BUTTON.
DATA: OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE OK_CODE,
OUTPUT(8) TYPE C.
CALL SCREEN 100.
MODULE USER_COMMAND_0100
INPUT.
SAVE_OK =
OK_CODE.
CLEAR
OK_CODE.
CASE
SAVE_OK.
WHEN
'BUTTON_EXIT'.
LEAVE
PROGRAM.
WHEN
'BUTTON_1'.
OUTPUT
= 'Button 1'(001).
WHEN
'BUTTON_2'.
OUTPUT
= 'Button 2'(002).
WHEN
'BUTTON_3'.
OUTPUT
= 'Button 3'(003).
WHEN
'BUTTON_4'.
OUTPUT
= 'Button 4'(004).
WHEN
OTHERS.
OUTPUT
= SAVE_OK.
ENDCASE.
ENDMODULE.
Dynpro 100 の次画面 ( 静的定義) は同じ Dynpro です。このレイアウトは次のようなものです。

エレメント一覧内の Dynpro 項目に関連する部分は、次のとおりです。
|
名称 |
型 |
書式 |
テキスト |
機能コード |
|
OUTPUT |
入出力 |
CHAR |
|
|
|
BUTTON1 |
押 |
|
押ボタン 1 |
BUTTON_1 |
|
BUTTON2 |
押 |
|
押ボタン 2 |
BUTTON_2 |
|
BUTTON3 |
押 |
|
押ボタン 3 |
BUTTON_3 |
|
BUTTON4 |
押 |
|
押ボタン 4 |
BUTTON_4 |
|
EXIT_BUTTTON |
押 |
|
取消 |
BUTTON_EXIT |
|
OK_CODE |
OK |
OK |
|
|
Dynpro 項目 OUTPUT の入力オプションは、スクリーンペインタでオフに設定されています。
この Dynpro 制御ロジックは次のとおりです。
PROCESS BEFORE OUTPUT.
PROCESS AFTER INPUT.
MODULE
USER_COMMAND_0100.
ユーザが押ボタンを選択すると、PAI イベントがトリガされます。押ボタンの機能コードは Dynpro 項目 OK_CODE に割り当てられ、その後、同名の ABAP 項目に渡されます。続いて、モジュール USER_COMMAND_0100 が処理されます。
最初に、OK_CODE 項目の内容が補助変数 SAVE_OK コードにコピーされ、OK_CODE が初期化されます。これは必ず行うようにします。このように PBO イベントの前に Dynpro 項目 OK_CODE を必ず初期化することによって、この項目に不適切な値が誤って残っていないようにすることができます。
次に、ユーザが選択したボタンに対応して、CASE 構造でテキストシンボルが OUTPUT 項目に割り当てられます。これは Dynpro 上の出力項目に表示されます。ユーザが取消を選択すると、プログラムは終了します。