ABAP ALV 颜色设置(行,列,单元格)

关于ALV表格颜色,这种需求在项目中会经常用到。

 

  • 列颜色

列的颜色很简单,在构成ALV字段的FIELDCAT内表中有一个字段是EMPHASIZE,将一个char型4位的颜色代码分配到FIELDCAT内表这个字段即可。

1 LW_FCAT-EMPHASIZE = 'C710'. "设置字段的颜色 2 3 MODIFY IT_FIELDCAT FROM LW_FCAT 4 TRANSPORTING EMPHASIZE 5 WHERE FIELDNAME = 'ESLRY'.
  • 行颜色

1. 在构成ALV数据的内表中,添加一个char型4位的字段(CLR),用来记录颜色代码

复制代码
1 TABLES ZEMP_TEST.
2 
3 TYPES: BEGIN OF TY_ZEMP. 4 INCLUDE STRUCTURE ZEMP_TEST. 5 TYPES: CLR TYPE CHAR4,"可以控制行颜色 6 END OF TY_ZEMP. 7 8 DATA: IT_ZEMP TYPE STANDARD TABLE OF TY_ZEMP, 9 IW_ZEMP TYPE TY_ZEMP.
复制代码

 

2. 循环内表,设置颜色代码

复制代码
1   LOOP AT IT_ZEMP INTO IW_ZEMP.
2 "员工编号为‘3的行,颜色为红色 3 IF IW_ZEMP-EMPID = '3'. 4 IW_ZEMP-CLR = 'C610'. 5 MODIFY IT_ZEMP FROM IW_ZEMP. 6 CLEAR IW_ZEMP. 7 ENDIF. 8 ENDLOOP.
复制代码

3. LAYOUT结构中INFO_FIELDNAME的值指定为 CLR

  IW_LAYOUT-INFO_FIELDNAME = 'CLR'.  "行颜色代码的字段
  • 单元格颜色

单元格颜色的设置与行颜色设计基本一致

1. 在构成ALV数据的内表中,添加一个内表 CellColor,用来记录颜色代码,需要设置颜色的字段名

1 TYPES: BEGIN OF TY_ZEMP.
2 INCLUDE STRUCTURE ZEMP_TEST. 3 TYPES: CLR TYPE CHAR4, 4 CELLCOLOR TYPE LVC_T_SCOL, "单元格颜色 5 END OF TY_ZEMP.

CellColor的结构:FNAME        ALV 控制: 内部表字段的字段名称         

COLOR        ALV 控制: 颜色代码     COLOR是一个结构:COL      ALV 控制: 颜色      

                                                                            INT      ALV 控制: 强化    1/0                                    

                                                                            INV      ALV 控制: 相反    1/0    设置颜色是前景,或者是背景         

NOKEYCOL  ALV 控制: 覆盖码颜色

2. 循环内表,设置颜色代码

复制代码
 1   LOOP AT IT_ZEMP INTO IW_ZEMP.
 2 
 3      "员工编号为‘3’的行,颜色为红色
 4      IF IW_ZEMP-EMPID = '3'.
 5        IW_ZEMP-CLR = 'C610'.
 6 
 7        MODIFY IT_ZEMP FROM IW_ZEMP.
 8        CLEAR IW_ZEMP.
 9 
10      ENDIF.
11 
12      IF IW_ZEMP-EMPID = '2'.
13        IW_CELLCOLOR-FNAME = 'ENAME'.
14        "员工编号为‘2’的行的‘ENAME’字段颜色为 黄色
15        IW_CELLCOLOR-COLOR-COL = 3.
16        IW_CELLCOLOR-COLOR-INT = 1.
17        IW_CELLCOLOR-COLOR-INV = 0.
18 
19        APPEND IW_CELLCOLOR TO IW_ZEMP-CELLCOLOR.
20        MODIFY IT_ZEMP FROM IW_ZEMP.
21        CLEAR IW_ZEMP.
22 
23      ENDIF.
24   ENDLOOP.
复制代码

 

3. LAYOUT结构中COLTAB_FIELDNAME的值指定为CELLCOLOR

  IW_LAYOUT-COLTAB_FIELDNAME = 'CELLCOLOR'. "单元格颜色内表字段

最后在调用ALV函数时,设置layout,fieldcat参数

     IS_LAYOUT                         = IW_LAYOUT
     IT_FIELDCAT                       = IT_FIELDCAT
  • ALV工具栏

可以自定义工具栏,或者添加标准ALV工具栏,然后去除一些不需要的功能,这样可以保留标准工具栏的功能

复制代码
 1   DATA:BEGIN OF TAB OCCURS 0,  2 FCODE LIKE RSMPE-FUNC,  3 END OF TAB.  4  5 TAB-FCODE = '&OL0'.APPEND TAB.  6 TAB-FCODE = '&OAD'.APPEND TAB.  7 TAB-FCODE = '&AVE'.APPEND TAB.  8  9 SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL' 10 EXCLUDING TAB IMMEDIATELY.
复制代码

 

  • 求和
LW_FCAT-DO_SUM = 'X'.  "立即求和,只有I,F,P类型的列可以求和

----------------------------------------------------------

 运行效果如下:


 

在SE38环境下的程序名输入栏输入’DEMO*’后按F4,你可以查到SAP所有的DEMO示例程序,会学到很多ABAP功能的实现方法,

输入’BCALV*’后按F4,你可以查到很多ALV示例程序。

 

附:ALV的颜色代码:http://blog.csdn.net/wren2004/article/details/3941551

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值