【ABAP】ALV – ヘッダ情報出力(サンプルあり)

ABAP

ALV画面にヘッダを出力する方法を説明します。ツールバーのボタンやユーザコマンドに比べると使用頻度は少ないですが、初見でいきなりやってくれと言われても難しいのでここで紹介します。

ソースコードは下記投稿の続きです。

【ABAP】ALV – ツールバーのボタン変更(REUSE_ALV_GRID_DISPLAY編)

実装方法(サンプルコード)

追加箇所を青字、さらに肝になる箇所を赤字で記載しました。

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat              = it_fcat
      is_layout                = wa_layout
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'SET_GUI_STATUS'
      i_callback_user_command  = 'USER_COMMAND'
      i_callback_top_of_page   = 'TOP_OF_PAGE'
      it_excluding             = it_extab
    TABLES
      t_outtab                 = it_main
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

FORM top_of_page.
  DATA: lt_head TYPE slis_t_listheader,
        lw_head TYPE slis_listheader.

* タイプH
  CLEAR: lw_head.
  lw_head-typ   = 'H'.
  lw_head-key   = 'TYPE:H'.
  lw_head-info  = 'タイプHのテスト'.
  APPEND lw_head TO lt_head.

* タイプS
  CLEAR: lw_head.
  lw_head-typ   = 'S'.
  lw_head-key   = 'TYPE:S'.
  lw_head-info  = 'タイプSのテスト'.
  APPEND lw_head TO lt_head.

* タイプA
  CLEAR: lw_head.
  lw_head-typ   = 'A'.
  lw_head-key   = 'TYPE:A'.
  lw_head-info  = 'タイプAのテスト'.
  APPEND lw_head TO lt_head.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_head.

ENDFORM.

①汎用モジュールのパラメータ追加

「I_CALLBACK_PROGRAM」に呼出元のプログラムID、

「I_CALLBACK_TOP_OF_PAGE」にヘッダ出力処理を実装するサブルーチン名を指定します。

②ヘッダ出力処理用のサブルーチン追加

「I_CALLBACK」で始まるパラメータに共通する考え方ですが、パラメータに指定した名前でサブルーチンを定義します。

③ヘッダ出力用汎用モジュール呼出

標準で用意されている汎用モジュール「REUSE_ALV_COMMENTARY_WRITE」を使います。

ヘッダに出力できる書式は決まっていて3種類の中から用途に応じて選んでください。

項目「typ」で制御します。

サンプルプログラムでは、「typ」、「key」、「info」の3項目全てにセットしていますが、実行結果ではタイプH、Aの「key」が出てませんね。

こういう仕様であることを知った上で使ってください。

表示順は内部テーブルの順番に関係なく、タイプH、S、Aの順に表示されます。また、同一タイプで複数レコードを表示することもできます。

まとめ

開発をやっててもALVヘッダを出力する機会は少ないかもしれませんが、標準機能で用意されている仕組みを使えば簡単に実装できますので参考にしてください。

コメント

タイトルとURLをコピーしました