ALV出力時の項目カテゴリ制御は主に以下三つの方法があります。
- 自動生成
- マニュアル生成
- 半自動生成
このトピックでは、各方法をそれぞれ取り上げて説明します。
自動生成
出力テーブルの構造がデータディクショナリに定義されている場合、汎用モジュールを呼び出す際に入力パラメータI_STRUCTURE_NAMEで構造体の名前を指定することにより、項目カテゴリは内部に自動的に生成されることになります。 ここで注意すべきのは、出力テーブルは必ず該当構造体を使って定義しなけれなりません。そうではない場合、なかみが同じでも、実行時ランタイムエラーが発生します。
16をこのやり方で見直す場合、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をご参照ください。
半自動生成
項目カタログの半自動生成は、
- ABAPディクショナリーの構造体から項目カタログを自動生成する
- 自動生成された項目カタログに対してマニュアル修正を加える
というプロセスになります。
ABAPディクショナリーの構造体から項目カタログを自動生成するには、汎用モジュールLVC_FIELDCATALOG_MERGEを使用します。