关键词不能为空

当前您在: 主页 > 英语 >

hirotoooalv自定义按钮、单击、双击、列编辑切换的事件

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-21 20:40
tags:

现身说法-

2021年1月21日发(作者:retreat)
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 TYPE typ_t001w .

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

.





-werks2 = -werks.





-zicon

= '@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

ooalv自定义按钮、单击、双击、列编辑切换的事件的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
ooalv自定义按钮、单击、双击、列编辑切换的事件随机文章