項目カテゴリの制御

 

ALV出力時の項目カテゴリ制御は主に以下三つの方法があります。

  • 自動生成
  • マニュアル生成
  • 半自動生成

このトピックでは、各方法をそれぞれ取り上げて説明します。

出力テーブルの構造がデータディクショナリに定義されている場合、汎用モジュールを呼び出す際に入力パラメータI_STRUCTURE_NAMEで構造体の名前を指定することにより、項目カテゴリは内部に自動的に生成されることになります。 ここで注意すべきのは、出力テーブルは必ず該当構造体を使って定義しなけれなりません。そうではない場合、なかみが同じでも、実行時ランタイムエラーが発生します。

ALV出力の基本実装をこのやり方で見直す場合、ABAPディクショナリに該当構造体を定義しておけば、 以下のようにソースプログラムがすごくシンプルになります。

REPORT  YLWF_ALV_FC_AUTO.
*ALV用のタイププール
TYPE-POOLS: slis.

TYPES ttbl_account_doc TYPE STANDARD TABLE OF YLWF_FC_AUTO_STRUC.

DATA g_account_doc TYPE YLWF_FC_AUTO_STRUC.
DATA gtbl_account_doc TYPE ttbl_account_doc.


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.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
     i_structure_name = 'YLWF_FC_AUTO_STRUC'
     i_grid_title       = '伝票照会'
   TABLES
      t_outtab           = gtbl_account_doc
    EXCEPTIONS
     OTHERS             = 0
      .

データディクショナリでは、テーブルデータ型LVC_T_FCAT によって項目カタログが定義されています。項目カタログテーブルの各行には、出力テーブルの項目が記述されています。 項目カタログのマニュアル生成は、上記のテーブルを作成して、汎用モジュールを呼び出す際に入力パラメータIT_FIELDCATとして受け渡します。

実装の詳細は、16をご参照ください。

項目カタログの半自動生成は、

  1. ABAPディクショナリーの構造体から項目カタログを自動生成する
  2. 自動生成された項目カタログに対してマニュアル修正を加える

というプロセスになります。

ABAPディクショナリーの構造体から項目カタログを自動生成するには、汎用モジュールLVC_FIELDCATALOG_MERGEを使用します。