ABAP 最简单的ALV DEMO

*&---------------------------------------------------------------------*
*& 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.
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值