大量データの一括登録時などで、処理結果をALV一覧で出すときに信号アイコンで処理ステータスを表現することがあります。状態把握という点で言えば、色の違いで把握できるので使う側からすればわかりやすくなります。
早速実装方法を見ていきましょう。
サンプルコードは下記投稿のものをベースに更新します。
【ABAP】ALV – 一覧リフレッシュ機能の実装(サンプルあり)
実装方法
ALV表示用構造にステータス項目を追加
ステータス表示用の項目「STATUS」を追加しました。

プログラム実装
レイアウトパラメータにステータスアイコン用の設定をします。
wa_layout-lights_fieldname = 'STATUS'.
loop at it_main assigning field-symbol(<fs_main>).
<fs_main>-status = sy-tabix.
endloop.
DATA: it_extab TYPE slis_t_extab.
APPEND '&GRAPH' TO it_extab.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fcat
is_layout = wa_layout
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_GUI_STATUS'
i_callback_user_command = 'USER_COMMAND'
it_excluding = it_extab
TABLES
t_outtab = it_main
EXCEPTIONS
program_error = 1
OTHERS = 2.
結果がこちらです。構造上は最終行にステータスを追加しましたが、ALV表示錠は先頭に表示されます。
ステータスの設定値は以下の通りです。
1 | 赤信号 |
2 | 黄信号 |
3 | 青信号 |



一覧に信号アイコンが表示されましたが、一つ問題が。
ステータスの項目が「Exception(例外)」となっているのです。ラベルが「Status(ステータス)」であるにも関わらず。
ステータスのラベルを直すために次の一文を追加します。
wa_layout-lights_rollname = 'STEP_COLOR'.
レイアウトパラメータの「LIGHTS_ROLLNAME」にステータス項目のデータエレメントを指定します。そうすることで、データエレメントのラベルが表示されるようになります。



まとめ
- レイアウトパラメータにステータスアイコン表示用の項目あり
- 項目名とステータスの値を設定するだけで信号アイコンが表示される
- ラベルが「Exception(例外)」と表示される場合はデータエレメントのパラメータ設定漏れを疑うこと
これだけ覚えておけば簡単に実装できますので参考にしてください。
コメント