1)颜色含义

1:海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7:橙色。
(1)首位为主颜色;
(2)次位为辅助颜色;
(3)末位为0时,表示首位数字表为表格的底色;
末位为1时,则表示以1为底色,首位数字则表为表格字体的颜色;
末位为其它颜色时,则表示底色为ALV的默认颜色;
以上三条是本人大概总结出来的规律,本人发现的现象基本如上,但也不一定全部正确。
其中C200与系统标准ALV底色比较相似;C410与系统标准关键字颜色比较相似。

2)列颜色:
在 slis_t_fieldcat_alv-emphasize 中,写入需要的颜色代码。
Eg:
DATA: fc TYPE slis_t_fieldcat_alv WITH HEADER LINE.
       fc-tabname = 'ITAB'.
       fc-fieldname = 'COL'. "列名
       fc-emphasize = 'C100'."颜色
      append fc.

设置ALV字段fieldcat属性:i_fieldcat-emphasize = &3. "颜色
把fieldcat属性写入属性内表allfields:alv_append_field 'WERKS' '工厂' 'C110'.
C110:为颜色代码;

data: i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE

i_fieldcat-emphasize = 'C100'. "颜色代码

3)行颜色:
(1)在内表itab定义一个字段style来存储颜色;loop内表itab,在需要显示颜色的行为其值赋为颜色'C110';
(2)在定义alv显示格式定义:
设置ALV显示layout属性:i_layout-info_fieldname = 'STYLE',STYLE为内表定义的存储颜色的列名。

a.在要输出的 itab 中,加入 color 列,类型为C(4),记录需要的颜色代码。
b.设置 layout。alv_layout-info_fieldname = 'COLOR'.

Eg: DATA: BEGIN OF itab OCCURS 0.
                   INCLUDE STRUCTURE itab.
                   DATA: color(4) TYPE c.
    DATA: END OF itab.

DATA: alv_layout TYPE slis_layout_alv.
    
    "内表赋值   
    itab-matnr = '123'.
    itab-color = 'C200'.
    APPEND itab.

alv_layout-info_fieldname = 'COLOR'. 
    
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
         is_layout   = alv_layout
      TABLES
         it_outtab      = itab.

4)单元格颜色
单元格颜色属性:LVC_S_SCOL(类方式) ,该属性为一结构,含三个字段:FNAME(30)、COLOR(颜色结构,含三个字段:col(10)、int(3)、inv(10))、NOKEYCOL(1)(覆盖码颜色)
单元格颜色属性:slis_t_specialcol_alv,该属性为一结构,含三个字段:FIELDNAME(30)、COLOR(颜色结构,含三个字段:col(10)、int(3)、inv(10))、NOKEYCOL(1)(覆盖码颜色)

eg:
定义内表itab含字段FLDNAME type LVC_S_SCOL;
定义内表itab含字段FLDNAME type slis_t_specialcol_alv;

ALV列属性:coltab_fieldname = 'FLDNAME'.

DATA: BEGIN OF itab_test3 OCCURS 0.
        INCLUDE STRUCTURE itab_test.
DATA: FLDNAME TYPE slis_t_specialcol_alv.
DATA: END OF itab_test3.

定义单元格颜色结构内表cellcolor type slis_t_specialcol_alv with header line;

循环内表,当要设置单元格颜色所在的列字段colname要设置颜色时

refresh cellcolor.
cellcolor-FIELDNAME =‘COLNAME’. "列名
cellcolor-COLOR-col =‘2’.(颜色代码)
cellcolor-COLOR-int =‘1’.
cellcolor-COLOR-inv =‘0’.

APPEND cellcolor.
CONCATENATE '2' '10' INTO itab_test3-colname. "把颜色值赋给该列

" 更新内表对应存放字段
itab_test3-fldname[] = cellcolor[].
APPEND itab_test3.

" 显示单元格颜色
DATA: alv_layout   TYPE slis_layout_alv.
alv_layout-coltab_fieldname = 'FLDNAME'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
      is_layout    = alv_layout
   TABLES
      it_outtab       = itab_test3.

*&---------------------------------------------------------------------*
*& Report YLPY_ALV004
*&
*&---------------------------------------------------------------------*
*& ALV 行、列、单元格颜色设置
*&
*&---------------------------------------------------------------------*

REPORT ylpy_alv004.

TYPE-POOLS: slis.

*一共定义3个内表.
*itab1 :设置列颜色,
*itab2 :设置行颜色.
*itab3 :设置单元格颜色.

DATA: BEGIN OF itab_test OCCURS 0,
        col1(4) TYPE c,
        col2(4) TYPE c,
        col3(4) TYPE c,
        col4(4) TYPE c,
        col5(4) TYPE c,
        col6(4) TYPE c,
      END OF itab_test .

* 显示行颜色
DATA: BEGIN OF itab_test2 OCCURS 0.
        INCLUDE STRUCTURE itab_test.
DATA: color(4) TYPE c. "定义行颜色字段
DATA: END OF itab_test2.

* 显示单元格颜色
DATA: BEGIN OF itab_test3 OCCURS 0.
        INCLUDE STRUCTURE itab_test.
DATA: color TYPE slis_t_specialcol_alv.
DATA: END OF itab_test3.

DATA: fc TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      fc2 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      fc3 TYPE slis_t_fieldcat_alv WITH HEADER LINE.

START-OF-SELECTION.
PERFORM create_data. "构建内表数据

END-OF-SELECTION.
PERFORM fieldcat_build. "构建列表头
PERFORM show_alv.

*&---------------------------------------------------------------------*
*&      Form create_data
*&---------------------------------------------------------------------*
*      构建内表数据
*----------------------------------------------------------------------*
FORM create_data.

DATA: l_color(4) TYPE c,
        l_char     TYPE c,
        i          TYPE i.

DATA: color_wa TYPE slis_t_specialcol_alv WITH HEADER LINE."单元格颜色属性内表

REFRESH itab_test.
REFRESH itab_test2.
REFRESH itab_test3.
REFRESH fc.
REFRESH fc2.
REFRESH fc3.

WHILE sy-index < 8.
* 内表 1
    itab_test-col1 = ( sy-index - 1 ) * 6 + 1.
    itab_test-col2 = ( sy-index - 1 ) * 6 + 2.
    itab_test-col3 = ( sy-index - 1 ) * 6 + 3.
    itab_test-col4 = ( sy-index - 1 ) * 6 + 4.
    itab_test-col5 = ( sy-index - 1 ) * 6 + 5.
    itab_test-col6 = ( sy-index - 1 ) * 6 + 6.
    APPEND itab_test.

* 内表 2
    MOVE-CORRESPONDING itab_test TO itab_test2.
    l_char = sy-index.

i = sy-index MOD 2. "根据奇偶数构建行颜色值
    IF i = 0.
      CONCATENATE 'C' l_char '01' INTO l_color.
    ELSE.
      CONCATENATE 'C' l_char '10' INTO l_color.
    ENDIF.
    itab_test2-color = l_color.
    APPEND itab_test2.

* 内表 3
    MOVE-CORRESPONDING itab_test TO itab_test3. "转移数据到itab_test3内表
    REFRESH color_wa.

" 第一列颜色
    color_wa-color-col = l_char.
    color_wa-color-int = '0'.
    color_wa-color-inv = '0'.
    color_wa-fieldname = 'COL1'.
   
    APPEND color_wa.
    CONCATENATE l_char '00' INTO itab_test3-col1.

" 第二列颜色
    color_wa-color-int = '0'.
    color_wa-color-inv = '1'.
    color_wa-fieldname = 'COL2'.
    APPEND color_wa.
    CONCATENATE l_char '01' INTO itab_test3-col2.

" 第三列颜色
    color_wa-color-int = '1'.
    color_wa-color-inv = '0'.
    color_wa-fieldname = 'COL3'.
   
   APPEND color_wa.
   CONCATENATE l_char '10' INTO itab_test3-col3.

itab_test3-color[] = color_wa[].
    APPEND itab_test3.

ENDWHILE.

ENDFORM.                    "create_data

************************************************************************
FORM fieldcat_build.
DATA: BEGIN OF fc_struct,
            tabname(10),
            fieldname(5),
            seltext_m(5),
            emphasize(4),
        END OF fc_struct.

DEFINE ac.
    clear: fc,fc2,fc_struct.
    fc_struct = &1.
    fc-tabname   = fc_struct-tabname. "内表名
    fc-fieldname = fc_struct-fieldname. "字段名
    fc-seltext_m = fc_struct-seltext_m. "字段描述
    fc-emphasize = fc_struct-emphasize. "列颜色
    append fc.

fc2-tabname   = fc_struct-tabname. "内表名
    fc2-fieldname = fc_struct-fieldname. "字段名
    fc2-seltext_m = fc_struct-seltext_m. "字段描述
    append fc2.

if fc3-fieldname < 'COL4'. "只显示前四列
      fc3-tabname   = fc_struct-tabname. "内表名
      fc3-fieldname = fc_struct-fieldname. "字段名
      fc3-seltext_m = fc_struct-seltext_m. "字段描述
      append fc3.
    endif.
END-OF-DEFINITION.

" 第一个内表显示列颜色效果
ac 'ITAB_TEST COL1 COL1 C100'.
ac 'ITAB_TEST COL2 COL2 C200'.
ac 'ITAB_TEST COL3 COL3 C300'.
ac 'ITAB_TEST COL4 COL4 C400'.
ac 'ITAB_TEST COL5 COL5 C500'.
ac 'ITAB_TEST COL6 COL6 C600'.

ENDFORM.                    "fieldcat_build

*&---------------------------------------------------------------------*
*&      Form show_alv
*&---------------------------------------------------------------------*
*      显示内表 1
*----------------------------------------------------------------------*
FORM show_alv.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = sy-repid
      it_fieldcat             = fc[]
      i_callback_user_command = 'PROCESS_USER_COMMAND_1' "响应双击事件
      i_save                  = 'A'
    TABLES
      t_outtab                = itab_test
    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.                    "show_alv

*&---------------------------------------------------------------------*
*&      Form PROCESS_USER_COMMAND_1
*&---------------------------------------------------------------------*
*       当用户双击时显示下层内容
*----------------------------------------------------------------------*
*      -->UCOMM        text
*      -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM process_user_command_1 USING ucomm
               rs_selfield TYPE slis_selfield.

IF rs_selfield-fieldname <> space AND rs_selfield-tabindex > 0. "这句很有用
    PERFORM show_alv_2.
ENDIF.

ENDFORM.                    "PROCESS_USER_COMMAND_1

*&---------------------------------------------------------------------*
*&      Form show_alv_2
*&---------------------------------------------------------------------*
*       显示内表 2   行颜色效果
*----------------------------------------------------------------------*
FORM show_alv_2.
DATA: alv_layout       TYPE slis_layout_alv.

alv_layout-info_fieldname = 'COLOR'. "显示行颜色

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = sy-repid
      it_fieldcat             = fc2[]
      i_callback_user_command = 'PROCESS_USER_COMMAND_2' "下层双击事件内容
      is_layout               = alv_layout
      i_save                  = 'U'
    TABLES
      t_outtab                = itab_test2
    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.                                                    "show_alv_2

*&---------------------------------------------------------------------*
*&      Form PROCESS_USER_COMMAND_2
*&---------------------------------------------------------------------*
*      第三层报表内容
*----------------------------------------------------------------------*
*      -->UCOMM        text
*      -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM process_user_command_2 USING ucomm
               rs_selfield TYPE slis_selfield.

IF rs_selfield-fieldname <> space AND rs_selfield-tabindex > 0.
    PERFORM show_alv_3.
ENDIF.

ENDFORM.                    "PROCESS_USER_COMMAND_2

*&---------------------------------------------------------------------*
*&      Form show_alv_3
*&---------------------------------------------------------------------*
*       显示内表 3   单元格颜色
*----------------------------------------------------------------------*
FORM show_alv_3.
DATA: alv_layout       TYPE slis_layout_alv.

alv_layout-coltab_fieldname = 'COLOR'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      it_fieldcat        = fc3[]
      is_layout          = alv_layout
      i_save             = 'U'
    TABLES
      t_outtab           = itab_test3
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.

ENDFORM.                                                    "show_alv_3

ALV 行列 颜色的更多相关文章

  1. ALV的颜色分为行的颜色、列的颜色和CELL的颜色

    ALV的颜色分为行的颜色.列的颜色和CELL的颜色.任务要求,将一定的Tabellenfeld 用黄色填充,也就是说CELL的颜色 DATA:ls_cellcolorTYPElvc_s_scol,co ...

  2. WDA基础十六:ALV的颜色

    这里介绍三种类型的颜色:列的背景色,单元格的背景色,单元格文本的颜色. 1.给ALV结构添加颜色控制字段: 三个字段都是同一类型:WDY_UIE_LIBRARY_ENUM_TYPE COL_BACKG ...

  3. 再谈控制 cxGrid 的行列颜色

    1. [转]CxGrid 改变某行或单元格的颜色 (2016-01-19 09:37:19) 转载▼ 标签: it delphi 分类: Delphi 一个表(T)的结构结构如下. ID Test 1 ...

  4. DataGridView 改变行列颜色

    [一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/3227351.html] 1 private void ChangBackColor() { ) ...

  5. ABAP ALV 颜色设置(行,列,单元格)

    BCALV_EDIT_03 http://blog.sina.com.cn/s/blog_a87b19300102who3.html 关于ALV表格颜色,这种需求在项目中会经常用到. 列颜色 列的颜色 ...

  6. ALV行 列颜色设置

    ALV的颜色设置分为3种:行.列.单元格.   1.列颜色的设置   在 slis_t_fieldcat_alv-emphasize 中,写入需要的颜色代码.   Eg:   DATA: fc TYP ...

  7. ALV报表——ALV颜色设置(三)

    目录 一.行 二.列 三.单元格 四.附ALV的颜色代码 一.行:用Layout相关属性设置 代码: *Report ZRFI001_XFL_TEST REPORT ZRFI001_XFL_TEST ...

  8. ALV 颜色设置(行,列,单元格)

    [转自:https://www.cnblogs.com/mingdashu/p/color_alv.html] BCALV_EDIT_03 http://blog.sina.com.cn/s/blog ...

  9. ABAP ALV DEMO示例源码

    关于ALV表格颜色,感觉这种需求在项目中用到的时候不是很多,但是前一段时间面试的时候,面试官问了我关于ALV单元格颜色的问题. 以前了解过一点,回答的不是很好,后来百度了一下,大概了解了一些,今天工作 ...

随机推荐

  1. Java基础知识强化之集合框架笔记65:Map集合之集合多层嵌套的数据分析

    1. 为了更符合要求: 这次的数据就看成是学生对象. 传智播客 bj 北京校区 jc  基础班 林青霞 27     风清扬 30      jy  就业班   赵雅芝 28  武鑫 29 sh 上海 ...

  2. Android学习之Intent传递数据

    Intent在Activity中的作用主要是有两个: 1.启动目标Activity 2.传递数据 Intent在传递数据时分两种情况:向下一个Activity传递数据和从下一个Activity返回数据 ...

  3. 在Windows下自动运行Modelsim

    首先声明:该文章是在刘志伟老师的<Modelsim的Tcl命令>的基础上写的,希望我们能越来越自动化. 1.编写好源文件.包含asyn_fifo.v.fifomem.v.rptr_empt ...

  4. 【转】Android 应用测试总结

    前提所有的功能分支已完成 启动:1. 启动入口:桌面正常启动,最近运行启动,所有程序列表中启动,锁屏快捷启动2. 其他入口:从其他程序开启应用,从外部以文件形式打开应用(如果有)3. 退回:从其他程序 ...

  5. oracle数据库没有监听服务与实例服务(OracleServicesXX)的解决方法

    不知道为什么,可能是因为更新系统的原因,过了一段时间,想打开oracle服务,发现居然没有任何oracle有关的服务了,但以前的数据库文件什么的都在,心想肯定是可以复原的,应该只是注册表的问题罢了.在 ...

  6. 无法打开登录所请求的数据库 "XXX"。登录失败。 用户 'NT AUTHORITY\SYSTEM' 登录失败。

    1.打开数据库安全性-登录名 2.选择NT AUTHORITY\SYSTEM右键属性 3.选择服务器角色勾选sysadmin选项保存

  7. 20160328 javaweb Cookie 小练习

    利用cookie实现历史记录浏览: 由于是简单演示,所以直接用javabean 取代数据库了 数据存储类: package com.dzq.dao; import java.util.*; impor ...

  8. MVC中使用jquery的浏览器缓存问题

    jquery在浏览器ajax调用的时候,对缓存提供了很好的支持,POST方式不能被缓存,使用POST的原因,明确了数据不能被缓存,或者避免JSON攻击(JSON返回数据的时候可以被入侵) jquery ...

  9. C#获取当前路径,获取当前路径的上一层路径

    C#获取当前路径的方法如下: (1)string path1 = System.Environment.CurrentDirectory; //C:\...\bin\Debug -获取和设置当前工作目 ...

  10. @class的基本使用

    2-@class 的基本使用 1, @class的作用 @class 允许简单的引用类,即类的声明.告诉编译器,后面代码中可能会使用到的类名. 好比函数声明一样. 2, #import的作用 与 #i ...