自定义ALV工具栏
TYPE-POOLS:slis.
DATA:fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
layout TYPE slis_layout_alv,
w_repid LIKE sy-repid.
DATA:lspfli LIKE STANDARD TABLE OF spfli WITH HEADER LINE.
START-OF-SELECTION.
PERFORM getdata.
PERFORM catalog.
PERFORM alvshow.
*&---------------------------------------------------------------------*
*& Form sub_status
*&------------------------- 设置调用ALV工具栏---------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM sub_status USING extab TYPE slis_t_extab.
DATA:BEGIN OF tab OCCURS 0,
fcode LIKE rsmpe-func,
END OF tab.
*设置隐藏工具栏按钮Function Key
tab-fcode = '&OL0'.
APPEND tab.
tab-fcode = '&OAD'.
APPEND tab.
tab-fcode = '&AVE'.
APPEND tab.
*设置引用系统标准ALV ToolBar
SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'
EXCLUDING tab IMMEDIATELY.
*此处也可以引用自定义的ALV ToolBar,如SET PF-STATUS '01',不过弃用自定义ToolBar需要设置
ENDFORM. "sub_status
*&---------------------------------------------------------------------*
*& Form getdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM getdata.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE lspfli
UP TO 10 ROWS.
ENDFORM. "getdata
*&---------------------------------------------------------------------*
*& Form catalog 通过系统函数获取FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM catalog.
w_repid = sy-repid.
CLEAR fieldcat.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = w_repid
i_structure_name = 'SPFLI'
CHANGING
ct_fieldcat = fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
layout-colwidth_optimize = 'X'."设置ALV字段宽度最优化
ENDFORM. "catalog
*&---------------------------------------------------------------------*
*& Form alvshow 调用ALV显示函数
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alvshow.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
is_layout = layout
it_fieldcat = fieldcat[]
i_grid_title = 'ALV REPORT TEST'
i_callback_pf_status_set = 'SUB_STATUS'
TABLES
t_outtab = lspfli
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "alvshow