ALVツールバーとは
ALVの標準の機能であり、アプリケーションツールバーの略です。ALVツールバーには様々な機能ボタンが表示され、ユーザーはボタンを押すことで出力された画面のデータを並べ替えたりデータをエクセルに出力したりすることが可能です。
ツールバーにボタンを追加する手順
ALVツールバーには、ボタンを追加して任意の機能を作成することができます。
手順は以下の通りです。
GUIステータスでボタンを作成
トランザクションコード41でボタンを作成します。
まず、REUSE_ALV_GRID_DISPLAYで使用されているGUIステータスですが、プログラムID:SAPLKKBL、ステータス:STANDARD_FULLSCREENとなっています。これを自分のテストプログラムにコピーし、実行ボタンをつけます。
ボタンを呼び出すサブルーチンを作成
ボタンを作成したら、プログラム内にサブルーチンを作成します。
FORM PF_STATUS
USING I_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'LIST'.
ENDFORM.
サブルーチン内でこのように記述することでプログラム内にGUIステータスを作成することができます。
「LIST」の部分はアドオンプログラムのステータス名です。名前は自由に決めて大丈夫です。
SET PF-STATUSの記述によって機能ボタンを呼び出すことが可能になるが、不要な機能が含まれている場合がある。その場合、「EXCLUDING」を指定することで不要なコードを削除することができる。
FORM PF_STATUS
USING I_EXTAB TYPE SLIS_T_EXTAB.
SET PF_STATUS 'LIST' EXCLUDING I_EXTAB.
ENDFORM.
ALVで出力する
①「REUSE_ALV_GRID_DISPLAY」の汎用モジュールにあるi_callback_pf_status_setパラメータにGUIステータスを記述したサブルーチン名を渡します。
② i_callback_user_command パラメーターにボタンが押された際の処理を記述したサブルーチン名を渡します。
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'HANDLE_USER_COMMAND'
is_layout = s_alv_layout_cat
it_fieldcat = it_alv_field_cat
i_default = 'X'
i_save = 'A'
it_events = it_alv_event_cat
TABLES
t_outtab = gt_zprice
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
*---------------------------------------------------------------------*
* FORM SET_PFSTATUS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> EXTAB *
*---------------------------------------------------------------------*
FORM PF_STATUS USING extab TYPE slis_t_extab.
SET PF-STATUS 'LIST'.
ENDFORM.
▼参考サイト①
▼参考サイト②
Q&A
- 上記の処理を実装してもボタンが表示されなかった
-
アプリケーションツールバーの設定画面(T-code41)で機能コードの先頭に&をつける
まとめ
今回は、ALVで追加ボタンを作成してALVツールバーに表示する方法を紹介しました。
ここまでだとALVの表示画面でボタンを押しても何も機能しません。(ボタンを押したときの処理作成していないからです)
ということで、次はボタンを押したときの機能の実装方法について紹介していきます。