文章转自http://tangwenchong.blog.51cto.com/2998322/554017

    

ALV 行、列、单元格颜色设置
2009-08-01 11:30

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.

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_3

转载于:https://www.cnblogs.com/kalasitifen/archive/2012/10/16/2725820.html

ALV 行、列、单元格颜色设置相关推荐

  1. ALV列、行、单元格颜色设置

    1)颜色含义 1:海蓝:2:浅清:3:黄色:4:浅蓝:5:青色:6:红色:7:橙色. (1)首位为主颜色: (2)次位为辅助颜色: (3)末位为0时,表示首位数字表为表格的底色: 末位为1时,则表示以 ...

  2. 计算机自定义大小修改数值,如何将电脑excel文档中的单元格颜色设置为根据数值大小自动修改...

    如何将电脑excel文档中的单元格颜色设置为根据数值大小自动修改 腾讯视频/爱奇艺/优酷/外卖 充值4折起 当我们在使用电脑的时候,如果想要处理数据的话,一般都会用到excel软件,在excel中,如 ...

  3. python指定一列为KEY 合并多列单元格 并设置单元格行高

    一.需求 1.第一列Sku数值相同的,合并A-E列,J-M列 2.M列设置行高完全显示内容 3.A1单元格内数字是SKU个数,合并单元格后数字更新 二.效果图 input入力文件处理前: 文件处理后 ...

  4. 【VBA研究】Excel信息对比及单元格颜色设置

    作者:iamlaosong 1.需求是对一个文件中某个工作表中的邮件号码在另一个文件中进行查找,找到后比较附加信息,如果不一致或者有重复,则进行记录,同时对比较的号码进行标注.找不到当然也会记录.为此 ...

  5. poi导出Excel(分行单元格颜色设置,字体设置,合并单元格,插入图片)

    这是一个日报导出功能的代码;图片是用JfreeChars生成好的,话不多少 看代码 public String excelExport(HttpServletRequest request,HttpS ...

  6. execl 单元格颜色设置

    POI 设置单元格背景颜色 http://lishumingwm163-com.iteye.com/blog/1335254 This example shows you Excel cell fil ...

  7. SAP ALV颜色代码对应颜色(整理列级别 行级别 单元格级别设置方法)

    1. ALV颜色代码规则 SAP颜色代码由三位控制码组成(如下所示) 2. ALV颜色代码和颜色的对应关系 颜色代码对应关系 3. ALV颜色代码的使用 列级别 1.设置FIELDCAT-EMPHAS ...

  8. vba单元格颜色设置

    Sub Main() Cells(2,2).Interior.ColorIndex = 3 End Sub

  9. JAVA对excle创建、读取、设置单元格颜色、背景色、跨行跨列

    pom.xml依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</a ...

  10. 修改datagridView单元格颜色(行颜色,列颜色)

    解决:将设置dataGridView1单元格背景颜色的代码放入RowPostPaint或RowPrePaint中,RowPostPaint在绘制dataGridView后发生,RowPrePaint在 ...

最新文章

  1. 【xmind】 使用 Java 生成思维导图
  2. php bindresult,mysqli_stmt::bind_result
  3. 第二次结对编程作业——毕设导师智能匹配
  4. 转译和编译_10个有趣又能编译为JavaScript的语言,你用过哪些?
  5. 利用anaconda prompt打开jupyter notebook
  6. linux sys存放内容,了解linux系统目录,sys,tmp,usr,var!
  7. hog函数的用法 python_Python常见内置函数用法(三)
  8. vue 一直加载_Vue无限加载vue-infinite-loading使用详解
  9. javascript 编辑记录
  10. AssertJ断言系列一
  11. java命令行参数是什么_Java实验课:命令行参数是什么?
  12. mysql 5个约束条件,Mysql入门第五课《外键约束》
  13. 全网最细最全Appium自动化测试 iOS入门教程,App自动化测试教程,精细整理
  14. 轻量级深度神经网络推理引擎——阿里巴巴的 MNN
  15. mysql 按每月自定天数统计数据
  16. java dcm转bmp源码_DCM文件转图像,并高清处理图像
  17. wifi和服务器之间通信协议,安卓和wifi通信协议
  18. 电子商务-任务分配背景会议
  19. 基于Python根据置信度区间计算植被覆盖度
  20. CXM百科 | 知了知了,NPS知多少

热门文章

  1. 在Oracle中查询表的大小、表的占用情况和表空间的大小
  2. HTTP-meta标签
  3. 如何获取一个需要登录页面的HTML代码
  4. vue中使用echarts
  5. GCP+WORDPRESS建站。
  6. 在 CentOS7 安装 ELK
  7. Python pycharm(windows版本)部署spark环境
  8. hihocoder 1043 完全背包
  9. bzoj4332;vijos1955:JSOI2012 分零食
  10. 开启A20线(部分译)