面向对象(OO)的ALV GRID设置颜色

    在平时的ALV开发中,客户有些特殊的需求,需要在ALV的网格中绘上一些特殊的颜色,方便他们在第一时间看到自己想要看到的东西,如果没有这些颜色的设 置,要从一大堆显示的数据中找到自己关心的东西,估计会比较难,下面我将给大家介绍在ALV GRID中设置列、行、单元格的颜色:
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.
有些人在网上介绍的时候需要调用刷新才能显示设置颜色出来,经过我的测试,其实不然!

你可能感兴趣的:(面向对象(OO)的ALV GRID设置颜色)