1.首先要创建一个程序
1 *&---------------------------------------------------------------------*
2 *& Report ZTEST05
3 *&---------------------------------------------------------------------*
4 *&
5 *&---------------------------------------------------------------------*
6 REPORT ztest05.
7
8 TYPES:BEGIN OF ty_data ,
9 matnr TYPE marc-matnr,
10 mtart TYPE marc-werks,
11 xchar TYPE marc-xchar,
12 END OF ty_data .
13
14 DATA:gt_data TYPE TABLE OF ty_data,
15 gv_matnr TYPE mara-matnr.
16
17 *ALV相关变量
18 DATA:gs_alv TYPE REF TO cl_gui_alv_grid, "ALV类
19 gs_con TYPE REF TO cl_gui_custom_container, "容器类
20 g_dock TYPE REF TO cl_gui_docking_container,
21 gt_fieldcat TYPE lvc_t_fcat, "列格式
22 gs_fieldcat TYPE lvc_s_fcat, "列格式-结构
23 gs_stable TYPE lvc_s_stbl, "光标
24 gs_layout TYPE lvc_s_layo, "输出格式
25 gt_output TYPE STANDARD TABLE OF sflight,
26 ok_code TYPE sy-ucomm.
27
28 END-OF-SELECTION.
29 CALL SCREEN '9000' .
30
31 MODULE status_9000 OUTPUT.
32
33 SET PF-STATUS 'STATUS_9000'.
34 SET TITLEBAR 'TEXT01'.
35
36 ENDMODULE.
37
38 MODULE init OUTPUT.
39
40 IF gs_alv IS INITIAL.
41 PERFORM frm_create_alv.
42 "设置布局
43 PERFORM frm_set_layout.
44 "设置字段目录
45 PERFORM frm_set_fieldcat.
46 "ALV展示
47 PERFORM frm_alv_out.
48 ELSE.
49 PERFORM frm_refresh_alv.
50 ENDIF.
51
52 ENDMODULE.
53
54 MODULE user_command_9000 INPUT.
55 CALL METHOD gs_alv->check_changed_data."更改数据
56 DATA(lv_code) = ok_code.
57 CLEAR ok_code.
58 CASE lv_code.
59 WHEN '&F03' OR '&F12' OR '&F15'.
60 LEAVE TO SCREEN 0.
61 WHEN 'OK'.
62 PERFORM frm_select.
63 WHEN OTHERS.
64 ENDCASE.
65 ENDMODULE.
66
67 FORM frm_select .
68
69 IF gv_matnr IS NOT INITIAL .
70
71 SELECT *
72 INTO CORRESPONDING FIELDS OF TABLE @gt_data
73 FROM marc
74 WHERE matnr = @gv_matnr .
75
76 ELSE .
77
78 SELECT *
79 INTO CORRESPONDING FIELDS OF TABLE @gt_data
80 FROM marc .
81
82 ENDIF .
83
84 ENDFORM .
85
86 FORM frm_set_fieldcat.
87 DATA: lv_name TYPE lvc_s_fcat-fieldname,
88 lv_scrtext TYPE lvc_s_fcat-scrtext_l.
89
90 REFRESH:gt_fieldcat.
91 PERFORM frm_build_fieldcat USING :
92 'MATNR' '' '' 'X' 'MARC' 'MATNR' '' '物料编码' ,
93 'WERKS' '' '' 'X' 'MARC' 'WERKS' '' '工厂' ,
94 'XCHAR' '' '' 'X' 'MARC' 'XCHAR' '' '批次' .
95
96 ENDFORM.
97
98 FORM frm_build_fieldcat USING pv_fieldname
99 pv_edit
100 pv_no_out
101 pv_no_zero
102 pv_ref_table
103 pv_ref_field
104 pv_f4
105 pv_reptext.
106
107 CLEAR gs_fieldcat.
108 gs_fieldcat-fieldname = pv_fieldname.
109 gs_fieldcat-edit = pv_edit.
110 gs_fieldcat-no_out = pv_no_out.
111 gs_fieldcat-no_zero = pv_no_zero.
112 gs_fieldcat-ref_table = pv_ref_table.
113 gs_fieldcat-ref_field = pv_ref_field.
114 gs_fieldcat-f4availabl = pv_f4.
115 gs_fieldcat-coltext = pv_reptext.
116 gs_fieldcat-reptext = pv_reptext.
117 gs_fieldcat-scrtext_l = pv_reptext.
118 gs_fieldcat-scrtext_m = pv_reptext.
119 gs_fieldcat-scrtext_s = pv_reptext.
120
121 APPEND gs_fieldcat TO gt_fieldcat.
122
123 ENDFORM.
124
125 FORM frm_set_layout .
126
127 gs_layout-zebra = 'X'.
128 gs_layout-cwidth_opt = 'X'.
129
130 ENDFORM.
131
132 FORM frm_refresh_alv.
133
134 CALL METHOD gs_alv->set_frontend_layout
135 EXPORTING
136 is_layout = gs_layout.
137
138 gs_stable-row = 'X'.
139 gs_stable-col = 'X'.
140
141 CALL METHOD gs_alv->refresh_table_display
142 EXPORTING
143 is_stable = gs_stable.
144
145 ENDFORM.
146
147 FORM frm_alv_out.
148
149 DATA:gt_exclude TYPE ui_functions,
150 ls_exclude TYPE ui_func,
151 lv_save,
152 ls_variant TYPE disvariant.
153 lv_save = 'A'.
154 ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row .
155 APPEND ls_exclude TO gt_exclude.
156 ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row .
157 APPEND ls_exclude TO gt_exclude.
158 ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row .
159 APPEND ls_exclude TO gt_exclude.
160 ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row .
161 APPEND ls_exclude TO gt_exclude.
162 CALL METHOD gs_alv->set_table_for_first_display
163 EXPORTING
164 * i_buffer_active =
165 * i_bypassing_buffer =
166 * i_consistency_check =
167 * i_structure_name =
168 is_variant = ls_variant
169 i_save = lv_save
170 * i_default = 'X'
171 is_layout = gs_layout
172 * is_print =
173 * it_special_groups =
174 it_toolbar_excluding = gt_exclude
175 * it_hyperlink =
176 * it_alv_graphics =
177 * it_except_qinfo =
178 * ir_salv_adapter =
179 CHANGING
180 it_outtab = gt_data
181 it_fieldcatalog = gt_fieldcat
182 * it_sort =
183 * it_filter =
184 EXCEPTIONS
185 invalid_parameter_combination = 1
186 program_error = 2
187 too_many_lines = 3
188 OTHERS = 4.
189
190 ENDFORM.
191
192 FORM frm_create_alv.
193
194 "后台运行,没有GUI,会有错误。
195 "判断是否后台运行
196 IF cl_gui_alv_grid=>offline( ) IS INITIAL.
197
198 "前台运行
199 "创建容器
200 CREATE OBJECT gs_con
201 EXPORTING
202 container_name = 'GC_CON'. "customer control控件的名称
203
204 "将ALV植入到容器中
205 CREATE OBJECT gs_alv
206 EXPORTING
207 i_parent = gs_con.
208 ELSE .
209
210 "后台运行
211 CREATE OBJECT gs_alv EXPORTING i_parent = g_dock.
212
213 ENDIF .
214
215 ENDFORM .
2.创建事务码
3.创建服务
可以在head后加上<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
4.SICF激活服务
服务路径:/sap/bc/gui/sap/its/