【ABAP】ALV – 列幅の自動調整と行の縞模様表示(サンプルあり)

ABAP

今回はALV一覧の見栄えを上げるテクニックを紹介します。

列幅を表示データの桁数に合わせて自動で調整する機能と、奇数行と偶数行でセルの背景色を変えてくれる機能です。

列幅の自動調整

事象の確認

まずはこちらの一覧を見てください。

名称(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つ設定するだけで実現できるので知っておくと便利です。

コメント

タイトルとURLをコピーしました