天天看點

帶有header的alv

做alv經常會要求帶有header和footer資訊,本文講解如何制作帶有header的alv,學會header之後,最後會貼出作者的代碼。

插入header的關鍵: 在調用REUSE_ALV_GRID_DISPLAY 的時候傳入一個subroutine給i_callback_top_of_page 參數,然後在該subroutine裡面寫代碼。 要記住,想要顯示header還必須傳入目前程式名(sy-repid)給i_callback_program 參數,否則會無法顯示。

以下是執行個體代碼:

TYPE-POOLS: slis.

TABLES: sflight.

*   Define internal table

DATA: gs_sflight TYPE sflight.

DATA: gt_sflight TYPE STANDARD TABLE OF sflight.

*   Define ALV control data

DATA: gs_layout TYPE slis_layout_alv.

DATA: gs_field_cat TYPE slis_fieldcat_alv.

DATA: gt_field_cat TYPE slis_t_fieldcat_alv.

START-OF-SELECTION.

  PERFORM sub_retrieve_data.

  PERFORM sub_set_alv_properties.

  PERFORM sub_alv_display.

*&---------------------------------------------------------------------*

*&      Form  SUB_RETRIEVE_DATA

*&---------------------------------------------------------------------*

*       Retrieve data

*----------------------------------------------------------------------*

FORM sub_retrieve_data .

  SELECT *

    INTO TABLE gt_sflight

    FROM sflight UP TO 20 ROWS.

ENDFORM.                    " SUB_RETRIEVE_DATA

*&---------------------------------------------------------------------*

*&      Form  SUB_ALV_DISPLAY

*&---------------------------------------------------------------------*

*       Display data

*----------------------------------------------------------------------*

FORM sub_alv_display .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program     = sy-repid

      i_callback_top_of_page = 'SUB_TOP_OF_PAGE'

      is_layout              = gs_layout

      it_fieldcat            = gt_field_cat

      i_save                 = 'X'

    TABLES

      t_outtab               = gt_sflight.

ENDFORM.                    " SUB_ALV_DISPLAY

*&---------------------------------------------------------------------*

*&      Form  SUB_SET_ALV_PROPERTIES

*&---------------------------------------------------------------------*

*       build field catelog and layout

*----------------------------------------------------------------------*

FORM sub_set_alv_properties .

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

      i_structure_name = 'SFLIGHT'

    CHANGING

      ct_fieldcat      = gt_field_cat.

  gs_layout-colwidth_optimize = 'X'.

ENDFORM.                    " SUB_SET_ALV_PROPERTIES

*&---------------------------------------------------------------------*

*&      Form  sub_top_of_page

*&---------------------------------------------------------------------*

*       subroutine to set header of ALV

*----------------------------------------------------------------------*

FORM sub_top_of_page.

  DATA: lt_header TYPE slis_t_listheader.

  DATA: ls_header TYPE slis_listheader.

  ls_header-typ = 'H'.

  ls_header-info = 'Flight Detailed Information'.

  APPEND ls_header TO lt_header.

  ls_header-typ = 'S'.

  ls_header-key = 'Date:'.

  ls_header-info = sy-datum.

  APPEND ls_header TO lt_header.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

      it_list_commentary = lt_header.

ENDFORM.                    "sub_top_of_page

繼續閱讀