ABAP ALV中的颜色设置

ABAP ALV中的颜色设置,第1张

行颜色及单元格颜色设置需要在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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11244274.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存