这是一个十分有趣而且有用的程序,能得到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.
|
运行结果如下,