ALV出力の基本実装

 

このトピックでは、一つの簡単なサンプルを例として取り上げてALV出力の基本実装を説明します。

サンプルプログラムは以下の機能を実現します。

  1. 会社コードを指定します
  2. 対象会計伝票明細一覧を出力します

ALV用タイププールを宣言

TYPE-POOLS: slis.

ALV用テーブル構造を定義

TYPES:
BEGIN OF t_account_doc,
  bukrs TYPE bseg-bukrs,
  belnr TYPE bseg-belnr,
  gjahr TYPE bseg-gjahr,
  buzei TYPE bseg-buzei,
  pswbt TYPE bseg-pswbt,
  pswsl TYPE bseg-pswsl,
END OF t_account_doc.
TYPES ttbl_account_doc TYPE STANDARD TABLE OF t_account_doc.

必要な変数を定義

DATA g_account_doc TYPE t_account_doc.
DATA gtbl_account_doc TYPE ttbl_account_doc.
DATA g_layout     TYPE slis_layout_alv.
DATA gtbl_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv.
DATA g_fieldcat    TYPE  slis_fieldcat_alv.

選択画面を定義

DATA: g_bukrs TYPE bukrs.

SELECTION-SCREEN BEGIN OF BLOCK LAYOUT WITH FRAME .
SELECT-OPTIONS: S_BUKRS FOR  g_bukrs.
SELECTION-SCREEN END OF BLOCK LAYOUT.

本処理を実装

実行ボタン押下後の本処理は、START-OF-SELECTIONイベントブロックに実装されます。

出力データを取得

  SELECT
    bukrs
    belnr
    gjahr
    buzei
    pswbt
    pswsl
  FROM bseg
  INTO CORRESPONDING FIELDS OF TABLE gtbl_account_doc
  UP TO 10 ROWS
  WHERE
    bukrs in  s_bukrs.

ALV用項目カテゴリを設定

*フィールドカタログ
  CLEAR g_fieldcat.
  "内部テーブルのフィールド
  g_fieldcat-fieldname = 'BUKRS'.
  "参照するテーブル
  g_fieldcat-ref_tabname = 'BSEG'.
  "参照するフィールド
  g_fieldcat-ref_fieldname =  'BUKRS'.
  APPEND g_fieldcat TO gtbl_fieldcat.
  CLEAR g_fieldcat.
  g_fieldcat-fieldname = 'BELNR'.
  g_fieldcat-ref_tabname = 'BSEG'.
  g_fieldcat-ref_fieldname =  'BELNR'.
  APPEND g_fieldcat TO gtbl_fieldcat.
  CLEAR g_fieldcat.
  g_fieldcat-fieldname = 'GJAHR'.
  g_fieldcat-ref_tabname = 'BSEG'.
  g_fieldcat-ref_fieldname =  'GJAHR'.
  APPEND g_fieldcat TO gtbl_fieldcat.
  CLEAR g_fieldcat.
  g_fieldcat-fieldname = 'BUZEI'.
  g_fieldcat-ref_tabname = 'BSEG'.
  g_fieldcat-ref_fieldname =  'BUZEI'.
  APPEND g_fieldcat TO gtbl_fieldcat.
  CLEAR g_fieldcat.
  g_fieldcat-fieldname = 'PSWBT'.
  g_fieldcat-ref_tabname = 'BSEG'.
  g_fieldcat-ref_fieldname =  'PSWBT'.
  g_fieldcat-cfieldname = 'PSWSL'.
*通貨コードのフィールドを参照する。
*通貨に応じて自動で書式変更してくれる。
  APPEND g_fieldcat TO gtbl_fieldcat.
  CLEAR g_fieldcat.
  g_fieldcat-fieldname = 'PSWSL'.
  g_fieldcat-ref_tabname = 'BSEG'.
  g_fieldcat-ref_fieldname =  'PSWSL'.
  APPEND g_fieldcat TO gtbl_fieldcat.

ALV表示

  "タイトル表示
  g_layout-window_titlebar = '伝票照会'.

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
     it_fieldcat        = gtbl_fieldcat
      is_layout          = g_layout
      i_save             = 'A'
   TABLES
      t_outtab           = gtbl_account_doc
    EXCEPTIONS
     OTHERS             = 0
  .