列幅を表示データの桁数に合わせて自動で調整する機能と、奇数行と偶数行でセルの背景色を変えてくれる機能です。
列幅の自動調整
事象の確認
まずはこちらの一覧を見てください。
名称(Name1)の列幅が表示データに対して必要以上に長く感じないでしょうか。パソコン画面の横幅には限界があるので、無駄に幅を取ってしまうと同じ項目数を表示するにも横スクロールが必要になり、操作性が悪くなります。
こんな時に役に立つのが幅の自動調整です。
対策方法
レイアウトパラメータの「COLWIDTH_OPTIMIZE」に'X'をセットするだけです。
wa_layout-colwidth_optimize = abap_on.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fcat
is_layout = wa_layout
TABLES
t_outtab = it_main
EXCEPTIONS
program_error = 1
OTHERS = 2.
修正後の実行結果がこちらです。名称(Name1)の表示幅が小さくなりました。
行の縞模様表示
事象の確認
上にも載せたように、データ行は単色で表示されます。
対策方法
レイアウトパラメータの「ZEBRA」に'X'をセットするだけです。
wa_layout-zebra = abap_on.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fcat
is_layout = wa_layout
TABLES
t_outtab = it_main
EXCEPTIONS
program_error = 1
OTHERS = 2.
修正後の実行結果がこちらです。2行目の色が変わりました。奇数行と偶数行で色の濃淡がついて表示されます。
サンプルコード
レイアウトパラメータ2つを追加で設定しただけです。
REPORT ytest0008.
TYPES:
BEGIN OF t_main.
INCLUDE TYPE ytest0008.
TYPES:
box TYPE checkbox,
END OF t_main.
DATA: it_main TYPE TABLE OF t_main.
DATA: it_fcat TYPE slis_t_fieldcat_alv.
DATA: wa_layout TYPE slis_layout_alv.
START-OF-SELECTION.
SELECT * FROM but000 INTO CORRESPONDING FIELDS OF TABLE it_main.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_structure_name = 'YTEST0008'
i_bypassing_buffer = abap_on
CHANGING
ct_fieldcat = it_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
wa_layout-box_fieldname = 'BOX'.
wa_layout-colwidth_optimize = abap_on.
wa_layout-zebra = abap_on.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = it_fcat
is_layout = wa_layout
TABLES
t_outtab = it_main
EXCEPTIONS
program_error = 1
OTHERS = 2.
まとめ
今回はALVの見栄えを上げるテクニック2つを紹介しました。どちらもよく使われる手法です。パラメータ1つ設定するだけで実現できるので知っておくと便利です。


