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
  • 相关阅读:
    【Python】ModuleNotFoundError: No module named 'matplotlib.pyplot'
    【DB2】DB2使用IMPORT命令导入含有自增长列的表报错处理
    ~~
    汉字的unicode码范围是多少?
    字符编码(ASCII,Unicode和UTF-8) 和 大小端(zz)
    是否 whether ,if
    定语从句:
    by,with
    C++中extern “C”含义深层探索
    安装Office2007时出现1706错误的解决方案
  • 原文地址:https://www.cnblogs.com/mingdashu/p/color_alv.html
Copyright © 2011-2022 走看看