关键词不能为空

当前您在: 主页 > 英语 >

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自定义按钮、单击、双击、列编辑切换的事件的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

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