现身说法-
1
、需新建
屏幕
1001
并画
container
:
'CONT1'
2
、需新建屏幕
1002
并画
container
:
'CONT2'
3
、定义屏幕
1001
、
1002
的
ok_code
和逻辑流
4
、定义工具栏
程序代码:
1.
TABLES t001w.
2.
3.
TYPES:BEGIN OF typ_t001w ,
4.
werks
TYPE t001w-werks,
5.
name1
TYPE t001w-name1,
6.
werks2 TYPE t001w-werks,
7.
rowcolor
TYPE char10,
8.
zcheckbox TYPE c,
=
'ZCHECKBOX'.
9.
*
zflag
TYPE c,
10.
zicon
TYPE char10,
= 'ZICON'
图标需要显示的
11.
END OF typ_t001w.
12.
13.
TYPES:BEGIN OF typ_smf ,
14.
werks
TYPE t001w-werks,
15.
name1
TYPE t001w-name1,
16.
END OF typ_smf.
17.
18.
DATA:i_t001w
TYPE TABLE OF typ_t001w,
第一次
alv
内表
19.
i_detail TYPE TABLE OF typ_smf,
单击
ALV
内表列
ZICON
显示的明细
ALV
内表
20.
i_smf
TYPE TABLE OF typ_smf.
内表
21.
22.
DATA:fieldcat TYPE lvc_t_fcat,
23.
grid TYPE REF TO cl_gui_alv_grid,
控件名
24.
grid2 TYPE REF TO cl_gui_alv_grid,
控件名
25.
g_container TYPE scrfname VALUE 'CONT1',
重新定义本地容器对象名
26.
g_container2 TYPE scrfname VALUE 'CONT2',
重新定义本地容器对象名
27.
is_layout TYPE lvc_s_layo,
28.
ps_layout TYPE lvc_s_layo,
29.
g_custom_container TYPE REF TO cl_gui_custom_container,
30.
g_custom_container2 TYPE REF TO cl_gui_custom_container.
31.
32.
DATA: ui_functions TYPE ui_functions.
隐藏按钮的内表
33.
*********ALV
上事件捕捉类
34.
DATA:gs_toolbar TYPE stb_button.
按钮
35.
CLASS alv_event_receiver DEFINITION DEFERRED.
声明类对象
36.
*------------------------------------------------ ----------------------*
37.
*
CLASS alv_event_receiver DEFINITION
38.
*---------------------- ------------------------------------------------*
39.
*
40.
*--------------- -------------------------------------------------- -----*
41.
CLASS alv_event_receiver DEFINITION.
声明类成员可见性
42.
PUBLIC SECTION.
定义相关类成员可
以被程序中的所有对象调用
43.
CLASS-METHODS:
静态方法
44.
handle_toolbar
初始化工具栏对象
事件,如增加按钮并设定其属性
45.
FOR EVENT toolbar OF cl_gui_alv_grid
46.
IMPORTING e_object e_interactive,
47.
48.
handle_menu_button
用于在下拉菜单中
增加选项
49.
FOR EVENT menu_button OF cl_gui_alv_grid
50.
IMPORTING e_object e_ucomm,
51.
52.
handle_user_command
工具栏中的按钮的
单击事件
53.
FOR EVENT user_command OF cl_gui_alv_grid
54.
IMPORTING e_ucomm,
55.
56.
handle_hotspot_click
57.
FOR EVENT hotspot_click OF cl_gui_alv_grid
屏幕中的单击事件,
可以具体到某行某列,需要设置热点
58.
IMPORTING
e_row_id e_column_id es_row_no,
59.
60.
handle_double_click
61.
FOR EVENT double_click OF cl_gui_alv_grid
屏幕中的双击事件,
可以具体到某行某列,即使设置热点也必须双击
62.
IMPORTING e_row e_column es_row_no.
63.
ENDCLASS.
64.
*&---------------------------- -----------------------------------------*
65.
*&
Class (Implementation)
alv_event_receiver
66.
*&-------------------------------- -------------------------------------*
67.
*
Text
68.
*--------------------------------- -------------------------------------*
69.
CLASS alv_event_receiver IMPLEMENTATION.
实现类方法
70.
METHOD handle_toolbar.
71.
gs_toolbar-function =
'B_SUM'.
为按钮分配功能码
72.
gs_toolbar-icon
=
icon_display.
为按钮分配图标
73.
gs_toolbar-text
=
'
总行数
'.
为按钮分配文本
74.
gs_toolbar-butn_type = '0'.
定义按钮类型,不填时默认为
0
75.
APPEND gs_toolbar TO e_object->mt_toolbar.
添加按钮到工具栏
76.
77.
gs_toolbar-function =
'B_PRINT'.
为按钮分配功能码
78.
gs_toolbar-icon
=
icon_import.
为按钮分配图标
79.
gs_toolbar-text
=
'
转储订单
打印
'.
为按钮分配文本
80.
gs_toolbar-checked
= 'X'.
81.
gs_toolbar- butn_type = '0'.
定义按钮类型,不填时默认为
0
82.
APPEND gs_toolbar TO e_object->mt_toolbar.
添加按钮到工具栏
83.
84.
gs_toolbar- function =
'B_LIST'.
为按钮分配功能码
85.
gs_toolbar-quickinfo = '
自定义下拉菜单
'.
86.
gs_toolbar-icon
=
icon_biw_report_view.
为按钮分配图标
87.
gs_toolbar- text
=
'
下拉菜单
'.
为按钮分配文本
88.
gs_toolbar-butn_type = '1'.
定义按钮类型
89.
APPEND gs_toolbar TO e_object->mt_toolbar.
添加按钮到工具栏
90.
91.
gs_toolbar-function =
'B_EDIT'.
为按钮分配功能码
92.
gs_toolbar-icon
=
icon_change.
为按钮分配图标
93.
gs_toolbar-text
=
'
切换编辑状态
'.
为按钮分配文本
94.
gs_toolbar-checked
= 'X'.
95.
gs_toolbar- butn_type = '0'.
定义按钮类型,不填时默认为
0
96.
APPEND gs_toolbar TO e_object->mt_toolbar.
添加按钮到工具栏
97.
ENDMETHOD.
98.
METHOD handle_menu_button.
99.
IF e_ucomm = 'B_LIST'.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
CALL METHOD e_object->add_function
EXPORTING
icon
= icon_display
fcode = 'B_SUM'
text
= '
显示
ALV
总数
'.
ENDIF.
ENDMETHOD.
METHOD handle_user_command.
DATA sum TYPE i.
DATA text TYPE string.
DATA: lwa_t001w LIKE LINE OF i_t001w.
DATA: lwa_smf
LIKE LINE OF i_smf.
CASE e_ucomm.
WHEN
'B_SUM'.
DESCRIBE TABLE i_t001w[] LINES sum.
text = sum.
CONCATENATE
'
当前表格中数据的总行数
:' text
INTO text.
MESSAGE
text
TYPE 'I'.
为何消息类型为
E
时运行时显示
A
类型,
异常终止到初始界面
119.
120.
121.
122.
123.
124.
125.
126.
127.
WHEN 'B_PRINT'.
LOOP AT i_t001w
INTO lwa_t001w WHERE
zcheckbox = 'X'.
lwa_smf-werks = lwa_t001w-werks.
lwa_smf-name1 = lwa_t001w-name1.
APPEND
lwa_smf TO i_smf.
CLEAR :lwa_t001w,lwa_smf.
ENDLOOP.
IF i_smf[] IS INITIAL.
MESSAGE '
请至少选择一行数据区打印!
' TYPE 'E'.
类型消息会
转化为
A
类型,很蛋疼,求破!
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.
ELSE.
PERFORM frm_print_data.
这个没具体写。
ENDIF.
WHEN 'B_EDIT'.
IF grid->is_ready_for_input( ) EQ 0.
CALL METHOD grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD grid->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
内表展示处单击事件捕捉,需要设置热点对单击列字段
METHOD handle_hotspot_click.
DATA:lwa_t001w LIKE LINE OF
i_t001w.
READ TABLE i_t001w INTO lwa_t001w INDEX es_row_no-row_id.
判断行号
CASE e_column_id- fieldname .
判断列名
WHEN 'NAME1'.
CALL TRANSACTION 'ME51N' AND SKIP FIRST SCREEN.
随便写的
WHEN 'ZICON'.
SELECT werks
name1
INTO TABLE i_detail
FROM t001w
WHERE werks = lwa_t001w-werks2.
CLEAR lwa_t001w.
158.
159.
160.
161.
162.
163.
164.
165.
IF sy-subrc NE 0.
MESSAGE
'No result finding!' TYPE 'I'.
ELSE.
CALL SCREEN 1002.
ENDIF.
WHEN OTHERS.
ENDCASE.
*
MESSAGE i001(00) WITH '
当前行:
' es_row_no-row_id '
,航线代码:
'
ls_lt001w-werks.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
-*
182.
183.
-*
184.
185.
*
text
*---- -------------------------------------------------- ---------------
*&
Module
STATUS_1001
OUTPUT *&---------------------------------------------- ----------------------
ENDMETHOD.
内表展示处双击击事件捕捉,如果设置热点双击不起作用
METHOD handle_double_click.
DATA:lwa_t001w LIKE LINE OF i_t001w.
READ TABLE i_t001w INTO lwa_t001w INDEX es_row_no-row_id.
IF e_column-fieldname = 'WERKS'.
SET PARAMETER ID 'AUN' FIELD lwa_t001w-werks.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
CALL SCREEN 1001.
*&----------- -------------------------------------------------- -------
-*
186.
187.
188.
189.
190.
-*
191.
192.
-*
193.
194.
-*
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
MODULE user_command_1001 INPUT.
FIELD-SYMBOLS
DATA: i TYPE i VALUE 0.
DATA ok_code TYPE sy-ucomm.
ok_code = sy- ucomm.
CLEAR sy-ucomm.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EDIT'.
IF grid->is_ready_for_input( ) EQ 0.
CALL METHOD grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD grid->set_ready_for_input
EXPORTING
*
text
*---- -------------------------------------------------- ---------------
*&
Module
USER_COMMAND_1001
INPUT
*&---------------------------------- ----------------------------------
MODULE status_1001 OUTPUT.
SET PF-STATUS 'T001'.
*
SET TITLEBAR 'xxx'.
ENDMODULE.
OUTPUT
*& -------------------------------------------------- ------------------
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
钮
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
-*
235.
236.
-*
237.
238.
-*
239.
i_ready_for_input = 0.
ENDIF.
WHEN 'EXECU'.
SELECT * FROM t001w
INTO CORRESPONDING FIELDS OF TABLE i_t001w.
LOOP AT
i_t001w
ASSIGNING
.
= '@16@'.
图标
ENDLOOP.
IF g_custom_container IS INITIAL.
PERFORM exclude_tb_functions CHANGING ui_functions.
隐藏某些按
PERFORM frm_layout_set.
PERFORM frm_fieldcat_set.
PERFORM alv_show.
ELSE.
CALL METHOD grid->refresh_table_display.
刷新
ENDIF.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
INPUT
*&----------------- -------------------------------------------------- -
*&
Form
ALV_SHOW
*&------------------------------- -------------------------------------
*
text
*-------------- -------------------------------------------------- -----
*
-->
p1
text
240.
241.
-*
242.
243.
象
244.
245.
*
<--
p2
text
*-- -------------------------------------------------- -----------------
FORM alv_show .
CREATE OBJECT g_custom_container
创建容器对
EXPORTING container_name = g_container.
CREATE OBJECT grid
创建
ALV
对象
246.
247.
EXPORTING i_parent = g_custom_container.
CALL METHOD grid->register_edit_event
可编辑回传
方法
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
EXPORTING
i_event_id = grid->mc_evt_modified.
CALL METHOD grid->set_table_for_first_display
EXPORTING
*
I_BUFFER_ACTIVE
=
*
I_BYPASSING_BUFFER
=
*
I_CONSISTENCY_CHECK
=
*
I_STRUCTURE_NAME
= 'T001W'
*
IS_VARIANT
=
i_save
= 'X'
*
I_DEFAULT
= 'X'
is_layout
= is_layout
*
IS_PRINT
=
*
IT_SPECIAL_GROUPS
=
it_toolbar_excluding = ui_functions[]
*
IT_HYPERLINK
=
*
IT_ALV_GRAPHICS
=
*
IT_EXCEPT_QINFO
=
*
IR_SALV_ADAPTER
=
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
-*
291.
292.
-*
293.
294.
-*
CHANGING
it_outtab
= i_t001w[]
it_fieldcatalog
= fieldcat[].
*
IT_SORT
=
*
IT_FILTER
=
*
EXCEPTIONS
*
INVALID_PARAMETER_COMBINATION = 1
*
PROGRAM_ERROR
= 2
*
TOO_MANY_LINES
= 3
*
others
= 4
.
******
注册
ALV
中引用的事件
SET HANDLER alv_event_receiver=>handle_toolbar
alv_event_receiver=>handle_menu_button
alv_event_receiver=>handle_user_command
alv_event_receiver=>handle_hotspot_click
alv_event_receiver=>handle_double_click
FOR ALL INSTANCES.
****
调用方法激活自定义工具对象
CALL METHOD grid->set_toolbar_interactive.
ENDFORM.
*&- -------------------------------------------------- -----------------
*&
Form
exclude_tb_functions
*&----- -------------------------------------------------- -------------
*
text
*---------------------------------------- -----------------------------
295.
296.
-*
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
*
-->PT_EXCLUDE text
*------------ -------------------------------------------------- -------
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions .
DATA ls_exclude TYPE ui_func.
ls_exclude = cl_gui_alv_grid=>mc_fc_filter .
过滤器
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_current_variant .
布局更改
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_average .
平均值
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_mb_sum .
求和
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_mb_export .
导出
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut .
剪切
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row .
删除行
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row .
插入行
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_refresh .
刷新
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_find .
查找
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc .
升序排列
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc .
降序排列
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_views .
视图
APPEND ls_exclude TO pt_exclude.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
-*
343.
344.
-*
345.
346.
-*
347.
348.
349.
-*
350.
351.
ls_exclude = cl_gui_alv_grid=>mc_fc_print .
打印
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_detail .
详细按钮
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_graph .
显示图形
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_info .
最终用户文档
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row .
附加行
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row .
复制行
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy .
复制文本
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo .
撤消
APPEND ls_exclude TO pt_exclude.
ENDFORM .
*&----------------- -------------------------------------------------- -
*&
Form
FRM_LAYOUT_SET
*&------------------------- -------------------------------------------
*
text
*----------- -------------------------------------------------- --------
*
-->
p1
text
*
<--
p2
text
*-- -------------------------------------------------- -----------------
FORM frm_layout_set .
is_layout-zebra = 'X' .
352.
353.
354.
355.
356.
is_layout-grid_title = '
仓储转储订单跟踪及打印
' .
is_layout- smalltitle = 'X' .
控制
:
标题大小
is_layout-cwidth_opt = 'X' .
优化列宽
*
is_layout- no_toolbar = 'X' .
隐藏按钮
is_layout-sel_mode = 'A' .
选择方式
A
:行和列的选择
,
无法选择单元
格
多行,多列
B
357.
358.
359.
-*
360.
361.
-*
362.
363.
-*
364.
365.
366.
-*
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
FORM frm_fieldcat_set .
DATA ls_fcat TYPE lvc_s_fcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'ZCHECKBOX' .
ls_fcat-coltext = '
选择
'.
*
ls_fcat-emphasize = 'C601' .
列颜色控制
ls_fcat-checkbox
= 'X'.
ls_fcat-edit
= 'X'.
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
*
-->
p1
text
*
<--
p2
text
*----------------------------- ----------------------------------------
*
text
*-------------- -------------------------------------------------- -----
*&
Form
FRM_FIELDCAT_SET
*&----------------------- ---------------------------------------------
is_layout-info_fname = 'ROWCOLOR'.
ENDFORM.
*&------ -------------------------------------------------- ------------
378.
379.
380.
381.
382.
383.
384.
ls_fcat-fieldname = 'WERKS' .
ls_fcat-inttype = 'C' .
ls_fcat-outputlen = '4' .
ls_fcat- coltext = '
工厂
'.
列标题
ls_fcat-seltext = 'AAA' .
控制
:
对话功能的列标识符
ls_fcat-emphasize = 'C601' .
列颜色控制
*
ls_fcat- hotspot
= 'X'.
“不能设置
hotspot
否则
double click
事件
无效
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'NAME1' .
ls_fcat-ref_table = 'T001W' .
ls_fcat-ref_field = 'NAME1' .
ls_fcat-outputlen = '30' .
ls_fcat- coltext = '
工厂名称
' .
ls_fcat- hotspot
= 'X'.
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'WERKS2' .
ls_fcat-inttype = 'C' .
ls_fcat- outputlen = '4' .
ls_fcat-coltext = '
工厂
2
号
'.
列标题
ls_fcat-seltext = 'AAA' .
控制
:
对话功能的列标识符
ls_fcat-emphasize = 'C601' .
列颜色控制
ls_fcat-edit
= 'X'.
APPEND ls_fcat TO fieldcat .
CLEAR ls_fcat .
ls_fcat-fieldname = 'ZICON' .
现身说法-
现身说法-
现身说法-
现身说法-
现身说法-
现身说法-
现身说法-
现身说法-
本文更新与2021-01-21 20:40,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/546069.html