PR

【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.
SELECT文

SELECT命令はFROM句に指定したデータベーステーブルからレコードを読み込み、INTO句に記述した内部テーブル or 構造に取得したレコードを格納する命令です。

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を勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
シェアする
ビズドットオンラインをフォローする
blank
ビズドットオンライン
タイトルとURLをコピーしました