ooalv自定义按钮单击双击列编辑切换的事件资料.docx
- 文档编号:8694027
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:23
- 大小:158.48KB
ooalv自定义按钮单击双击列编辑切换的事件资料.docx
《ooalv自定义按钮单击双击列编辑切换的事件资料.docx》由会员分享,可在线阅读,更多相关《ooalv自定义按钮单击双击列编辑切换的事件资料.docx(23页珍藏版)》请在冰豆网上搜索。
ooalv自定义按钮单击双击列编辑切换的事件资料
1、需新建屏幕1001并画container:
'CONT1'
2、需新建屏幕1002并画container:
'CONT2'
3、定义屏幕1001、1002的ok_code和逻辑流
4、定义工具栏
程序代码:
1.TABLESt001w.
2.
3.TYPES:
BEGINOFtyp_t001w,
4. werks TYPEt001w-werks,
5. name1 TYPEt001w-name1,
6. werks2TYPEt001w-werks,
7. rowcolor TYPEchar10,
8. zcheckboxTYPEc, "LAYOUT-CHECBOX = 'ZCHECKBOX'.
9.* zflag TYPEc, "LAYOUT-BOX_FNAME='ZFLAG'.
10. zicon TYPEchar10,"LAYOUT-ICON ='ZICON' 图标需要显示的
11. ENDOFtyp_t001w.
12.
13.TYPES:
BEGINOFtyp_smf,
14. werks TYPEt001w-werks,
15. name1 TYPEt001w-name1,
16. ENDOFtyp_smf.
17.
18.DATA:
i_t001w TYPETABLEOFtyp_t001w,"""""第一次alv内表
19. i_detailTYPETABLEOFtyp_smf,"""""单击ALV内表列ZICON显示的明细ALV内表
20. i_smf TYPETABLEOFtyp_smf.""""SF内表
21.
22.DATA:
fieldcatTYPElvc_t_fcat,
23. gridTYPEREFTOcl_gui_alv_grid, "alv控件名
24. grid2TYPEREFTOcl_gui_alv_grid, "alv控件名
25. g_containerTYPEscrfnameVALUE'CONT1',"重新定义本地容器对象名
26. g_container2TYPEscrfnameVALUE'CONT2',"重新定义本地容器对象名
27. is_layoutTYPElvc_s_layo,
28. ps_layoutTYPElvc_s_layo,
29. g_custom_containerTYPEREFTOcl_gui_custom_container,
30. g_custom_container2TYPEREFTOcl_gui_custom_container.
31.
32.DATA:
ui_functionsTYPEui_functions."隐藏按钮的内表
33.*********ALV上事件捕捉类
34.DATA:
gs_toolbarTYPEstb_button. "按钮
35.CLASSalv_event_receiverDEFINITIONDEFERRED."声明类对象
36.*----------------------------------------------------------------------*
37.* CLASSalv_event_receiverDEFINITION
38.*----------------------------------------------------------------------*
39.*
40.*----------------------------------------------------------------------*
41.CLASSalv_event_receiverDEFINITION. "声明类成员可见性
42. PUBLICSECTION. "定义相关类成员可以被程序中的所有对象调用
43. CLASS-METHODS:
"静态方法
44. handle_toolbar "初始化工具栏对象事件,如增加按钮并设定其属性
45. FOREVENTtoolbarOFcl_gui_alv_grid
46. IMPORTINGe_objecte_interactive,
47.
48. handle_menu_button "用于在下拉菜单中增加选项
49. FOREVENTmenu_buttonOFcl_gui_alv_grid
50. IMPORTINGe_objecte_ucomm,
51.
52. handle_user_command "工具栏中的按钮的单击事件
53. FOREVENTuser_commandOFcl_gui_alv_grid
54. IMPORTINGe_ucomm,
55.
56. handle_hotspot_click
57. FOREVENThotspot_clickOFcl_gui_alv_grid "屏幕中的单击事件,可以具体到某行某列,需要设置热点
58. IMPORTING e_row_ide_column_ides_row_no,
59.
60. handle_double_click
61. FOREVENTdouble_clickOFcl_gui_alv_grid "屏幕中的双击事件,可以具体到某行某列,即使设置热点也必须双击
62. IMPORTINGe_rowe_columnes_row_no.
63.ENDCLASS. "alv_event_receiverDEFINITION
64.*&---------------------------------------------------------------------*
65.*& Class(Implementation) alv_event_receiver
66.*&---------------------------------------------------------------------*
67.* Text
68.*----------------------------------------------------------------------*
69.CLASSalv_event_receiverIMPLEMENTATION. "实现类方法
70. METHODhandle_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. APPENDgs_toolbarTOe_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. APPENDgs_toolbarTOe_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. APPENDgs_toolbarTOe_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. APPENDgs_toolbarTOe_object->mt_toolbar."添加按钮到工具栏
97. ENDMETHOD. "handle_toolbar
98. METHODhandle_menu_button.
99. IFe_ucomm='B_LIST'.
100. CALLMETHODe_object->add_function
101. EXPORTING
102. icon =icon_display
103. fcode='B_SUM'
104. text ='显示ALV总数'.
105. ENDIF.
106. ENDMETHOD. "handle_menu_button
107. METHODhandle_user_command.
108. DATAsumTYPEi.
109. DATAtextTYPEstring.
110. DATA:
lwa_t001wLIKELINEOFi_t001w.
111. DATA:
lwa_smf LIKELINEOFi_smf.
112.
113. CASEe_ucomm.
114. WHEN 'B_SUM'.
115. DESCRIBETABLEi_t001w[]LINESsum.
116. text=sum.
117. CONCATENATE '当前表格中数据的总行数:
'text INTOtext.
118. MESSAGE text TYPE'I'."为何消息类型为E时运行时显示A类型,异常终止到初始界面
119. WHEN'B_PRINT'.
120. LOOPATi_t001w INTOlwa_t001wWHERE zcheckbox='X'.
121. lwa_smf-werks=lwa_t001w-werks.
122. lwa_smf-name1=lwa_t001w-name1.
123. APPEND lwa_smfTOi_smf.
124. CLEAR:
lwa_t001w,lwa_smf.
125. ENDLOOP.
126. IFi_smf[]ISINITIAL.
127. MESSAGE'请至少选择一行数据区打印!
'TYPE'E'."E类型消息会转化为A类型,很蛋疼,求破!
128. ELSE.
129. PERFORMfrm_print_data. "这个没具体写。
130. ENDIF.
131. WHEN'B_EDIT'.
132. IFgrid->is_ready_for_input()EQ0.
133. CALLMETHODgrid->set_ready_for_input
134. EXPORTING
135. i_ready_for_input=1.
136. ELSE.
137. CALLMETHODgrid->set_ready_for_input
138. EXPORTING
139. i_ready_for_input=0.
140. ENDIF.
141. WHENOTHERS.
142. ENDCASE.
143. ENDMETHOD. "handle_user_command
144. "ALV内表展示处单击事件捕捉,需要设置热点对单击列字段
145. METHODhandle_hotspot_click.
146. DATA:
lwa_t001wLIKELINEOF i_t001w.
147. READTABLEi_t001wINTOlwa_t001wINDEXes_row_no-row_id."判断行号
148. CASEe_column_id-fieldname."判断列名
149. WHEN'NAME1'.
150. CALLTRANSACTION'ME51N'ANDSKIPFIRSTSCREEN."随便写的
151. WHEN'ZICON'. "
152. SELECTwerks
153. name1
154. INTOTABLEi_detail
155. FROMt001w
156. WHEREwerks=lwa_t001w-werks2.
157. CLEARlwa_t001w.
158. IFsy-subrcNE0.
159. MESSAGE 'Noresultfinding!
'TYPE'I'.
160. ELSE.
161. CALLSCREEN1002.
162. ENDIF.
163. WHENOTHERS.
164. ENDCASE.
165.* MESSAGEi001(00)WITH'当前行:
'es_row_no-row_id',航线代码:
'ls_lt001w-werks.
166. ENDMETHOD. "handle_hotspot_click
167. "ALV内表展示处双击击事件捕捉,如果设置热点双击不起作用
168. METHODhandle_double_click.
169. DATA:
lwa_t001wLIKELINEOFi_t001w.
170. READTABLEi_t001wINTOlwa_t001wINDEXes_row_no-row_id.
171. IFe_column-fieldname='WERKS'.
172. SETPARAMETERID'AUN'FIELDlwa_t001w-werks.
173. CALLTRANSACTION'VA03'ANDSKIPFIRSTSCREEN.
174. ENDIF.
175. ENDMETHOD. "handle_double_click
176.
177.ENDCLASS. "alv_event_receiver
178.START-OF-SELECTION.
179. CALLSCREEN1001.
180.
181.*&---------------------------------------------------------------------*
182.*& Module STATUS_1001 OUTPUT
183.*&---------------------------------------------------------------------*
184.* text
185.*----------------------------------------------------------------------*
186.MODULEstatus_1001OUTPUT.
187. SETPF-STATUS'T001'.
188.* SETTITLEBAR'xxx'.
189.ENDMODULE. "STATUS_1001 OUTPUT
190.*&---------------------------------------------------------------------*
191.*& Module USER_COMMAND_1001 INPUT
192.*&---------------------------------------------------------------------*
193.* text
194.*----------------------------------------------------------------------*
195.MODULEuser_command_1001INPUT.
196. FIELD-SYMBOLS
197. DATA:
iTYPEiVALUE0.
198. DATAok_codeTYPEsy-ucomm.
199. ok_code=sy-ucomm.
200. CLEARsy-ucomm.
201.
202. CASEok_code.
203. WHEN'BACK'.
204. LEAVETOSCREEN0.
205. WHEN'EDIT'.
206. IFgrid->is_ready_for_input()EQ0.
207. CALLMETHODgrid->set_ready_for_input
208. EXPORTING
209. i_ready_for_input=1.
210. ELSE.
211. CALLMETHODgrid->set_ready_for_input
212. EXPORTING
213. i_ready_for_input=0.
214. ENDIF.
215. WHEN'EXECU'.
216. SELECT*FROMt001w
217. INTOCORRESPONDINGFIELDSOFTABLEi_t001w.
218. LOOPAT i_t001w ASSIGNING
219.
220.
221. ENDLOOP.
222.
223. IFg_custom_containerISINITIAL.
224. PERFORMexclude_tb_functionsCHANGINGui_functions."隐藏某些按钮
225. PERFORMfrm_layout_set.
226. PERFORMfrm_fieldcat_set.
227. PERFORMalv_show.
228. ELSE.
229. CALLMETHODgrid->refresh_table_display."刷新
230. ENDIF.
231. WHENOTHERS.
232. ENDCASE.
233.ENDMODULE. "USER_COMMAND_1001 INPUT
234.*&---------------------------------------------------------------------*
235.*& Form ALV_SHOW
236.*&----------------------------------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ooalv 自定义 按钮 单击 双击 编辑 切换 事件 资料