OOALV 行、列和单元格颜色设置

在平时的ALV开发中,客户有些特殊的需求,需要在ALV的网格中绘上一些特殊的颜色,方便他们在第一时间看到自己想要看到的东西,如果没有这些颜色的设置,要从一大堆显示的数据中找到自己关心的东西,估计会比较难,下面我将给大家介绍在ALV GRID中设置列、行、单元格的颜色:

1:海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7:橙色。
(1)首位为主颜色;
(2)次位为辅助颜色;
(3)末位为0时,表示首位数字表为表格的底色;
末位为1时,则表示以1为底色,首位数字则表为表格字体的颜色;
末位为其它颜色时,则表示底色为ALV的默认颜色;
以上三条是本人大概总结出来的规律,本人发现的现象基本如上,但也不一定全部正确。
其中C200与系统标准ALV底色比较相似;C410与系统标准关键字颜色比较相似


1)列的颜色设置
列的颜色设置相对来说会比较简单,因为在字段目录的类型LVC_S_FCAT中提供了对列颜色设置的字段 EMPHASIZE来实现:
如:w_fcat type lvc_s_fcat.
w_fcat-
EMPHASIZE = 'C701'.
在使用的过程有个问题要注意,就是如果当前设置颜色的列为关键(KEY)列,则设置的颜色就不会起作用了.
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列有关的,通过这个字段可以避免关键列对颜色的的覆盖。
完成上面的设置,就开始进行对内表中的数据进行单元格颜色设置了:
如: loop at t_itab.
data: w_cellcolor type lvc_s_scol.
w_cellcolor-fname = 'A'.
w_cellcolor-color-col = '3'.
w_cellcolor-color-int = '1'.
append w_cellcolor to t_itab-cellcolor.
.........(对其它字段的颜色设置)
endloop.

 

转载自:http://blog.csdn.net/f122300349/article/details/5516386

               http://blog.csdn.net/f122300349/article/details/5516392

 


你可能感兴趣的:(颜色设置,单元格,行列,ooalv,DEEP结构)