加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【原创】ABAP ALV 颜色设置(行,列,单元格)

(2016-03-11 11:45:40)
标签:

abapalv

alv行颜色

alv列颜色

alv单元格颜色

分类: 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),用来记录颜色代码

http://common.cnblogs.com/images/copycode.gifALV 颜色设置(行,列,单元格)" />
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.
http://common.cnblogs.com/images/copycode.gifALV 颜色设置(行,列,单元格)" />

 

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

http://common.cnblogs.com/images/copycode.gifALV 颜色设置(行,列,单元格)" />
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.
http://common.cnblogs.com/images/copycode.gifALV 颜色设置(行,列,单元格)" />

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. 循环内表,设置颜色代码

http://common.cnblogs.com/images/copycode.gifALV 颜色设置(行,列,单元格)" />
 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.
http://common.cnblogs.com/images/copycode.gifALV 颜色设置(行,列,单元格)" />

 

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

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

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

     IS_LAYOUT                         = IW_LAYOUT
     IT_FIELDCAT                       = IT_FIELDCAT
  • ALV工具栏

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

http://common.cnblogs.com/images/copycode.gifALV 颜色设置(行,列,单元格)" />
 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.
http://common.cnblogs.com/images/copycode.gifALV 颜色设置(行,列,单元格)" />

 

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

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

 运行效果如下:

http://images2015.cnblogs.com/blog/762827/201512/762827-20151207154818340-1967167310.pngALV 颜色设置(行,列,单元格)" />

 

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

  http://images2015.cnblogs.com/blog/762827/201512/762827-20151207150143277-1987966380.pngALV 颜色设置(行,列,单元格)" />

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有