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を使用します。