您的位置:首页 > 其它

ALV控制某列的颜色

2014-01-22 09:18 330 查看
有时候想控制ALV某列的颜色,如图:




这个参数是在slis_t_fieldcat_alv这里面控制的:

DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

CONSTANTS:

con_red TYPE char4 VALUE 'C500', "红色

con_green TYPE char4 VALUE 'C600'. "绿色

DEFINE fill_fieldcat.

fieldcat-col_pos = &1.

fieldcat-fieldname = &2.

fieldcat-seltext_l = &3.

"设置列的颜色

case fieldcat-fieldname.

when 你想要的那个字段名称.

"借方红色,贷方绿色

fieldcat-emphasize = con_red.

when 你想要的那个字段名称.

fieldcat-emphasize = con_green.

when others.

endcase.

fieldcat-do_sum = 'X'. "统计功能打开

append fieldcat.

END-OF-DEFINITION.

然后在调用时:

CALL FUNCTION
'REUSE_ALV_GRID_DISPLAY'
EXPORTING

is_layout

= layout

it_fieldcat

=
fieldcat[]
……

至于色码:参考:http://blog.csdn.net/f122300349/article/details/5516371

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

以下引自: http://blog.csdn.net/lijunhai/article/details/1967091
1)颜色含义

1:海蓝;2:浅清;3:黄色;4:浅蓝;5:青色;6:红色;7:橙色。

(1)首位为主颜色;

(2)次位为辅助颜色;

(3)末位为0时,表示首位数字表为表格的底色;

末位为1时,则表示以1为底色,首位数字则表为表格字体的颜色;

末位为其它颜色时,则表示底色为ALV的默认颜色;

以上三条是本人大概总结出来的规律,本人发现的现象基本如上,但也不一定全部正确。

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

2)列颜色:

设置ALV字段fieldcat属性:i_fieldcat-emphasize
= &3. "颜色

把fieldcat属性写入属性内表allfields:alv_append_field
'WERKS' '工厂' 'C110'.

C110:为颜色代码;

3)行颜色:

(1)在内表itab定义一个字段line_color来存储颜色;loop内表itab,在需要显示颜色的行其值赋为颜色'C110';

(2)在定义alv显示格式定义:

设置ALV显示layout属性:i_layout-info_fieldname
= 'LINE_COLOR',line_color为内表定义的存储颜色的列名。

4)单元格颜色

单元格颜色属性:LVC_S_SCOL,该属性为一结构,含三个字段:FNAME(30)、COLOR(颜色结构,含三个字段:col(10)、int(3)、inv(10))、NOKEYCOL(1)(覆盖码颜色)

ALV列属性:coltab_fieldname

exa:

定义内表itab含字段FLDNAME
type LVC_S_SCOL;

定义单元格颜色结构cellcolor
type LVC_S_SCOL;

循环内表,当要设置单元格颜色所在的列字段colname要设置颜色时

fldname-FNAME
= ‘COLNAME’

fldname-COLOR-col
= ‘2’(颜色代码)

fldname-COLOR-int
= ‘1’
fldname-COLOR-inv
= ‘0’。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: