本文基於SALV教程7-列屬性設定-修改列標簽名(label),自動優化顯示寬度。
列隱藏的具體方法如下:
1,取得單個列的類引用CL_SALV_COLUMN
2,調用類CL_SALV_COLUMN中的方法SET_VISIBLE()來決定列是否隱藏字段
代碼:
|
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
*&---------------------------------------------------------------------*
*& 一個簡單的通過類CL_SALV_TABLE生成SALV的例子
*&---------------------------------------------------------------------*
REPORT z_salv_6.
*
*----------------------------------------------------------------------*
* CLASS lcl_report DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_report DEFINITION.
*
PUBLIC SECTION.
*
* 定義SALV輸出內表
TYPES: BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE erdat,
auart TYPE auart,
kunnr TYPE kunnr,
END OF ty_vbak.
*
DATA: t_vbak TYPE STANDARD TABLE OF ty_vbak.
*
* ALV reference
DATA: o_alv TYPE REF TO cl_salv_table.
*
METHODS:
* 抽取數據
get_data,
*
* 生成輸出內容
generate_output.
*
*$*$*.....CODE_ADD_1 - Begin..................................1..*$*$*
*
* 定義private method來設定SALV不同特性
PRIVATE SECTION.
METHODS:
set_pf_status CHANGING co_alv TYPE REF TO cl_salv_table.
METHODS:
set_columns CHANGING co_alv TYPE REF TO cl_salv_table.
*$*$*.....CODE_ADD_1 - End....................................1..*$*$*
ENDCLASS. "lcl_report DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_report IMPLEMENTATION
*----------------------------------------------------------------------*
* 類實現
CLASS lcl_report IMPLEMENTATION.
*
METHOD get_data.
* 抽取數據
SELECT vbeln
erdat
auart
kunnr
INTO TABLE t_vbak
FROM vbak
UP TO 20 ROWS.
*
ENDMETHOD. "get_data
*.......................................................................
METHOD generate_output.
* New ALV instance
* We are calling the static Factory method which will give back
* the ALV object reference.
*
* exception class
DATA: lx_msg TYPE REF TO cx_salv_msg.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = o_alv
CHANGING
t_table = t_vbak ).
CATCH cx_salv_msg INTO lx_msg.
ENDTRY.
*
*$*$*.....CODE_ADD_2 - Begin..................................2..*$*$*
*
* In this area we will call the methods which will set the
* different properties to the ALV
* 調用status設置方法
CALL METHOD set_pf_status
CHANGING
co_alv = o_alv.
* 調用設置列的方法
CALL METHOD me->set_columns
CHANGING
co_alv = o_alv.
*$*$*.....CODE_ADD_2 - End....................................2..*$*$*
*
*
* 調用Display方法將數據輸出到屏幕上
o_alv->display( ).
*
ENDMETHOD. "generate_output
*
*$*$*.....CODE_ADD_3 - Begin..................................3..*$*$*
*
* In this area we will implement the methods which are defined in
* the class definition
* status設置方法實現
METHOD set_pf_status.
DATA: lo_functions TYPE REF TO cl_salv_functions_list.
* 設置默認的標准狀態欄
lo_functions = co_alv->get_functions( ).
lo_functions->set_default( abap_true ).
ENDMETHOD.
METHOD set_columns.
*
DATA: lo_cols TYPE REF TO cl_salv_columns.
*...Process individual columns
DATA: lo_column TYPE REF TO cl_salv_column.
*...取得全部列的對象
lo_cols = o_alv->get_columns( ).
*
* 設置自動優化列寬度
lo_cols->set_optimize( 'X' ).
*
* 修改列KUNNR的標簽名字和輸出長度
TRY.
* 取得單個列的對象
lo_column = lo_cols->get_column( 'KUNNR' ).
lo_column->set_long_text( 'Sold-To Party' ).
lo_column->set_medium_text( 'Sold-To Party' ).
lo_column->set_short_text( 'Sold-To' ).
lo_column->set_output_length( 15 ).
* 隱藏列
lo_column->set_visible( value = if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
*
ENDMETHOD. "SET_COLUMNS
*$*$*.....CODE_ADD_3 - End....................................3..*$*$*
*
ENDCLASS. "lcl_report IMPLEMENTATION
START-OF-SELECTION.
DATA: lo_report TYPE REF TO lcl_report.
CREATE OBJECT lo_report.
* 抽取數據
lo_report->get_data( ).
* 生成SALV
lo_report->generate_output( ).
|
運行,KUNNR列被隱藏了。
隱藏列還可以通過調用cl_salv_column_list->set_technical( if_salv_c_bool_sap=>true )。
代碼,隱藏RCLNT字段
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
DATA: lo_columns TYPE REF TO cl_salv_columns_table,
lo_column TYPE REF TO cl_salv_column_list,
lt_cols TYPE salv_t_column_ref,
ls_cols LIKE LINE OF lt_cols.
lo_columns = o_salv->get_columns( ).
lt_cols = lo_columns->get( ).
TRY.
lo_column ?= lo_columns->get_column( 'RCLNT' ).
lo_column->set_technical( if_salv_c_bool_sap=>true ).
CATCH cx_salv_not_found. "#EC NO_HANDLER
ENDTRY.
|
以上。


