首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

ABAP ALV 多行表頭實現:WRITE 命令 + TOP-OF-PAGE 事件

     編輯:關於C++

需求背景

標準 ALV 僅支援單行列標題。若需多行表頭(如分組標題+明細標題),需關閉標準列標題(no_colhead = 'X'),並在 TOP-OF-PAGE 事件中用 WRITE 手繪表頭。

實現步驟

  1. 建立報表程式,定義字段目錄 slis_fieldcat_alv、佈局 slis_layout_alv、事件表 slis_t_event。
  2. 調用 REUSE_ALV_EVENTS_GET 獲取標準事件,註冊 TOP-OF-PAGE 回調。
  3. 佈局設置 no_colhead = 'X' 關閉標準列標題。
  4. 調用 REUSE_ALV_LIST_DISPLAY 顯示,傳入字段目錄、事件表、內表數據。
  5. 在 FORM TOP-OF-PAGE 中用 ULINE、FORMAT COLOR、WRITE 繪製多行表頭。

關鍵代碼片段

" 關閉標準列標題
ALV_LAYOUT-no_colhead = 'X'.

" 註冊 TOP-OF-PAGE 事件
READ TABLE it_evt INTO wa_evt WITH KEY name = slis_ev_top_of_page.
wa_evt-form = 'TOP_OF_PAGE'.
MODIFY it_evt FROM wa_evt INDEX sy-tabix.

" 顯示 ALV
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    is_layout         = ALV_LAYOUT
    i_callback_program = sy-repid
    it_fieldcat       = t_alv_fieldcat[]
    it_events         = it_evt
  TABLES
    t_outtab          = ITAB.

" 手繪多行表頭
FORM TOP_OF_PAGE.
  ULINE AT 1(45).
  FORMAT COLOR 7.
  WRITE: / sy-vline, 02 'CARRID AND CONNID',
         23 SY-VLINE, 25 'PLANE & SEATS MAX', 45 SY-VLINE.
  WRITE: / sy-vline, 02 'CARRID', 12 SY-VLINE, 14 'CONNID',
         23 SY-VLINE, 25 'PLANE', 34 SY-VLINE, 36 'SEATS MAX', 45 SY-VLINE.
ENDFORM.

效果圖

多行表頭效果

關鍵點總結

擴展提示

  • 若需每頁重複表頭,TOP-OF-PAGE 自動滿足。
  • 動態列寬可根據字段目錄 outputlen 計算 WRITE 位置。
  • 更複雜表頭(合併儲存格、圖片)建議改用 SALV (CL_SALV_TABLE) 或 OOALV。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
技術點說明
no_colhead關閉標準列標題,騰出空間給自定義表頭
TOP-OF-PAGE每頁打印前觸發,適合畫固定表頭
WRITE 定位用列號精確控制列對齊,SY-VLINE 畫竪線
FORMAT COLOR設置背景色區分表頭區域