ALVレポート SAP チュートリアル – ABAP リスト ビューア
⚡ スマートサマリー
ALVレポート SAPABAPリストビューアによって生成されるリストは、カスタムコーディングなしで列の整列、ソート、フィルタリング、合計、小計を提供します。このページでは、単純リスト、ブロックリスト、階層リストの各タイプ、それらの再利用機能モジュール、および表示バリエーションについて説明します。

ALVとは何ですか? SAP ABAP?
レポートに求められる一般的な機能は、「列の整列」、並べ替え、フィルタリング、小計、合計などです。これらをゼロから実装するには、多くのコーディング作業が必要になります。それを避けるために、ABAPリストビューア(ALV)という概念を利用できます。
これらの各レポートは次のことを提供します。 機能モジュール これは、多くの努力をせずに目的の出力を生成するのに役立ちます。 それらを詳しく見てみましょう –
従来のALVには3種類のリストタイプがあり、それぞれに独自の再利用関数モジュールセットが用意されています。
- 簡単なレポート: リストまたはグリッドとして表示される内部テーブルが1つ。
- ブロックレポート: 複数の内部テーブルが、それぞれ独立したブロックとして上下に並んで表示されます。
- 階層型レポート: ヘッダーテーブルとアイテムテーブルが共有キーでリンクされている。
簡単なレポート
これらの重要な機能モジュール レポート ある–
- Reuse_alv_fieldcatalog_merge
- alv_list_display を再利用する
- Reuse_alv_events_get
- Reuse_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
この汎用モジュールは、ALV でデータを表示するために不可欠な項目カタログを設定するために使用されます。
出力データが XNUMX つのディクショナリ テーブルからのもので、すべての列が選択されている場合は、フィールド カタログを排他的に作成する必要はありません。 REUSE_ALV_LIST_DISPLAY のパラメーター (I_struct_name) としてテーブル名を指定するだけで十分です。 ただし、それを作成する必要がある場合もあります。
注: フィールドカタログは、内部テーブルに必要な詳細をすべて入力することで手動で入力することもできます。
の重要なパラメータは次のとおりです。
1.エクスポート:
- I_program_name : レポート ID
- I_internal_tabname : 内部出力テーブル
- I_inclname : すべての動的フォームが処理されるレポート名を含めます。
2.変更
- ct_fieldcat : 内部テーブル タイプ プール SLIS で宣言されたタイプ SLIS_T_FIELDCAT_ALV を使用します。
REUSE_ALV_LIST_DISPLAY
データを印刷する汎用モジュールです。
重要なパラメータは次のとおりです。
1.エクスポート:
- I_callback_program : レポート ID
- I_バイパスバッファ: 'X'
- I_buffer_active: ' '
- I_callback_pf_status_set : ユーザーが独自の pf ステータスを設定したり、既存の pf ステータスの機能を変更したりできるルーチン。
- I_callback_user_command : 関数コードが処理されるルーチン。
- I_構造名 : ディクショナリテーブルの名前
- Is_Layout : レポートのレイアウトを設定する構造体
- It_fieldcat : 印刷されるすべてのフィールドとその属性のリストを含む内部テーブル (このテーブルは関数によって自動的に設定できます)
- It_events : ALV の考えられるすべてのイベントとそれに対応するフォーム名のリストを含む内部テーブル。
2. テーブル:
- a. t_outtab : 出力されるデータを含む内部テーブル
REUSE_ALV_EVENTS_GET
aa リスト タイプで発生する可能性のあるイベントのテーブルを返します。
1. インポート:
Et_イベント :イベント テーブルは、指定されたリスト タイプ (列 'NAME') に対して考えられるすべての CALLBACK イベントとともに返されます。 コールバックによってイベントが処理されるには、その「FORM」フィールドに値を入力する必要があります。 フィールドが初期化されている場合、イベントは無視されます。 エントリはイベント テーブルから読み取られ、フィールド「FORM」が入力され、タイプ プール SLIS の定数を使用してエントリが変更されます。
2.エクスポート:
I_list_type: 0 = 単純なリスト REUSE_ALV_LIST_DISPLAY
1 = 階層的シーケンシャルリスト REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = 単純なブロック リスト REUSE_ALV_BLOCK_LIST_APPEND
3 = 階層的シーケンシャルブロックリスト REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
ABAP4.6バージョンからの新機能で、結果をプレビューではなくグリッドで表示します。
パラメータ:reuse_alv_list_displayと同じ
注:グリッドは大量のデータには対応できません。表示するデータ量が多い場合、ソートやスクロールダウンなどの機能は多くのリソースと時間を消費します。データ量がXの場合にリストとグリッドのどちらを使うべきかという明確な定義はなく、開発者は自身の経験に基づいて判断する必要があります。迷う場合は、リストの方が良いでしょう。
REUSE_ALV_COMMENTARY_WRITE
これは、リストの見出しやその他のコメントを印刷するために Top-of-page イベントで使用されます。
重要なパラメータ
- It_list_commentary : slis_t_listheader タイプの見出しを持つ内部テーブル。
この内部テーブルには XNUMX つのフィールドがあります。
- タイプ: 'H' – ヘッダー、'S' – 選択、'A' – アクション
- キー: typ が 'S' の場合のみ。
- Info : 印刷されるテキスト
例:シンプルなALVグリッドレポート
以下のプログラムは、上記の関数モジュールを実用的なレポートに変換します。フライトスケジュールテーブルSPFLIを読み込み、フィールドカタログを自動的に作成し、結果をグリッド形式で表示します。
REPORT z_alv_demo. TYPE-POOLS: slis. DATA: lt_spfli TYPE STANDARD TABLE OF spfli, lt_fieldcat TYPE slis_t_fieldcat_alv, ls_layout TYPE slis_layout_alv. START-OF-SELECTION. * 1. Read the data into the output table SELECT * FROM spfli INTO TABLE lt_spfli. * 2. Build the field catalog from the dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'LT_SPFLI' i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fieldcat. * 3. Set the layout and display the grid ls_layout-zebra = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_spfli.
処理の大部分は3つのパラメータによって行われます。I_STRUCTURE_NAMEは、フィールドカタログを辞書から生成するため、列を手動で記述する必要がありません。IS_LAYOUTは、ストライプ行と最適化された列幅を有効にします。I_SAVE = 'A'を指定すると、ユーザー固有の表示バリアントと標準表示バリアントの両方を、完成したリストから保存できます。
ブロック レポート
これは単純なレポートのように見えますが、このレポートには並べ替えとフィルタリングの機能しかありません。このレポートは、出力に複数のレポートを表示する必要がある場合に使用されます。技術的に言えば、個別のブロックとして表示するデータを含む複数の内部テーブルがある場合は、ALV のブロック レポートを使用します。
このレポートの作成に使用される重要な関数は次のとおりです。
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
この汎用モジュールは、デフォルトの GUI ステータスなどを設定するために使用されます。パラメータは、reuse_alv_list_display または reuse_alv_grid_display で使用されるものと似ています。
REUSE_ALV_BLOCK_LIST_APPEND
この汎用モジュールはデータをブロックに追加します。
重要なパラメータ
1.エクスポート:
- is_layout : ブロックのレイアウト設定
- it_fieldcat : フィールドカタログ
- I_tabname : 考えられるすべてのイベントを含む内部テーブル名
2.テーブル:
- t_outtab : 出力データを含む内部テーブル。
REUSE_ALV_BLOCK_LIST_DISPLAY
この汎用モジュールは、上記の関数によってデータが追加されたリストを表示します。
パラメータ : すべてのパラメータはオプションです。
階層レポート
階層表示は、関連するデータを表示するために使用されます。販売注文と商品の詳細などです。ここでは、販売注文の詳細はヘッダーデータになる可能性があり、販売注文内のアイテムはアイテムデータになる可能性があります。
これに使用される汎用モジュールは次のとおりです。
REUSE_ALV_HIERSEQ_LIST_DISPLAY
書き出す:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- イットフィールドキャット
- それ_イベント
- I_tabname_header : 最上位階層レベルの出力データを含むプログラム内の内部テーブルの名前。
- I_tabname_item : 最下位階層レベルの出力データを含むプログラム内の内部テーブルの名前。
- Is_keyinfo : この構造には、XNUMX つのテーブル (共有キー) をリンクするヘッダーと項目テーブルのフィールド名が含まれます。
テーブル類
- t_outtab_header : 出力するデータを含むヘッダー テーブル
- t_outtab_item : 最下位階層レベルの出力データを含むプログラム内の内部テーブルの名前。
内部テーブル、構造体、定数のすべての定義は、と呼ばれる型プールで宣言されます。 スリス。 この内部テーブルは、REUSE_ALV_FIELDCATALOG_MERGE' を使用して自動的に設定できます。
ディスプレイのバリエーション
- 表示バリアントは、並べ替え基準、フィルタリング基準、合計と小計などの alv 出力のデフォルトのプロパティを設定するために使用されます。
- 表示バリアントはユーザー固有および標準にすることができます (標準バリアントはどのユーザーでも使用できます)
- 保存可能な表示バリアントの種類は、関数モジュール reuse_alv_list_display / reuse_alv_grid_display に渡されるパラメータ i_save によって制御されます。
- 選択画面で、使用する表示バリアントを選択するオプションを提供できます。
表示バリアントの選択/検証に関連する共通の機能モジュールは次のとおりです。
- Reuse_alv_variant_default_get
- Reuse_alv_variant_f4
- Reuse_alv_variant_existence
💡ヒント: ユーザー固有のバリアントのみを許可する場合は I_SAVE に 'U' を、標準バリアントのみを許可する場合は 'X' を、両方を許可する場合は 'A' を渡してください。空の値を指定すると、保存が一切ブロックされます。
以上です ABAP – ALVプログラミング!
