在屏幕中实现对鼠标双击事件的响应
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在屏幕中实现对鼠标双击事件的响应
张国强2011-12-29
在ABAP程序开发过程中时常需要对在屏幕上进行的鼠标双击的操作进行处理。对于不同的屏幕或控件,实现该功能的实现过程是不同的。
1. 传统列表屏幕中的处理
传统列表屏幕是指WRITE输出的屏幕。
DATA: number TYPE i VALUE '1234567890'.
WRITE: /(5) number. "输出结果 *7890
AT LINE-SELECTION.
CASE sy-ucomm.
WHEN 'PICK'. "对屏幕上的鼠标双击操作进行处理
WRITE / 'TEST'.
WHEN OTHERS.
ENDCASE.
2. 全屏幕ALV控件中的处理
TYPE-POOLS slis .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'FRM_USER_COMMAND'
is_layout = ls_layout
it_fieldcat = lt_fieldcat
i_save = 'A'
TABLES
t_outtab = it_out[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
FORM frm_user_command USING rf_ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
CASE rf_ucomm.'或sy-ucomm.
WHEN '&IC1'. "对ALV中的鼠标双击操作进行处理
MESSAGE '成功!' TYPE 'I'.
WHEN OTHERS.
ENDCASE.
ENDFORM.
3. 在屏幕表控件中的处理
首先为屏幕定义一个状态,在状态中为F2功能键设置功能码。
然后在PBO模块中,为屏幕设定状态。
MODULE status_2000 OUTPUT.
SET PF-STATUS 'S_2000'.
ENDMODULE.
再在屏幕上创建表控件ctl_tab,将表控件与内表itab绑定在一起。最后在屏幕的PAI模块中添加功能。
MODULE user_command_2000 INPUT.
FIELD-SYMBOLS:
DATA: l_tabindx TYPE i, "双击的表控件行数据对应的内表索引号
current_line TYPE i, "界面上双击的表控件行号
save_ok LIKE sy-ucomm.
save_ok = ok_code.
CASE save_ok.
WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.
LEAVE TO SCREEN 0.
WHEN 'DOUBLE'. "响应表控件中的双击行操作
GET CURSOR LINE current_line. " current_line双击的表控件行号
"ctl_tab-top_line 界面中表控件首行数据的内表索引号
l_tabindx = ctl_tab-top_line + current_line - 1. "对应内表索引行
READ TABLE itab ASSIGNING
WHEN OTHERS.
ENDCASE.
ENDMODULE.