特点:这个方法很方便使用ALV进行显示
REPORT ztest_alv_reuse.
*&----TYPE-POOLS--------------------------------------------------------*
TYPE-POOLS: slis.
*&----TABLES------------------------------------------------------------*
TABLES: makt.
DATA: gt_fieldcat_slis TYPE slis_t_fieldcat_alv.
DATA: BEGIN OF gt_makt OCCURS 0.
INCLUDE STRUCTURE makt.
DATA: END OF gt_makt.
DATA: gw_makt TYPE makt.
DATA: gv_repid TYPE sy-repid.
*&----SELECT-OPTIONS-------------------------------------------*
SELECT-OPTIONS: so_matnr FOR makt-matnr.
*&----START-OF-SELECTION---------------------------------------*
START-OF-SELECTION.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_makt
FROM makt
WHERE matnr IN so_matnr.
*-----ALV output--------------------------------------
gv_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = gv_repid
i_internal_tabname = 'GT_MAKT'
i_inclname = gv_repid
* I_STRUCTURE_NAME =
* i_inclname = v_repid =
* i_bypassing_buffer =
* i_buffer_active =
CHANGING
ct_fieldcat = gt_fieldcat_slis
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.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* i_bypassing_buffer =
* i_buffer_active =
i_callback_program = gv_repid
it_fieldcat = gt_fieldcat_slis
* i_save =
* it_events =
TABLES
t_outtab = gt_makt
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.