圖標(ICON)和提示信息(tooltips)會使ALV更加易讀,突出重點,下面就介紹一下如何在SALV上添加ICON和tooltips。
本例子在SALV的status列中顯示紅綠燈圖標,並根據圖標的顏色顯示不同的提示信息,方便用戶更清晰的閱讀SALV,具體方法如下:
1,將為圖標ID賦值到Status列上,圖標ID的查詢方法參照-->如何查找圖標ID(ICON ID)等詳細信息
2,設定列值為圖標-調用cl_salv_columns->get_column ()得到‘Status’列的類引用,然后通過cl_salv_columns->set_icon ()將列設置為顯示圖標.
3,調用cl_salv_tooltips->add_tooltip()設置圖標的提示信息(tooltips)
完整代碼如下:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
REPORT Z_SALV_18.
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
DATA o_salv TYPE REF TO cl_salv_table .
TYPES:
BEGIN OF ty_output,
status TYPE char10,
field1 TYPE char30,
END OF ty_output.
DATA: t_output TYPE STANDARD TABLE OF ty_output.
METHODS:
select_data,
generate_alv.
ENDCLASS. "lcl_main DEFINITION
*
START-OF-SELECTION.
DATA: o_main TYPE REF TO lcl_main.
CREATE OBJECT o_main.
o_main->select_data( ).
o_main->generate_alv( ).
*
CLASS lcl_main IMPLEMENTATION.
METHOD select_data.
INCLUDE: <icon>.
DATA: ls_output LIKE LINE OF t_output.
DO 3 TIMES.
ls_output-status = icon_green_light.
ls_output-field1 = sy-abcde.
APPEND ls_output TO t_output.
ls_output-status = icon_yellow_light.
APPEND ls_output TO t_output.
ls_output-status = icon_red_light.
APPEND ls_output TO t_output.
ls_output-status = icon_led_green.
APPEND ls_output TO t_output.
ls_output-status = icon_led_red.
APPEND ls_output TO t_output.
ls_output-status = icon_led_yellow.
APPEND ls_output TO t_output.
ENDDO.
ENDMETHOD. "select_Data
METHOD generate_alv.
DATA: lo_functions TYPE REF TO cl_salv_functions_list.
DATA: lo_functional_settings TYPE REF TO cl_salv_functional_settings.
DATA: lo_tooltips TYPE REF TO cl_salv_tooltips,
lv_value TYPE lvc_value.
DATA: lo_columns TYPE REF TO cl_salv_columns.
DATA: lo_column TYPE REF TO cl_salv_column_table.
INCLUDE: <icon>.
*
* ALV Object
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = o_salv
CHANGING
t_table = t_output ).
CATCH cx_salv_msg. "#EC NO_HANDLER
ENDTRY.
* 設定SALV的工具欄toolbar
lo_functions = o_salv->get_functions( ).
lo_functions->set_all( abap_true ).
*... set the columns
lo_columns = o_salv->get_columns( ).
TRY.
lo_column ?= lo_columns->get_column( 'STATUS' ).
* 將列設置為顯示ICON
lo_column->set_icon( if_salv_c_bool_sap=>true ).
* 設置列標簽 label
lo_column->set_long_text( 'Hover for Tooltip' ).
lo_column->set_alignment( if_salv_c_alignment=>centered ).
lo_column->set_output_length( 20 ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
*...Tooltips,
lo_functional_settings = o_salv->get_functional_settings( ).
lo_tooltips = lo_functional_settings->get_tooltips( ).
TRY.
* 當綠燈時,提示 Everything is Processed
lv_value = icon_green_light.
lo_tooltips->add_tooltip(
TYPE = cl_salv_tooltip=>c_type_icon
VALUE = lv_value
tooltip = 'Everything is Processed' ). "#EC NOTEXT
CATCH cx_salv_existing. "#EC NO_HANDLER
ENDTRY.
TRY.
* 黃燈時提示 Everything is Processed
lv_value = icon_yellow_light.
lo_tooltips->add_tooltip(
TYPE = cl_salv_tooltip=>c_type_icon
VALUE = lv_value
tooltip = 'Partially processed' ). "#EC NOTEXT
CATCH cx_salv_existing. "#EC NO_HANDLER
ENDTRY.
TRY.
* 紅燈時提示 Nothing Yet processed
lv_value = icon_red_light.
lo_tooltips->add_tooltip(
TYPE = cl_salv_tooltip=>c_type_icon
VALUE = lv_value
tooltip = 'Nothing Yet processed' ). "#EC NOTEXT
CATCH cx_salv_existing. "#EC NO_HANDLER
ENDTRY.
*... display the table
o_salv->display( ).
ENDMETHOD. "generate_alv
ENDCLASS. "lcl_main IMPLEMENTATION
|
運行后,鼠標懸停在圖標(ICON)上會顯示相應的提示信息,
以上。