ALV单元格颜色代码

这是一个十分有趣而且有用的程序,能得到ALV 单元格颜色代码,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
&---------------------------------------------------------------------
*& Report ZCELL_COLORS
*&
&---------------------------------------------------------------------
*&
*&
&---------------------------------------------------------------------

REPORT ZCELL_COLORS.

TYPES:
BEGIN OF ts_data,
col TYPE lvc_col, " color 1-7
int TYPE lvc_int, " intensified 0-1
inv TYPE lvc_inv, " inverse 0-1
scol TYPE lvc_t_scol, " table for cell coloring
END OF ts_data,
tt_data TYPE TABLE OF ts_data.

DATA:
ls_data TYPE ts_data,
lt_data TYPE tt_data,
lv_index TYPE i,
ls_color TYPE lvc_s_scol,
lt_color TYPE lvc_t_scol,
lo_table TYPE REF TO cl_salv_table,
lo_columns TYPE REF TO cl_salv_columns_table,
lo_column TYPE REF TO cl_salv_column_list.

  • empty row with default color
    APPEND ls_data TO lt_data.

  • rows with possible colors
    DO 7 TIMES.

    ls_color-color-col = sy-index. " 1-7

    DO 2 TIMES.

    lv_index = sy-index - 1.
    ls_color-color-int = lv_index. " 0-1

    DO 2 TIMES.

     lv_index = sy-index - 1.
     ls_color-color-inv = lv_index.   " 0-1
    
     APPEND ls_color TO lt_color.
    
     ls_data-col   = ls_color-color-col.
     ls_data-int   = ls_color-color-int.
     ls_data-inv   = ls_color-color-inv.
    
     ls_data-scol = lt_color.
     APPEND ls_data TO lt_data.
     CLEAR lt_color.
    

    ENDDO.
    ENDDO.
    ENDDO.

TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lo_table
CHANGING
t_table = lt_data.

 lo_columns = lo_table->get_columns( ).
  • set descriptions of columns
    lo_column ?= lo_columns->get_column( ‘COL’ ).
    lo_column->set_short_text( ‘COL’ ).

    lo_column ?= lo_columns->get_column( ‘INT’ ).
    lo_column->set_short_text( ‘INT’ ).

    lo_column ?= lo_columns->get_column( ‘INV’ ).
    lo_column->set_short_text( ‘INV’ ).

  • set the column with the information about colors of rows and fields
    lo_columns->set_color_column( ‘SCOL’ ).

    lo_table->display( ).

CATCH cx_salv_msg. " cl_salv_table=>factory
WRITE: / ‘cx_salv_msg exception’.
STOP.

CATCH cx_salv_data_error. " cl_salv_filters->add_filter()
WRITE: / ‘cx_salv_data_error’.
STOP.

CATCH cx_salv_not_found. " cl_salv_columns_table->get_column()
WRITE: / ‘cx_salv_not_found exception’.
STOP.
ENDTRY.

运行结果如下,
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值