*&---------------------------------------------------------------------*
*& Report Z_09_ALV01
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_09_ALV01.
*REFERENCE TYPE POOL
TYPE-POOLS: SLIS.
*DATA HANDLE
DATA:GT_SFLIGHT LIKE TABLE OF SFLIGHT, "INNER TABLE
GW_SFLIGHT LIKE LINE OF GT_SFLIGHT. "WORK AREA
*ALV REFERENCE ABOUT DEFINE
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV, "DEFINE LAYOUT
GT_EVENT TYPE SLIS_T_EVENT, "It is the whole of events, which can be regarded as a collection of events. It can be used to write the header
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER, "DEFINE TOP_OF_PAGE'S HEADER TABLE.IT IS THE HEADER OF THE INNER TABLE
G_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. "
*VARIABLE DEFINE
DATA: GS_VARIANT LIKE DISVARIANT, " DISVARIANT显示器
G_REPID LIKE SY-REPID," GET PROGRAM NAME
G_SAVE.
*INITIALIZATION.RUN ONLY ONCE EVENT BLOCKS THAT RUN BEFORE ALL OF THE FOLLOWING EVENT BLOCKS RUN
INITIALIZATION. "ALV SETTING
PERFORM LAYOUT_INIT USING GS_LAYOUT.
PERFORM EVENT_BUILD USING GT_EVENT[]. "ADD [] REPRESENTATIVE USING INNER TABLE
G_REPID = SY-REPID.
GS_VARIANT-REPORT = G_REPID.
G_SAVE = 'A'.
*PROGRAM RUN EVENT BLOCKS
START-OF-SELECTION. "GET DATA
PERFORM FORM_SELECT_DATA TABLES GT_SFLIGHT.
END-OF-SELECTION. "SHOW ALV
*SETTING ALV HEADER
PERFORM SET_ALV_HEADER USING GT_LIST_TOP_OF_PAGE[].
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BACKGROUND_ID = 'ALV_BACKGROUND'
I_BUFFER_ACTIVE = 'X'
I_CALLBACK_PROGRAM = G_REPID
I_STRUCTURE_NAME = 'SFLIGHT'
IS_LAYOUT = GS_LAYOUT "SETTING ALV LAYOUT STYLE
I_SAVE = G_SAVE
IS_VARIANT = GS_VARIANT
IT_EVENTS = GT_EVENT[]
TABLES
T_OUTTAB = GT_SFLIGHT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC = 0. "IF EXCUTE SUCCESS
ENDIF.
*&---------------------------------------------------------------------*
*& Form FORM_SELECT_DATA
*&---------------------------------------------------------------------*
*& GET DATA FROM TABLE OF SFLIGHT
*&---------------------------------------------------------------------*
*& --> GT_SFLIGHT
*&---------------------------------------------------------------------*
FORM FORM_SELECT_DATA TABLES TT_SFLIGHT STRUCTURE SFLIGHT.
SELECT *
FROM SFLIGHT
INTO TABLE TT_SFLIGHT
UP TO 100 ROWS.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form LAYOUT_INIT
*&---------------------------------------------------------------------*
*& GET ALV LAYOUT
*&---------------------------------------------------------------------*
*& --> GS_LAYOUT
*&---------------------------------------------------------------------*
FORM LAYOUT_INIT USING GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
GS_LAYOUT-DETAIL_POPUP = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form EVENT_BUILD
*&---------------------------------------------------------------------*
*& CREATE TABLE HEADER
*&---------------------------------------------------------------------*
*& --> ET_EVENTS[]
*&---------------------------------------------------------------------*
FORM EVENT_BUILD USING ET_EVENT TYPE SLIS_T_EVENT.
"DEFINE ALV_EVENT
DATA: LS_EVENT TYPE SLIS_ALV_EVENT."AN EVENT, YOU NEED TO USE SLIS_ ALV_ EVENT APPEND TO SLIS_ T_ EVENT. IT CAN CONTAIN PICTURES AND LISTHEADER, WHICH MEANS THAT LISTHEADER AND OTHERS ARE DISPLAYED BY EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET' "GET ALV EVENT
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = ET_EVENT.
*THIS EVENT GENERATE TOP_OF_PAGE
READ TABLE ET_EVENT WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.
IF SY-SUBRC = 0."IF EXCUTE SUCCESS
MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM. "
APPEND LS_EVENT TO ET_EVENT.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_ALV_HEADER
*&---------------------------------------------------------------------*
*& CREATE ALV HEADER INFOMATION
*&---------------------------------------------------------------------*
*& --> GT_LIST_TOP_OF_PAGE[]
*&---------------------------------------------------------------------*
FORM SET_ALV_HEADER USING GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER."DEFINE TOP_OF_PAGE HEADER STRUCTURE
* LIST HEADING LINE: TYPE H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
LS_LINE-INFO = 'ALV 测试'.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
* STATUS LINE: TYPE S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Key1'.
LS_LINE-INFO = 'Key2'.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
LS_LINE-KEY = 'Key3'.
LS_LINE-INFO = 'Key4'.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
* ACTION LINE: TYPE A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
LS_LINE-INFO = '这是一个测试ALV说明'.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
ENDFORM.
*AUTO EXCUTE. GENERATE ALV HEADER
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'ENJOYSAP_LOGO'
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
ABAP 最简单的ALV DEMO
最新推荐文章于 2023-08-19 10:12:51 发布