ALVレポート SAP チュートリアル – ABAP リスト ビューア

⚡ スマートサマリー

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

  • ???? 主な目的: ABAPリストビューアは、既製の関数モジュールを通じて標準リスト機能を提供するため、それらを再度プログラミングする必要はありません。
  • 🗂️ フィールドカタログ: REUSE_ALV_FIELDCATALOG_MERGE は、各出力列を記述するカタログを作成します。このカタログは手動で入力することもできます。
  • 甘いもの<XNUMXxXNUMX><XNUMXxXNUMX><XNUMXxAXNUMX><XNUMXxAXNUMX>️️ リストとグリッド: REUSE_ALV_LIST_DISPLAYは従来のリストを印刷し、REUSE_ALV_GRID_DISPLAYは同じデータをグリッドコントロールに表示します。
  • 🧱 ブロックレポート: INIT、APPEND、およびDISPLAYは、複数の内部テーブルを結合して、個別のブロックで構成される1つの出力を作成します。
  • 🌳 階層型レポート: REUSE_ALV_HIERSEQ_LIST_DISPLAY は、IS_KEYINFO の共有キーを介してヘッダー テーブルとアイテム テーブルをリンクします。
  • 🧰 タイププールSLIS: 従来のALVで使用されるすべての構造体、テーブル型、および定数は、型プールSLISで宣言されています。
  • 💾 表示バリエーション: バリアントには、ソート、フィルタリング、および集計のデフォルト値が格納され、I_SAVE パラメータによって、それがユーザー固有のものか標準のものかが決まります。

ALVレポート SAP ABAP

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 つのフィールドがあります。

  1. タイプ: 'H' – ヘッダー、'S' – 選択、'A' – アクション
  2. キー: typ が 'S' の場合のみ。
  3. 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 によって制御されます。
  • 選択画面で、使用する表示バリアントを選択するオプションを提供できます。

表示バリアントの選択/検証に関連する共通の機能モジュールは次のとおりです。

  1. Reuse_alv_variant_default_get
  2. Reuse_alv_variant_f4
  3. Reuse_alv_variant_existence

💡ヒント: ユーザー固有のバリアントのみを許可する場合は I_SAVE に 'U' を、標準バリアントのみを許可する場合は 'X' を、両方を許可する場合は 'A' を渡してください。空の値を指定すると、保存が一切ブロックされます。

以上です ABAP – ALVプログラミング!

よくあるご質問

REUSEモジュールは、従来の機能ベースのALVに属します。CL_GUI_ALV_GRIDは、ダイナミックプログラミング画面上のカスタムコンテナに組み込まれたオブジェクト指向コントロールであり、メソッドによる編集可能なセルとイベント処理機能を提供します。

追加する列のフィールドカタログでDO_SUMを設定し、行をグループ化する列に対してSUBTOTを有効にしたソートテーブルを渡します。追加の計算コードは不要です。

I_CALLBACK_USER_COMMAND にフォーム名を渡します。フォームは機能コードと選択された行を受け取り、プログラムはレコードを読み取って詳細リストまたはトランザクションを開くことができます。

はい。ABAP開発ツールのAIアシスタントは、必要な列の説明に基づいて、SELECT文、フィールドカタログ、およびREUSE_ALV_GRID_DISPLAY関数の呼び出しを生成します。生成されたSELECT文についても、パフォーマンスチェックが必要です。

いいえ。ALVは標準出力のままです。 SAP GUIレポートに加え、AIアシスタントは、長いリストを要約したり、異常値を検出したり、表示されたデータに関する質問に分かりやすい言葉で回答したりすることで、さらに付加価値を提供します。