0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at
今回は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つ設定するだけで実現できるので知っておくと便利です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?