自定义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

posted @ 2017-09-29 15:37  独吊东南枝  阅读(571)  评论(0编辑  收藏  举报