二维码

abap中dialog的双击事件

Twilight发表于 2014-11-27 17:34Josa 最后回复于 2016-03-18 15:02 [复制链接] 13168 1

1、se38 新建程序
  1. TABLES:mara.
  2. CALL SCREEN 2000.
  3. *&---------------------------------------------------------------------*
  4. *&      Module  STATUS_2000  OUTPUT
  5. *&---------------------------------------------------------------------*
  6. *       text
  7. *----------------------------------------------------------------------*
  8. MODULE status_2000 OUTPUT.
  9.   SET PF-STATUS 'ZSTATUS'.
  10. *  SET TITLEBAR 'xxx'.
  11. ENDMODULE.                 " STATUS_2000  OUTPUT
  12. *&---------------------------------------------------------------------*
  13. *&      Module  USER_COMMAND_2000  INPUT
  14. *&---------------------------------------------------------------------*
  15. *       text
  16. *----------------------------------------------------------------------*
  17. MODULE user_command_2000 INPUT.
  18.   DATA:lv_cur_field(20),
  19.        lv_cur_val(18).
  20.   CASE sy-ucomm.
  21.     WHEN 'DCLICK'.
  22.       GET CURSOR FIELD lv_cur_field VALUE lv_cur_val.
  23.       CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
  24.         EXPORTING
  25.           input  = lv_cur_val
  26.         IMPORTING
  27.           output = lv_cur_val.
  28.       IF lv_cur_field = 'MARA-MATNR' AND lv_cur_val = mara-matnr.
  29.         SET PARAMETER ID 'MAT' FIELD lv_cur_val.
  30.         CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
  31.       ENDIF.
  32.     WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
  33.       LEAVE TO SCREEN 0.
  34.   ENDCASE.
  35. ENDMODULE.                 " USER_COMMAND_2000  INPUT
复制代码

2、新建屏幕2000
1)画屏幕元素,可直接从数据字典中取出
DOUBLE CLICK 2.jpg
回应双击的字段的属性: 响应双击/Responds to Double-Click 给勾选上
2)定义工具栏
在状态定义上给F2的功能键分配一个功能码DCLICK,用来捕捉sy-ucomm的值
DOUBLE CLICK 1.jpg

3、测试
se16-mara取出一个物料编码,输入,然后双击
DOUBLE CLICK 3.jpg
双击之后会调到mm03界面
DOUBLE CLICK 4.jpg

PS:SET/GET CURSOR FIELD用法
  • SET CURSOR FIELD 这个是设置鼠标焦点到字段
  • SET CURSOR <COL> <ROW> 设置到鼠标焦点列还是行
  • SET CURSOR LINE <ROW> 设置鼠标焦点到行 这个是设置鼠标焦点的。
  • GET CURSOR field 这个相对应的获取鼠标焦点得到的字段

如果是在TABLE CONTROL中可以用GET CURSOR FIELD LINE 来捕捉鼠标双击了那个字段

相关程序参考:TABLE CONTROL 行双击事件
回复

使用道具 举报

Josa
本帖最后由 Josa 于 2016-3-18 15:03 编辑
  1. IF lv_cur_field = 'MARA-MATNR' AND lv_cur_val = mara-matnr.
  2.   SET PARAMETER ID 'MXX' FIELD 'K'.
  3.   SET PARAMETER ID 'MAT' FIELD lv_cur_val.
  4.   CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
  5. ENDIF.
复制代码

多了一行 SET PARAMETER ID 'MXX' FIELD 'K'. ------K表示跳转到物料主数据的基本视图一,其它视图可以查看表T132。
回复 支持 1 反对 0

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表