标签归档:ALV 颜色

SAP ALV报表颜色设置

ALV里色码,就是颜色编码,4位CHAR型,形式如下所示:C X Y Z(四位),其中第一位为‘C’固定不变,X表示颜色代码(如下表所示),Y表示加强的设置,Z表示相反的设置。
ALV使用到的颜色如下所示:
C               color
1              gray-blue
2              light gray
3              yellow
4              blue green
5              green
6              red
7              orange
在平时的ALV开发中,客户有些特殊的需求,需要在ALV的网格中绘上一些特殊的颜色,方便他们在第一时间看到自己想要看到的东西,如果没有这些颜色的设置,要从一大堆显示的数据中找到自己关心的东西,估计会比较难,下面我将给大家介绍在ALV GRID中设置列、行、单元格的颜色:
1)列的颜色设置
A、列的颜色设置相对来说会比较简单,因为在字段目录的类型LVC_S_FCAT中提供了对列颜色设置的字段 EMPHASIZE来实现:
如:w_fcat type lvc_s_fcat.
w_fcat- EMPHASIZE = ‘C701’.
在使用的过程有个问题要注意,就是如果当前设置颜色的列为关键(KEY)列,则设置的颜色就不会起作用了.

B、设置ALV字段fieldcat属性:i_fieldcat-emphasize = ‘C110’.
C110:为颜色代码;

其中C200与系统标准ALV底色比较相似;C410与系统标准关键字颜色比较相似。

以上两种方法第二种使用比较简单,第一种还不是很明白,如果哪位明白请赐教。

2)行的颜色设置
为某行颜色的设置,实现起来相对列的设置有点复杂,需要在显示的内表中添加一个字段用于显示颜色,这个字段不需要在字段目录中设置,实现如下所示:
如:data: begin of t_itab occurs 0,
…….(字段)
rowcolor(4) type c,    “新添加用字段于设置行的颜色
end   of t_itab.
添加了用于设置颜色的字段,ALV如何知道你设置了颜色了呢,这个嘛就在ALV的布局类型有个字段info_name进行通知ALV设置了颜色的:(这一步很重要哦)
如:s_lay type lvc_s_layo.
s_lay-info-name = ‘ROWCOLOR’.   ” ROWCOLOR就是上面在显示输出的内表中添加的字段。
以上两步都搞定了,那下来就是要CODING设置那些行要设置颜色了:
如:loop at t_itab.
if t_itab-a eq ‘1’.
t_itab-rowcolor = ‘4’.       “设置颜色
modify t_itab.
endif.
endloop.
3)单元格颜色设置
其实设置单元格与行的设置性质都一样的了,只是设置了不同的参数而已,需要在定义的输出内表中插入一个表类型的字段,这样输出的内表就形成了DEEP结构了。
如: data: begin of t_itab occurs 0,
………..
cellcolor type lvc_t_scol,
end   of t_itab.
在ALV的布局结构设置显示颜色:
如:f_lay-ctab_fname = ‘CELLCOLOR’.(这一步也是非常非常的重要的)
lvc_t_scol有三个参数进行设置,
fname:很显示这是关于字段名,就是要设置的字段名,如果这个为空,直接在color中设置颜色,则整行都设置上颜色了。
color:人如其名,这个就是关系到颜色的了,color在这里一个结构,它包含有三个字段,一个是颜色代码,一个是加强,最后一个是相反设置。
nokeycol:这个是跟KEY列有关的,通过这个字段可以避免关键列对颜色的的覆盖。
完成上面的设置,就开始进行对内表中的数据进行单元格颜色设置了.

 

附录:ABAP颜色代码

ABAP中的颜色代码是由4位字都组成的

Cxyz

C:color的简写,颜色代码均以C开头

x:标准色代码,SAP中一共有7个标准色

   y:反转颜色启用/关闭 1/0

z:增强颜色启用/关闭 1/0

标准色代码一览表

X 颜色 主要用处
1 灰蓝色 抬头、标题栏
2 浅灰色 列表内容
3 黄色 汇总
4 蓝色 关键字
5 绿色 正确
6 红色 错误
7 橙色 控制

 

070920142024