目录
1.介绍
2.列背景色
3.行背景色
4.单元格背景色
4.1颜色码相关的结构
LVC_T_SCOL
LVC_S_SCOL
LVC_S_COLO
4.2单元格颜色设置方法
5.ALV 颜色码
1.介绍
在数据展示方面,要求ALV的数据列、行、单元格通过颜色醒目显示(颜色展示),这样更有利于区分特殊的数据,视觉效果比较好,下面小例子来介绍ALV展示行、列、单元格颜色的实现方法。
2.列背景色
列的颜色很简单,在构成ALV字段的FIELDCAT内表中有一个字段是EMPHASIZE,将一个char型4位的颜色代码分配到FIELDCAT内表这个字段即可。
"两段代码 - 1
DATA GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV .
DATA GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV ."两段代码 - 2
WHEN 'ZNAME' .GS_FIELDCAT-EMPHASIZE = 'C600' . "指定列颜色
3.行背景色
1. 在构成ALV数据的内表中,添加一个char型4位的字段(ROWCOLOR),用来记录颜色代码
TYPES: BEGIN OF GTY_STUDENT .INCLUDE STRUCTURE ZSTUDENT_GQ_01 .
TYPES : ICON TYPE C LENGTH 4 .
TYPES : CHECK TYPE C LENGTH 1 .
TYPES : BOX TYPE C LENGTH 1 .
TYPES : COLOR TYPE LVC_T_SCOL .
TYPES : ROWCOLOR TYPE C LENGTH 4 . "行颜色
TYPES: END OF GTY_STUDENT .
2.循环取数的内表,设置颜色代码
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM GET_DATA .DATA LS_CELLCOLOR TYPE LVC_S_SCOL .SELECT *FROM ZSTUDENT_GQ_01INTO CORRESPONDING FIELDS OF TABLE GT_STUDENT .LOOP AT GT_STUDENT INTO GS_STUDENT .IF GS_STUDENT-SEX = 'M' .GS_STUDENT-ICON = ICON_GREEN_LIGHT .LS_CELLCOLOR-FNAME = 'SEX' .LS_CELLCOLOR-COLOR-COL = 7 .LS_CELLCOLOR-COLOR-INT = 1 .LS_CELLCOLOR-COLOR-INV = 0 .APPEND LS_CELLCOLOR TO GS_STUDENT-COLOR .ELSE .GS_STUDENT-ICON = ICON_RED_LIGHT .GS_STUDENT-ROWCOLOR = 'C500' . "设置行颜色ENDIF.MODIFY GT_STUDENT FROM GS_STUDENT .ENDLOOP.
ENDFORM.
3.LAYOUT结构中INFO_FIELDNAME的值指定为 ROWCOLOR
GS_LAYOUT-INFO_FIELDNAME = 'ROWCOLOR' . "LINE COLOR
4.单元格背景色
单元格颜色的设置与行颜色设计基本一致,但是数据类型不一样。
4.1颜色码相关的结构
LVC_T_SCOL
LVC_S_SCOL
LVC_S_COLO
4.2单元格颜色设置方法
1. 在构成ALV数据的内表中,添加一个内表 CellColor,用来记录颜色代码,需要设置颜色的字段名
TYPES: BEGIN OF GTY_STUDENT .INCLUDE STRUCTURE ZSTUDENT_GQ_01 .
TYPES : ICON TYPE C LENGTH 4 .
TYPES : CHECK TYPE C LENGTH 1 .
TYPES : BOX TYPE C LENGTH 1 .
TYPES : CELLCOLOR TYPE LVC_T_SCOL . "单元格背景色
TYPES : ROWCOLOR TYPE C LENGTH 4 . "行背景色
TYPES: END OF GTY_STUDENT .
2.循环数据内表,设置颜色代码
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM GET_DATA .DATA LS_CELLCOLOR TYPE LVC_S_SCOL . "定义颜色变量 - 结构体SELECT *FROM ZSTUDENT_GQ_01INTO CORRESPONDING FIELDS OF TABLE GT_STUDENT .LOOP AT GT_STUDENT INTO GS_STUDENT .IF GS_STUDENT-SEX = 'M' .GS_STUDENT-ICON = ICON_GREEN_LIGHT .LS_CELLCOLOR-FNAME = 'SEX' . "指定颜色列名LS_CELLCOLOR-COLOR-COL = 7 . "指定颜色列 - 颜色结构体 - 颜色码LS_CELLCOLOR-COLOR-INT = 1 . "指定颜色列 - 颜色结构体 - 颜色码LS_CELLCOLOR-COLOR-INV = 0 . "指定颜色列 - 颜色结构体 - 颜色码APPEND LS_CELLCOLOR TO GS_STUDENT-CELLCOLOR .ELSE .GS_STUDENT-ICON = ICON_RED_LIGHT .GS_STUDENT-ROWCOLOR = 'C500' . "设置行颜色ENDIF.MODIFY GT_STUDENT FROM GS_STUDENT .ENDLOOP.
ENDFORM.
3.LAYOUT结构中COLTAB_FIELDNAME的值指定为CELLCOLOR
GS_LAYOUT-COLTAB_FIELDNAME = 'CELLCOLOR ' . "CELL COLOR