
行颜色及单元格颜色 的设置需要在ALV的显示内表中设置两个字段:
然后在布局中设置:
最后在ALV显示之前根据需求进行颜色的设定:
对于 列颜色 的设置就比较简单了,直接在gt_fieldcat中做处理即可:
另外附上SAP的颜色编码:SAP中的颜色编码是由4位Cxyz组成的
C:color的简写,颜色编码均以C开头
x:标准色码,SAP中一共有7个标准色
y:反转颜色,启用/关闭 1/0
z:增强颜色,启用/关闭 1/0
标准色码一览表
定义的ALV绑定的内表(假设为it_alv)中加入 icons LIKE icons-text, 这个字段根据条件调用下面三个FORM,里面的单词代表颜色
PERFORM icon_create USING 'ICON_YELLOW_LIGHT' CHANGING it_alv-icons.
PERFORM icon_create USING 'ICON_GREEN_LIGHT' CHANGING it_alv-icons.
PERFORM icon_create USING 'ICON_RED_LIGHT' CHANGING it_alv-icons.
完成之后别忘记modify it_alv.
FORM icon_create USING name CHANGING p_icon.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = name
add_stdinf= 'X'
IMPORTING
RESULT= p_icon
EXCEPTIONS
icon_not_found= 1
outputfield_too_short = 2
OTHERS= 3.
ENDFORM."ICON_CREATE
ALV GRID颜色设置分别为行,列,单元格三种,如果将字段设置为主键那么主键列会自动变为蓝色。列颜色的设置
在创建列目录表时将field catalog structure 的 emphasize字段填入需要的颜色代码
eg:
DATA: wa_fields TYPE LINE OF slis_t_fieldcat_alv.
wa_fields-fieldname= <field_name>. "e.g. 'EBELN'.
wa_fields-seltext_m= <field_name_text>. "e.g '采购订单号'.
wa_fields-emphasize= <containing_color_codes>. "e.g. 'C610'.
行颜色的设置
在list data table中添加一个字段(CHAR4)用来存储颜色代码
eg:
*--- Internal table holding list data
DATA BEGIN OF gt_list OCCURS 0 .
INCLUDE STRUCTURE SFLIGHT .
DATA rowcolor(4) TYPE c .
DATA END OF gt_list .
保存数据到list data table中的同时要把颜色字段的代码一起存入,该代码会被alv解析为行项的颜色
初始化ALV前将颜色字段名填入layout structure.
eg:
ps_layout-info_fname = <field_name_containing_color_codes>. "e.g. ‘ROWCOLOR’.
单元格颜色设置
和行颜色设置相同首先需要在list data table中添加一个字段用来存储行颜色信息,不过类型是LVC_T_SCOL
eg:
*--- Internal table holding list data
DATA BEGIN OF gt_list OCCURS 0 .
INCLUDE STRUCTURE SFLIGHT .
DATA rowcolor(4) TYPE c .
DATA cellcolors TYPE lvc_t_scol .
list data table中的cellcolors字段将被用来存储单元格的颜色信息
eg:
DATA ls_cellcolor TYPE lvc_s_scol .
...
READ TABLE gt_list INDEX 5 .
ls_cellcolor-fname = 'SEATSOCC' .
ls_cellcolor-color-col = '7' .
ls_cellcolor-color-int = '1' .
ls_cellcolor-color-inv = '0' .
ls_callcoloe-nokeycol = '' .
APPEND ls_cellcolor TO gt_list-cellcolors .
MODIFY gt_list INDEX 5 .
ALV GRID 第五条记录的SEATSOCC字段颜色将被设置为C710,如果不希望覆盖主键字段的颜色可以将ls_callcoloe-nokeycol设置为X
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)