zoukankan      html  css  js  c++  java
  • ABAP ALV表头的实现

    ABAP实现ALV表头的DEMO:

    效果:

    源代码:

      1 *&---------------------------------------------------------------------*
      2 *& Report  Z_ALV_DEMO
      3 *&
      4 *&---------------------------------------------------------------------*
      5 *&
      6 *&
      7 *&---------------------------------------------------------------------*
      8 
      9 REPORT  Z_ALV_DEMO NO STANDARD PAGE HEADING.
     10 
     11 
     12 
     13 TABLES ZEMP_TEST.
     14 
     15 DATA: IT_ZEMP TYPE STANDARD TABLE OF ZEMP_TEST,
     16       IW_ZEMP TYPE ZEMP_TEST.
     17 
     18 
     19 TYPE-POOLS : SLIS.
     20 DATA :
     21        IT_EVENT TYPE SLIS_T_EVENT, "不能有表头,否则会RUNTIME ERROR
     22        IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
     23 
     24 PARAMETERS P_DEPT TYPE ZEMP_TEST-EDEPT.
     25 
     26 START-OF-SELECTION.
     27 
     28   PERFORM FRM_GET_EVENT.
     29 
     30   PERFORM FRM_GET_DATA.
     31 
     32   PERFORM FRM_COMMENT_BUILD.
     33 
     34   PERFORM FRM_ALV_DISPLAY.
     35 
     36 *&---------------------------------------------------------------------*
     37 *&      Form  FRM_GET_DATA
     38 *&---------------------------------------------------------------------*
     39 *       text
     40 *----------------------------------------------------------------------*
     41 *  -->  p1        text
     42 *  <--  p2        text
     43 *----------------------------------------------------------------------*
     44 FORM FRM_GET_DATA .
     45 
     46   SELECT *
     47     FROM ZEMP_TEST
     48     INTO TABLE IT_ZEMP
     49    WHERE EDEPT = P_DEPT.
     50 
     51   IF SY-SUBRC <> 0.
     52     MESSAGE S001(00) WITH '不存在符合条件的数据' DISPLAY LIKE 'E'.
     53     STOP.
     54   ENDIF.
     55 
     56 ENDFORM.                    " FRM_GET_DATA
     57 
     58 
     59 
     60 
     61 *&---------------------------------------------------------------------*
     62 *&      Form  FRM_ALV_DISPLAY
     63 *&---------------------------------------------------------------------*
     64 *       text
     65 *----------------------------------------------------------------------*
     66 *  -->  p1        text
     67 *  <--  p2        text
     68 *----------------------------------------------------------------------*
     69 FORM FRM_ALV_DISPLAY .
     70   DATA LW_REPID TYPE SY-REPID.
     71   LW_REPID = SY-REPID.
     72 
     73   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     74    EXPORTING
     75 *     I_INTERFACE_CHECK                 = ' '
     76 *     I_BYPASSING_BUFFER                = ' '
     77 *     I_BUFFER_ACTIVE                   = ' '
     78      I_CALLBACK_PROGRAM                = LW_REPID
     79 *     I_CALLBACK_PF_STATUS_SET          = ' '
     80 *     I_CALLBACK_USER_COMMAND           = ' '
     81 *     I_CALLBACK_TOP_OF_PAGE            = ' '
     82 *     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
     83 *     I_CALLBACK_HTML_END_OF_LIST       = ' '
     84      I_STRUCTURE_NAME                  = 'ZEMP_TEST'
     85 *     I_BACKGROUND_ID                   = ' '
     86      I_GRID_TITLE                      = 'ALV DEMO'
     87 *     I_GRID_SETTINGS                   =
     88 *     IS_LAYOUT                         =
     89 *     IT_FIELDCAT                       =
     90 *     IT_EXCLUDING                      =
     91 *     IT_SPECIAL_GROUPS                 =
     92 *     IT_SORT                           =
     93 *     IT_FILTER                         =
     94 *     IS_SEL_HIDE                       =
     95 *     I_DEFAULT                         = 'X'
     96 *     I_SAVE                            = ' '
     97 *     IS_VARIANT                        =
     98      IT_EVENTS                         = IT_EVENT
     99 *     IT_EVENT_EXIT                     =
    100 *     IS_PRINT                          =
    101 *     IS_REPREP_ID                      =
    102 *     I_SCREEN_START_COLUMN             = 0
    103 *     I_SCREEN_START_LINE               = 0
    104 *     I_SCREEN_END_COLUMN               = 0
    105 *     I_SCREEN_END_LINE                 = 0
    106 *     I_HTML_HEIGHT_TOP                 = 0
    107 *     I_HTML_HEIGHT_END                 = 0
    108 *     IT_ALV_GRAPHICS                   =
    109 *     IT_HYPERLINK                      =
    110 *     IT_ADD_FIELDCAT                   =
    111 *     IT_EXCEPT_QINFO                   =
    112 *     IR_SALV_FULLSCREEN_ADAPTER        =
    113 *   IMPORTING
    114 *     E_EXIT_CAUSED_BY_CALLER           =
    115 *     ES_EXIT_CAUSED_BY_USER            =
    116     TABLES
    117       T_OUTTAB                          = IT_ZEMP
    118 *   EXCEPTIONS
    119 *     PROGRAM_ERROR                     = 1
    120 *     OTHERS                            = 2
    121             .
    122   IF SY-SUBRC <> 0.
    123 *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    124 *           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    125   ENDIF.
    126 
    127 ENDFORM.                    " FRM_ALV_DISPLAY
    128 *&---------------------------------------------------------------------*
    129 *&      Form  FRM_GET_EVENT
    130 *&---------------------------------------------------------------------*
    131 *       text
    132 *----------------------------------------------------------------------*
    133 *  -->  p1        text
    134 *  <--  p2        text
    135 *----------------------------------------------------------------------*
    136 FORM FRM_GET_EVENT .
    137 
    138 * EVENTS
    139 *SLIS_EV_ITEM_DATA_EXPAND  TYPE SLIS_FORMNAME VALUE 'ITEM_DATA_EXPAND',
    140 *SLIS_EV_REPREP_SEL_MODIFY TYPE SLIS_FORMNAME VALUE 'REPREP_SEL_MODIFY',
    141 *SLIS_EV_CALLER_EXIT_AT_START TYPE SLIS_FORMNAME VALUE 'CALLER_EXIT',
    142 *SLIS_EV_USER_COMMAND       TYPE SLIS_FORMNAME VALUE 'USER_COMMAND',
    143 *SLIS_EV_TOP_OF_PAGE        TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
    144 *SLIS_EV_DATA_CHANGED       TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED',
    145 *SLIS_EV_TOP_OF_COVERPAGE  TYPE SLIS_FORMNAME VALUE 'TOP_OF_COVERPAGE',
    146 *SLIS_EV_END_OF_COVERPAGE  TYPE SLIS_FORMNAME VALUE 'END_OF_COVERPAGE',
    147 *SLIS_EV_FOREIGN_TOP_OF_PAGE TYPE SLIS_FORMNAME
    148 *                                       VALUE 'FOREIGN_TOP_OF_PAGE',
    149 *SLIS_EV_FOREIGN_END_OF_PAGE TYPE SLIS_FORMNAME
    150 *                                       VALUE 'FOREIGN_END_OF_PAGE',
    151 *SLIS_EV_PF_STATUS_SET      TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET',
    152 *SLIS_EV_LIST_MODIFY        TYPE SLIS_FORMNAME VALUE 'LIST_MODIFY',
    153 *SLIS_EV_TOP_OF_LIST        TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST',
    154 *SLIS_EV_END_OF_PAGE        TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE',
    155 *SLIS_EV_END_OF_LIST        TYPE SLIS_FORMNAME VALUE 'END_OF_LIST',
    156 *SLIS_EV_AFTER_LINE_OUTPUT TYPE SLIS_FORMNAME VALUE 'AFTER_LINE_OUTPUT',
    157 *SLIS_EV_BEFORE_LINE_OUTPUT TYPE SLIS_FORMNAME VALUE
    158 *                                                 'BEFORE_LINE_OUTPUT',
    159 *SLIS_EV_SUBTOTAL_TEXT      TYPE SLIS_FORMNAME VALUE 'SUBTOTAL_TEXT',
    160 *SLIS_EV_GROUPLEVEL_CHANGE  TYPE SLIS_FORMNAME VALUE
    161 *                                                  'GROUPLEVEL_CHANGE',
    162 *SLIS_EV_CONTEXT_MENU       TYPE SLIS_FORMNAME VALUE 'CONTEXT_MENU'.
    163 
    164   DATA: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'FRM_TOP_OF_PAGE'.
    165 
    166   DATA L_EVENTS TYPE SLIS_ALV_EVENT.
    167 
    168   CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    169     EXPORTING
    170       I_LIST_TYPE     = 0
    171     IMPORTING
    172       ET_EVENTS       = IT_EVENT
    173     EXCEPTIONS
    174       LIST_TYPE_WRONG = 1
    175       OTHERS          = 2.
    176   IF SY-SUBRC <> 0.
    177     MESSAGE ID SY-MSGID TYPE SY-MSGTY
    178         NUMBER SY-MSGNO
    179           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    180   ENDIF.
    181 * 在事件(字段名:NAME)为"TOP_OF_PAGE"的行中
    182 *将FORM名(字段名:FORM)设为"FRM_TOP_OF_PAGE"
    183 * 这样,系统就会自动PERFORM FRM_TOP_OF_PAGE.
    184   CLEAR L_EVENTS.
    185   READ TABLE IT_EVENT
    186         WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
    187         INTO L_EVENTS.
    188 
    189   IF SY-SUBRC = 0.
    190     MOVE FORMNAME_TOP_OF_PAGE TO L_EVENTS-FORM.
    191     MODIFY IT_EVENT FROM L_EVENTS INDEX SY-TABIX.
    192   ELSE.
    193     L_EVENTS-FORM = FORMNAME_TOP_OF_PAGE.
    194     L_EVENTS-NAME = FORMNAME_TOP_OF_PAGE.
    195     APPEND L_EVENTS TO IT_EVENT.
    196   ENDIF.
    197 
    198 ENDFORM.                    " FRM_GET_EVENT
    199 
    200 *&---------------------------------------------------------------------*
    201 *&      Form  FRM_TOP_OF_PAGE
    202 *&---------------------------------------------------------------------*
    203 *       表头
    204 *----------------------------------------------------------------------*
    205 *  -->  p1        text
    206 *  <--  p2        text
    207 *----------------------------------------------------------------------*
    208 FORM  FRM_TOP_OF_PAGE.
    209   CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    210     EXPORTING
    211       IT_LIST_COMMENTARY       = IT_LISTHEADER
    212       I_LOGO                   = 'ENJOYSAP_LOGO'
    213 *     I_END_OF_LIST_GRID       =
    214 *     I_ALV_FORM               =
    215       .
    216 * "TCODE:OAOR,CLASS
    217 * NAME:PICTURES,CLASS TYPE :OT,执行,可以看到所有的PICTURE
    218 
    219 ENDFORM.                    "FRM_TOP_OF_PAGE
    220 *&---------------------------------------------------------------------*
    221 *&      Form  FRM_COMMENT_BUILD
    222 *&---------------------------------------------------------------------*
    223 *       text
    224 *----------------------------------------------------------------------*
    225 *  -->  p1        text
    226 *  <--  p2        text
    227 *----------------------------------------------------------------------*
    228 FORM FRM_COMMENT_BUILD .
    229   DATA LW_LISTHEADER TYPE SLIS_LISTHEADER.
    230 
    231   CLEAR: IT_LISTHEADER, LW_LISTHEADER.
    232 
    233   LW_LISTHEADER-TYP  = 'H'.
    234   LW_LISTHEADER-INFO = 'ALV DEMO'.
    235   APPEND LW_LISTHEADER TO IT_LISTHEADER.
    236 
    237   CLEAR LW_LISTHEADER.
    238   LW_LISTHEADER-TYP  = 'S'.
    239   LW_LISTHEADER-KEY  = '用户:'.
    240   LW_LISTHEADER-INFO = SY-UNAME.
    241   APPEND LW_LISTHEADER TO IT_LISTHEADER.
    242 
    243   CLEAR LW_LISTHEADER.
    244   LW_LISTHEADER-TYP  = 'S'.
    245   LW_LISTHEADER-KEY  = '日期:'.
    246   LW_LISTHEADER-INFO = SY-DATUM.
    247   APPEND LW_LISTHEADER TO IT_LISTHEADER.
    248 
    249 ENDFORM.                    " FRM_COMMENT_BUILD
  • 相关阅读:
    ASP.NET MVC 5 学习教程:使用 SQL Server LocalDB
    ASP.NET MVC 5 学习教程:生成的代码详解
    ASP.NET MVC 5 学习教程:通过控制器访问模型的数据
    ASP.NET MVC 5 学习教程:创建连接字符串
    ASP.NET MVC 5 学习教程:添加模型
    ASP.NET MVC 5 学习教程:控制器传递数据给视图
    ASP.NET MVC 5 学习教程:修改视图和布局页
    ASP.NET MVC 5 学习教程:添加视图
    ASP.NET MVC 5 学习教程:添加控制器
    ASP.NET MVC 5 学习教程:快速入门
  • 原文地址:https://www.cnblogs.com/mingdashu/p/ALV.html
Copyright © 2011-2022 走看看