【ABAP】5分で解説―ALVの基本を完全マスターする

ABAP

ABAPで一覧画面を実装する際に利用する「ALV」の利用方法について解説します。

ALVとは、「SAp List Viewer」の略でSAPが用意してくれている一覧表示ツール(汎用モジュール or クラス)です。このページでは以下の内容について整理しています。

このページで学べる内容
  • ALVとは何か?
  • ALVを出力する際のコーディングの流れ
    • LAYOUT
    • FIELDCAT-フィールドカタログ
  • ALV利用時の注意点

ABAPerであれば確実に知っておきたい内容ばかりなので是非最後までご覧ください。ALVをマスターすれば、コーディングできる機能の幅・種類もぐっと広がります!

スポンサーリンク
スポンサーリンク

ALVとは?

ALVとはデータを一覧表示する仕組みです。例えば、SE16N(一般テーブル照会)を実行すると下記のような画面が表示されますが、これがALVです。

ALVの例:SE16N検索結果

通常のプログラムは大まかに「①選択画面の実行 ⇒ ②データ抽出 ⇒ ③データ/結果表示」というような構成で成り立っていますが、ALVは最後の「③データ/結果表示」のタイミングで頻繁に利用されます。

ALVは、WRITE命令で作成する一覧とは異なり、デザインやレイアウトを容易に変更することができたり、押しボタンやリンクなどの多種多様な機能を兼ね備えた一覧を作成することが可能。ALVの出力自体も特定の汎用モジュールクラス(メソッド)を利用するだけなので、覚えれば簡単に使える便利な機能です。

ALVの実装方法

早速、ALV出力を行うコーディング方法を解説します。ざっくり説明すると、ALV出力には大きく3つのステップが存在します。

まずは、①ALV出力用のデータ取得。その後、②フィールドカタログを定義し、③ALVを出力します。

それぞれのステップを順を追って解説していきます。

尚、本ページではALVの基本理解を深めることを目的として、汎用モジュールを用いたALV出力方法を解説します。

1.出力データの取得

ALVは内部テーブルの値を後述するレイアウト定義に応じて表示する仕組みです。

前段として、ALVで表示させたいデータを取得し指定の内部テーブルに格納します。

  SELECT
    BKPF~BUKRS
    BKPF~BELNR
    BKPF~GJAHR
    BKPF~BLART
  FROM
    BKPF
  INTO TABLE
    GDT_BKPF.

2.フィールドカタログの取得

フィールドカタログとは、ALV出力を行うために必要な各項目(列)の定義情報です。左から何番目の列か?カラム名は何か?など基本的な情報を保持しているのがフィールドカタログです。

フィールドカタログはそれ専用のデータ構造でなければならず、この構造を無視するとプログラムはショートダンプしてしまいます。

TYPE-POOLS:SLIS.

DATA:
  LT_FIELDCAT  TYPE SLIS_T_FIELDCAT_ALV,     " フィールドカタログ
  LW_FIELDCAT  TYPE SLIS_FIELDCAT_ALV.       " フィールドカタログ設定用構造

* フィールドカタログの設定
  CLEAR LW_FIELDCAT.
  LW_FIELDCAT-COL_POS     = 1.
  LW_FIELDCAT-FIELDNAME   = '(項目名)'.
  LW_FIELDCAT-REF_TABNAME = '(内部テーブル)'.
  LW_FIELDCAT-SELTEXT_M   = '(表示名)'.
  APPEND LW_FIELDCAT TO LT_FIELDCAT.

  CLEAR LW_FIELDCAT.
  LW_FIELDCAT-COL_POS     = 2.
  LW_FIELDCAT-FIELDNAME   = '(項目名)'.
  LW_FIELDCAT-REF_TABNAME = '(内部テーブル)'.
  LW_FIELDCAT-SELTEXT_M   = '(表示名)'.
  APPEND LW_FIELDCAT TO LT_FIELDCAT.

このサンプルコードでは、2列の内部テーブルを表示するためのフィールドカタログを定義しています。ただし、これはあくまでも一例にすぎず、実際にはさらに様々な項目情報を保持することができます。(大文字の列なのか?小文字の列なのか?合計値を表示させるのか?等)

3.ALVの表示

①出力するレコードと②フィールドカタログの用意ができたら、この2つをINPUTにしてALVを出力します。

ここでは、ALV出力専用の汎用モジュールを利用します。

REUSE_ALV_GRID_DISPLAY

* ALV出力

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID
      IT_FIELDCAT              = LT_FIELDCAT
      I_SAVE                   = 'X'
    TABLES
      T_OUTTAB                 = (内部テーブル)
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.

  IF SY-SUBRC <> 0.
    MESSAGE I001(VL)
      WITH 'ALV出力に失敗'.
  ENDIF.

当該汎用モジュールも様々なパラメータが用意されていますが、最低限のパラメータをインプットしてあげるだけでALV出力が完了します。

これが、ALVの基本です。実は表示したいデータと、フィールドカタログ(一覧の定義情報)だけ用意してあげるだけの簡単な仕組みです。

ABAPを1から学習したい方は

以下のページでは、ABAPでプログラミングをしていくうえで、必要な知識を1つのページにまとめて解説しています。

ABAPの変数宣言や基本的なデータ型から、汎用モジュールやサブルーチンといった内容まで幅広く解説をしておりますので、是非ご覧ください。

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