zoukankan      html  css  js  c++  java
  • ABAP ALV 颜色设置(行,列,单元格)

     BCALV_EDIT_03

    http://blog.sina.com.cn/s/blog_a87b19300102who3.html

    关于ALV表格颜色,这种需求在项目中会经常用到。

    • 列颜色

    列的颜色很简单,在构成ALV字段的FIELDCAT内表中有一个字段是EMPHASIZE,将一个char型4位的颜色代码分配到FIELDCAT内表这个字段即可。

    1 LW_FCAT-EMPHASIZE = 'C710'. "设置字段的颜色
    2 
    3 MODIFY IT_FIELDCAT FROM LW_FCAT
    4 TRANSPORTING EMPHASIZE
    5 WHERE FIELDNAME = 'ESLRY'.
    • 行颜色

    1. 在构成ALV数据的内表中,添加一个char型4位的字段(CLR),用来记录颜色代码

    1 TABLES ZEMP_TEST.
    2 
    3 TYPES: BEGIN OF TY_ZEMP.
    4            INCLUDE STRUCTURE ZEMP_TEST.
    5 TYPES: CLR TYPE CHAR4,"可以控制行颜色
    6         END OF TY_ZEMP.
    7 
    8 DATA: IT_ZEMP TYPE STANDARD TABLE OF TY_ZEMP,
    9       IW_ZEMP TYPE TY_ZEMP.

    2. 循环内表,设置颜色代码

    1   LOOP AT IT_ZEMP INTO IW_ZEMP.
    2      "员工编号为‘3的行,颜色为红色
    3    IF IW_ZEMP-EMPID = '3'.
    4         IW_ZEMP-CLR = 'C610'.
    5         MODIFY IT_ZEMP FROM IW_ZEMP.
    6         CLEAR IW_ZEMP.
    7      ENDIF.
    8   ENDLOOP.

    3. LAYOUT结构中INFO_FIELDNAME的值指定为 CLR

      IW_LAYOUT-INFO_FIELDNAME = 'CLR'.  "行颜色代码的字段
    • 单元格颜色

    单元格颜色的设置与行颜色设计基本一致

    1. 在构成ALV数据的内表中,添加一个内表 CellColor,用来记录颜色代码,需要设置颜色的字段名

    1 TYPES: BEGIN OF TY_ZEMP.
    2        INCLUDE STRUCTURE ZEMP_TEST.
    3 TYPES: CLR TYPE CHAR4,
    4        CELLCOLOR TYPE LVC_T_SCOL, "单元格颜色
    5        END OF TY_ZEMP.

    CellColor的结构:FNAME        ALV 控制: 内部表字段的字段名称         

    COLOR        ALV 控制: 颜色代码     COLOR是一个结构:COL      ALV 控制: 颜色      

                                                                                INT      ALV 控制: 强化    1/0                                    

                                                                                INV      ALV 控制: 相反    1/0    设置颜色是前景,或者是背景         

    NOKEYCOL  ALV 控制: 覆盖码颜色

    2. 循环内表,设置颜色代码

     1   LOOP AT IT_ZEMP INTO IW_ZEMP.
     2 
     3      "员工编号为‘3’的行,颜色为红色
     4      IF IW_ZEMP-EMPID = '3'.
     5        IW_ZEMP-CLR = 'C610'.
     6 
     7        MODIFY IT_ZEMP FROM IW_ZEMP.
     8        CLEAR IW_ZEMP.
     9 
    10      ENDIF.
    11 
    12      IF IW_ZEMP-EMPID = '2'.
    13        IW_CELLCOLOR-FNAME = 'ENAME'.
    14        "员工编号为‘2’的行的‘ENAME’字段颜色为 黄色
    15        IW_CELLCOLOR-COLOR-COL = 3.
    16        IW_CELLCOLOR-COLOR-INT = 1.
    17        IW_CELLCOLOR-COLOR-INV = 0.
    18 
    19        APPEND IW_CELLCOLOR TO IW_ZEMP-CELLCOLOR.
    20        MODIFY IT_ZEMP FROM IW_ZEMP.
    21        CLEAR IW_ZEMP.
    22 
    23      ENDIF.
    24   ENDLOOP.

    3. LAYOUT结构中COLTAB_FIELDNAME的值指定为CELLCOLOR

      IW_LAYOUT-COLTAB_FIELDNAME = 'CELLCOLOR'. "单元格颜色内表字段

    最后在调用ALV函数时,设置layout,fieldcat参数

         IS_LAYOUT                         = IW_LAYOUT
         IT_FIELDCAT                       = IT_FIELDCAT
    • ALV工具栏

    可以自定义工具栏,或者添加标准ALV工具栏,然后去除一些不需要的功能,这样可以保留标准工具栏的功能

     1   DATA:BEGIN OF TAB OCCURS 0,
     2          FCODE LIKE RSMPE-FUNC,
     3        END OF TAB.
     4 
     5   TAB-FCODE = '&OL0'.APPEND TAB.
     6   TAB-FCODE = '&OAD'.APPEND TAB.
     7   TAB-FCODE = '&AVE'.APPEND TAB.
     8 
     9   SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'
    10   EXCLUDING TAB IMMEDIATELY.
    • 求和
    LW_FCAT-DO_SUM = 'X'.  "立即求和,只有I,F,P类型的列可以求和

    ----------------------------------------------------------

     运行效果如下:

     

    在SE38环境下的程序名输入栏输入’DEMO*’后按F4,你可以查到SAP所有的DEMO示例程序,会学到很多ABAP功能的实现方法,

    输入’BCALV*’后按F4,你可以查到很多ALV示例程序。

    附:ALV的颜色代码:http://blog.csdn.net/wren2004/article/details/3941551

      

    *----------------------------------------------------------------------------------------------------------------------------------、

      1 INCLUDE <icon>.
      2 
      3 INCLUDE <symbol>.
      4 
      5  
      6 
      7 TYPE-POOLS slis.
      8 
      9  
     10 
     11 TABLES spfli.
     12 
     13  
     14 
     15 TYPES: BEGIN OF ty_layout,
     16 
     17         exception(1),
     18 
     19         checkbox,
     20 
     21         icon TYPE icon_d,
     22 
     23         symbol TYPE icon_d,
     24 
     25         color(4),
     26 
     27         cell_color TYPE slis_t_specialcol_alv,
     28 
     29         hyperlink TYPE string,
     30 
     31         link_handle TYPE int4,
     32 
     33        END OF ty_layout.
     34 
     35 TYPES BEGIN OF ty_spfli.
     36 
     37 INCLUDE TYPE ty_layout.
     38 
     39 INCLUDE TYPE spfli.
     40 
     41 TYPES END OF ty_spfli.
     42 
     43 TYPES ty_tab_spfli TYPE ty_spfli OCCURS 0.
     44 
     45  
     46 
     47 PERFORM f_main.
     48 
     49  
     50 
     51 *&---------------------------------------------------------------------*
     52 
     53 *&      Form  f_main
     54 
     55 *&---------------------------------------------------------------------*
     56 
     57 *       ALV display
     58 
     59 *----------------------------------------------------------------------*
     60 
     61 FORM f_main.
     62 
     63   DATA: lt_spfli TYPE ty_tab_spfli,
     64 
     65         lt_fieldcat TYPE slis_t_fieldcat_alv,
     66 
     67         ls_layout TYPE slis_layout_alv,
     68 
     69         lt_hyperlink TYPE lvc_t_hype,
     70 
     71         lt_add_fieldcat TYPE slis_t_add_fieldcat.
     72 
     73  
     74 
     75   PERFORM get_data TABLES lt_spfli.
     76 
     77  
     78 
     79   PERFORM set_catalog CHANGING lt_fieldcat.
     80 
     81  
     82 
     83   PERFORM set_layout USING ls_layout.
     84 
     85  
     86 
     87   PERFORM hyperlink_build TABLES lt_hyperlink.
     88 
     89  
     90 
     91   PERFORM add_fieldcat_build TABLES lt_add_fieldcat.
     92 
     93  
     94 
     95   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     96 
     97     EXPORTING
     98 
     99       i_callback_program = sy-repid
    100 
    101       i_grid_title       = 'Xin''s ALV'
    102 
    103       it_fieldcat        = lt_fieldcat
    104 
    105       it_hyperlink       = lt_hyperlink
    106 
    107       is_layout          = ls_layout
    108 
    109       it_add_fieldcat    = lt_add_fieldcat
    110 
    111     TABLES
    112 
    113       t_outtab           = lt_spfli.
    114 
    115 ENDFORM.                    "f_main
    116 
    117  
    118 
    119 *&---------------------------------------------------------------------*
    120 
    121 *&      Form  set_layout
    122 
    123 *&---------------------------------------------------------------------*
    124 
    125 *       text
    126 
    127 *----------------------------------------------------------------------*
    128 
    129 *      -->P_LAYOUT   text
    130 
    131 *----------------------------------------------------------------------*
    132 
    133 FORM set_layout USING p_layout TYPE slis_layout_alv.
    134 
    135   p_layout-zebra = 'X'.
    136 
    137   p_layout-colwidth_optimize = 'X'.
    138 
    139   p_layout-window_titlebar = 'LinHuanXin''s ALV Demo'.
    140 
    141   p_layout-no_hline = 'X'.
    142 
    143   p_layout-no_vline = 'X'.
    144 
    145   p_layout-info_fieldname = 'COLOR'.
    146 
    147   p_layout-coltab_fieldname = 'CELL_COLOR'.
    148 
    149   p_layout-lights_fieldname = 'EXCEPTION'.
    150 
    151 ENDFORM.                    "set_layout
    152 
    153  
    154 
    155 *&---------------------------------------------------------------------*
    156 
    157 *&      Form  get_data
    158 
    159 *&---------------------------------------------------------------------*
    160 
    161 *       Get the data for output
    162 
    163 *----------------------------------------------------------------------*
    164 
    165 *      -->PT_SPFLI   data internal table
    166 
    167 *----------------------------------------------------------------------*
    168 
    169 FORM get_data TABLES pt_spfli TYPE ty_tab_spfli.
    170 
    171  
    172 
    173   DATA: lt_cell TYPE slis_t_specialcol_alv,
    174 
    175         ls_cell LIKE LINE OF lt_cell,
    176 
    177         lwa_spfli LIKE LINE OF pt_spfli.
    178 
    179  
    180 
    181   SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE pt_spfli.
    182 
    183  
    184 
    185   LOOP AT pt_spfli INTO lwa_spfli.
    186 
    187  
    188 
    189     IF lwa_spfli-distid = 'KM'.
    190 
    191       lwa_spfli-color = 'C610'.
    192 
    193     ENDIF.
    194 
    195     IF lwa_spfli-distance < 1000.
    196 
    197       CLEAR ls_cell.
    198 
    199       REFRESH lt_cell.
    200 
    201       ls_cell-fieldname = 'DISTANCE'.
    202 
    203       ls_cell-color-col = '4'.
    204 
    205       ls_cell-color-int = '1'.
    206 
    207       ls_cell-color-inv = '0'.
    208 
    209       ls_cell-nokeycol = 'X'.
    210 
    211       APPEND ls_cell TO lt_cell.
    212 
    213       lwa_spfli-cell_color = lt_cell.
    214 
    215       lwa_spfli-checkbox = 'X'.
    216 
    217       lwa_spfli-exception = '1'.
    218 
    219     ELSE.
    220 
    221       lwa_spfli-exception = '2'.
    222 
    223     ENDIF.
    224 
    225  
    226 
    227     lwa_spfli-link_handle = sy-tabix.
    228 
    229     lwa_spfli-hyperlink = 'www.163.com'.
    230 
    231     lwa_spfli-icon = icon_detail.
    232 
    233     lwa_spfli-symbol = sym_folder.
    234 
    235     MODIFY pt_spfli FROM lwa_spfli.
    236 
    237   ENDLOOP.
    238 
    239 ENDFORM.                    "get_data
    240 
    241  
    242 
    243 *&---------------------------------------------------------------------*
    244 
    245 *&      Form  add_fieldcat_build
    246 
    247 *&---------------------------------------------------------------------*
    248 
    249 *       text
    250 
    251 *----------------------------------------------------------------------*
    252 
    253 *      -->PT_FIELDCAT  text
    254 
    255 *----------------------------------------------------------------------*
    256 
    257 FORM add_fieldcat_build TABLES pt_fieldcat TYPE slis_t_add_fieldcat.
    258 
    259   DATA lwa_fieldcat LIKE LINE OF pt_fieldcat.
    260 
    261  
    262 
    263   lwa_fieldcat-fieldname = 'HYPERLINK'.
    264 
    265   lwa_fieldcat-web_field = 'LINK_HANDLE'.
    266 
    267   APPEND lwa_fieldcat TO pt_fieldcat.
    268 
    269 ENDFORM.                    "get_data
    270 
    271  
    272 
    273 *&---------------------------------------------------------------------*
    274 
    275 *&      Form  hyperlink_build
    276 
    277 *&---------------------------------------------------------------------*
    278 
    279 *       text
    280 
    281 *----------------------------------------------------------------------*
    282 
    283 *      -->PT_HYPERLINK  text
    284 
    285 *----------------------------------------------------------------------*
    286 
    287 FORM hyperlink_build TABLES pt_hyperlink TYPE lvc_t_hype.
    288 
    289   DATA lwa_hyperlink LIKE LINE OF pt_hyperlink.
    290 
    291  
    292 
    293   DO 13 TIMES.
    294 
    295     lwa_hyperlink-handle = sy-index.
    296 
    297     lwa_hyperlink-href   = 'www.sina.com.cn'.
    298 
    299     APPEND lwa_hyperlink TO pt_hyperlink.
    300 
    301   ENDDO.
    302 
    303   DO 13 TIMES.
    304 
    305     lwa_hyperlink-handle = 13 + sy-index.
    306 
    307     lwa_hyperlink-href   = 'www.163.com'.
    308 
    309     APPEND lwa_hyperlink TO pt_hyperlink.
    310 
    311   ENDDO.
    312 
    313  
    314 
    315 ENDFORM.                    "hyperlink_build
    316 
    317  
    318 
    319 *&---------------------------------------------------------------------*
    320 
    321 *&      Form  set_catalog
    322 
    323 *&---------------------------------------------------------------------*
    324 
    325 *       set fieldcatalog for alv output
    326 
    327 *----------------------------------------------------------------------*
    328 
    329 FORM set_catalog CHANGING pt_fieldcat TYPE slis_t_fieldcat_alv.
    330 
    331   DATA lwa_fieldcat TYPE slis_fieldcat_alv.
    332 
    333  
    334 
    335   "macro
    336 
    337   DEFINE add_field.
    338 
    339     clear lwa_fieldcat.
    340 
    341     lwa_fieldcat-fieldname = &1.
    342 
    343     lwa_fieldcat-seltext_l = &2.
    344 
    345     lwa_fieldcat-emphasize = &3.
    346 
    347     lwa_fieldcat-key = &4.
    348 
    349     lwa_fieldcat-fix_column = &4.
    350 
    351     append lwa_fieldcat to pt_fieldcat.
    352 
    353   END-OF-DEFINITION.
    354 
    355  
    356 
    357   "add field catalog
    358 
    359   add_field 'MANDT'     'Client'                 ''     'X'.
    360 
    361   add_field 'CARRID'    'Airline Code'           ''     'X'.
    362 
    363   add_field 'CONNID'    'Fight Number'           ''     'X'.
    364 
    365   add_field 'COUNTRYFR' 'Country From'           ''     ''.
    366 
    367   add_field 'CITYFROM'  'City From'              ''     ''.
    368 
    369   add_field 'AIRPFROM'  'Airpart From'           ''     ''.
    370 
    371   add_field 'COUNTRYTO' 'Country To'             'C510' ''.
    372 
    373   add_field 'CITYTO'    'City To'                ''     ''.
    374 
    375   add_field 'AIRPTO'    'Airpart To'             ''     ''.
    376 
    377   add_field 'FLTIME'    'Fly Time'               ''     ''.
    378 
    379   add_field 'DEPTIME'   'Dept Time'              ''     ''.
    380 
    381   add_field 'ARRTIME'   'Arrive Time'            ''     ''.
    382 
    383   add_field 'DISTANCE'  'Distance'               ''     ''.
    384 
    385   add_field 'DISTID'    'Mass unit of distance'  ''     ''.
    386 
    387   add_field 'FLTYPE'    'Flight type'            ''     ''.
    388 
    389   add_field 'PERIOD'    'Arrival n day(s) later' ''     ''.
    390 
    391   add_field 'HYPERLINK' 'HYPERLINK'              ''     ''.
    392 
    393  
    394 
    395   "checkbox
    396 
    397   CLEAR lwa_fieldcat.
    398 
    399   lwa_fieldcat-fieldname = 'CHECKBOX'.
    400 
    401   lwa_fieldcat-seltext_l = 'Checkbox'.
    402 
    403   lwa_fieldcat-checkbox = 'X'.
    404 
    405   lwa_fieldcat-fix_column = 'X'.
    406 
    407   APPEND lwa_fieldcat TO pt_fieldcat.
    408 
    409  
    410 
    411   "icon
    412 
    413   CLEAR lwa_fieldcat.
    414 
    415   lwa_fieldcat-fieldname = 'ICON'.
    416 
    417   lwa_fieldcat-seltext_l = 'Icon'.
    418 
    419   lwa_fieldcat-icon = 'X'.
    420 
    421   APPEND lwa_fieldcat TO pt_fieldcat.
    422 
    423  
    424 
    425   "symbol
    426 
    427   CLEAR lwa_fieldcat.
    428 
    429   lwa_fieldcat-fieldname = 'SYMBOL'.
    430 
    431   lwa_fieldcat-seltext_l = 'Symbol'.
    432 
    433   lwa_fieldcat-symbol = 'X'.
    434 
    435   APPEND lwa_fieldcat TO pt_fieldcat.
    436 
    437  
    438 
    439 ENDFORM.                    "set_catalog
    1 BUTN_TYPE                  按钮类型
    2                                                可用的按钮类型:
    3                                                   0 Button(normal)
    4                                                   1 Menu and default button
    5                                                   2 Menu
    6                                                   3 分割符
    7                                                   4 Radio button
    8                                                   5 Checkbox
    9                                                   6 Menu entry
  • 相关阅读:
    learning scala view collection
    scala
    learning scala dependency injection
    learning scala implicit class
    learning scala type alise
    learning scala PartialFunction
    learning scala Function Recursive Tail Call
    learning scala Function Composition andThen
    System.Threading.Interlocked.CompareChange使用
    System.Threading.Monitor的使用
  • 原文地址:https://www.cnblogs.com/mingdashu/p/color_alv.html
Copyright © 2011-2022 走看看