ABAP实现ALV表头的DEMO

xiaoxiao2021-02-28  98

*&---------------------------------------------------------------------* *& Report  Z_ALV_DEMO *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT  Z_ALV_DEMO NO STANDARD PAGE HEADING. TABLES ZEMP_TEST. DATA: IT_ZEMP TYPE STANDARD TABLE OF ZEMP_TEST,       IW_ZEMP TYPE ZEMP_TEST. TYPE-POOLS : SLIS. DATA :        IT_EVENT TYPE SLIS_T_EVENT, "不能有表头,否则会RUNTIME ERROR        IT_LISTHEADER TYPE SLIS_T_LISTHEADER. PARAMETERS P_DEPT TYPE ZEMP_TEST-EDEPT. START-OF-SELECTION.   PERFORM FRM_GET_EVENT.   PERFORM FRM_GET_DATA.   PERFORM FRM_COMMENT_BUILD.   PERFORM FRM_ALV_DISPLAY. *&---------------------------------------------------------------------* *&      Form  FRM_GET_DATA *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *  -->  p1        text *  <--  p2        text *----------------------------------------------------------------------* FORM FRM_GET_DATA .   SELECT *     FROM ZEMP_TEST     INTO TABLE IT_ZEMP    WHERE EDEPT = P_DEPT.   IF SY-SUBRC <> 0.     MESSAGE S001(00) WITH '不存在符合条件的数据' DISPLAY LIKE 'E'.     STOP.   ENDIF. ENDFORM.                    " FRM_GET_DATA *&---------------------------------------------------------------------* *&      Form  FRM_ALV_DISPLAY *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *  -->  p1        text *  <--  p2        text *----------------------------------------------------------------------* FORM FRM_ALV_DISPLAY .   DATA LW_REPID TYPE SY-REPID.   LW_REPID = SY-REPID.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'    EXPORTING *     I_INTERFACE_CHECK                 = ' ' *     I_BYPASSING_BUFFER                = ' ' *     I_BUFFER_ACTIVE                   = ' '      I_CALLBACK_PROGRAM                = LW_REPID *     I_CALLBACK_PF_STATUS_SET          = ' ' *     I_CALLBACK_USER_COMMAND           = ' ' *     I_CALLBACK_TOP_OF_PAGE            = ' ' *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' ' *     I_CALLBACK_HTML_END_OF_LIST       = ' '      I_STRUCTURE_NAME                  = 'ZEMP_TEST' *     I_BACKGROUND_ID                   = ' '      I_GRID_TITLE                      = 'ALV DEMO' *     I_GRID_SETTINGS                   = *     IS_LAYOUT                         = *     IT_FIELDCAT                       = *     IT_EXCLUDING                      = *     IT_SPECIAL_GROUPS                 = *     IT_SORT                           = *     IT_FILTER                         = *     IS_SEL_HIDE                       = *     I_DEFAULT                         = 'X' *     I_SAVE                            = ' ' *     IS_VARIANT                        =      IT_EVENTS                         = IT_EVENT *     IT_EVENT_EXIT                     = *     IS_PRINT                          = *     IS_REPREP_ID                      = *     I_SCREEN_START_COLUMN             = 0 *     I_SCREEN_START_LINE               = 0 *     I_SCREEN_END_COLUMN               = 0 *     I_SCREEN_END_LINE                 = 0 *     I_HTML_HEIGHT_TOP                 = 0 *     I_HTML_HEIGHT_END                 = 0 *     IT_ALV_GRAPHICS                   = *     IT_HYPERLINK                      = *     IT_ADD_FIELDCAT                   = *     IT_EXCEPT_QINFO                   = *     IR_SALV_FULLSCREEN_ADAPTER        = *   IMPORTING *     E_EXIT_CAUSED_BY_CALLER           = *     ES_EXIT_CAUSED_BY_USER            =     TABLES       T_OUTTAB                          = IT_ZEMP *   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.                    " FRM_ALV_DISPLAY *&---------------------------------------------------------------------* *&      Form  FRM_GET_EVENT *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *  -->  p1        text *  <--  p2        text *----------------------------------------------------------------------* FORM FRM_GET_EVENT . * EVENTS *SLIS_EV_ITEM_DATA_EXPAND  TYPE SLIS_FORMNAME VALUE 'ITEM_DATA_EXPAND', *SLIS_EV_REPREP_SEL_MODIFY TYPE SLIS_FORMNAME VALUE 'REPREP_SEL_MODIFY', *SLIS_EV_CALLER_EXIT_AT_START TYPE SLIS_FORMNAME VALUE 'CALLER_EXIT', *SLIS_EV_USER_COMMAND       TYPE SLIS_FORMNAME VALUE 'USER_COMMAND', *SLIS_EV_TOP_OF_PAGE        TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE', *SLIS_EV_DATA_CHANGED       TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED', *SLIS_EV_TOP_OF_COVERPAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_COVERPAGE', *SLIS_EV_END_OF_COVERPAGE  TYPE SLIS_FORMNAME VALUE 'END_OF_COVERPAGE', *SLIS_EV_FOREIGN_TOP_OF_PAGE TYPE SLIS_FORMNAME *                                       VALUE 'FOREIGN_TOP_OF_PAGE', *SLIS_EV_FOREIGN_END_OF_PAGE TYPE SLIS_FORMNAME *                                       VALUE 'FOREIGN_END_OF_PAGE', *SLIS_EV_PF_STATUS_SET      TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET', *SLIS_EV_LIST_MODIFY        TYPE SLIS_FORMNAME VALUE 'LIST_MODIFY', *SLIS_EV_TOP_OF_LIST        TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST', *SLIS_EV_END_OF_PAGE        TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE', *SLIS_EV_END_OF_LIST        TYPE SLIS_FORMNAME VALUE 'END_OF_LIST', *SLIS_EV_AFTER_LINE_OUTPUT TYPE SLIS_FORMNAME VALUE 'AFTER_LINE_OUTPUT', *SLIS_EV_BEFORE_LINE_OUTPUT TYPE SLIS_FORMNAME VALUE *                                                 'BEFORE_LINE_OUTPUT', *SLIS_EV_SUBTOTAL_TEXT      TYPE SLIS_FORMNAME VALUE 'SUBTOTAL_TEXT', *SLIS_EV_GROUPLEVEL_CHANGE  TYPE SLIS_FORMNAME VALUE *                                                  'GROUPLEVEL_CHANGE', *SLIS_EV_CONTEXT_MENU       TYPE SLIS_FORMNAME VALUE 'CONTEXT_MENU'.   DATA: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'FRM_TOP_OF_PAGE'.   DATA L_EVENTS TYPE SLIS_ALV_EVENT.   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'     EXPORTING       I_LIST_TYPE     = 0     IMPORTING       ET_EVENTS       = IT_EVENT     EXCEPTIONS       LIST_TYPE_WRONG = 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. * 在事件(字段名:NAME)为"TOP_OF_PAGE"的行中 *将FORM名(字段名:FORM)设为"FRM_TOP_OF_PAGE" * 这样,系统就会自动PERFORM FRM_TOP_OF_PAGE.   CLEAR L_EVENTS.   READ TABLE IT_EVENT         WITH KEY NAME = SLIS_EV_TOP_OF_PAGE         INTO L_EVENTS.   IF SY-SUBRC = 0.     MOVE FORMNAME_TOP_OF_PAGE TO L_EVENTS-FORM.     MODIFY IT_EVENT FROM L_EVENTS INDEX SY-TABIX.   ELSE.     L_EVENTS-FORM = FORMNAME_TOP_OF_PAGE.     L_EVENTS-NAME = FORMNAME_TOP_OF_PAGE.     APPEND L_EVENTS TO IT_EVENT.   ENDIF. ENDFORM.                    " FRM_GET_EVENT *&---------------------------------------------------------------------* *&      Form  FRM_TOP_OF_PAGE *&---------------------------------------------------------------------* *       表头 *----------------------------------------------------------------------* *  -->  p1        text *  <--  p2        text *----------------------------------------------------------------------* FORM  FRM_TOP_OF_PAGE.   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'     EXPORTING       IT_LIST_COMMENTARY       = IT_LISTHEADER       I_LOGO                   = 'ENJOYSAP_LOGO' *     I_END_OF_LIST_GRID       = *     I_ALV_FORM               =       . * "TCODE:OAOR,CLASS * NAME:PICTURES,CLASS TYPE :OT,执行,可以看到所有的PICTURE ENDFORM.                    "FRM_TOP_OF_PAGE *&---------------------------------------------------------------------* *&      Form  FRM_COMMENT_BUILD *&---------------------------------------------------------------------* *       text *----------------------------------------------------------------------* *  -->  p1        text *  <--  p2        text *----------------------------------------------------------------------* FORM FRM_COMMENT_BUILD .   DATA LW_LISTHEADER TYPE SLIS_LISTHEADER.   CLEAR: IT_LISTHEADER, LW_LISTHEADER.   LW_LISTHEADER-TYP  = 'H'.   LW_LISTHEADER-INFO = 'ALV DEMO'.   APPEND LW_LISTHEADER TO IT_LISTHEADER.   CLEAR LW_LISTHEADER.   LW_LISTHEADER-TYP  = 'S'.   LW_LISTHEADER-KEY  = '用户:'.   LW_LISTHEADER-INFO = SY-UNAME.   APPEND LW_LISTHEADER TO IT_LISTHEADER.   CLEAR LW_LISTHEADER.   LW_LISTHEADER-TYP  = 'S'.   LW_LISTHEADER-KEY  = '日期:'.   LW_LISTHEADER-INFO = SY-DATUM.   APPEND LW_LISTHEADER TO IT_LISTHEADER. ENDFORM.                    " FRM_COMMENT_BUILD
转载请注明原文地址: https://www.6miu.com/read-61492.html

最新回复(0)