abap alv双击事件

本文详细介绍了如何在ABAP中使用ALV Grid进行数据展示,并通过定义热键和双击事件,实现从ALV Grid跳转到MM03事务码的具体操作流程。此外,还提供了完整的代码示例,帮助读者理解并应用到实际项目中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TABLES:MARA.
TYPE-POOLS: SLIS.
SELECT-OPTIONS:MATNR FOR MARA-MATNR OBLIGATORY.

DATA:LT_MARA TYPE TABLE OF MARA WITH HEADER LINE,
FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
LAYOUT TYPE SLIS_LAYOUT_ALV,
W_REPID LIKE SY-REPID.

START-OF-SELECTION.
SELECT * FROM MARA INTO TABLE LT_MARA
WHERE MATNR IN MATNR.

W_REPID = SY-REPID.

  • 定义热键显示字段,使双击事件有效
    FIELDCAT-REF_TABNAME = ‘LT_MARA’.
    FIELDCAT-FIELDNAME = ‘MATNR’.
    FIELDCAT-HOTSPOT = ‘X’.
    APPEND FIELDCAT.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = W_REPID "定义回执程序
IS_LAYOUT = LAYOUT
I_STRUCTURE_NAME = ‘MARA’
I_CALLBACK_USER_COMMAND = ‘ALV_USER_COMMAND’ "定义执行事件
IT_FIELDCAT = FIELDCAT[]
TABLES
T_OUTTAB = LT_MARA.

---------------------------------------------------------------------

  •   事件触发子程序                         *
    

---------------------------------------------------------------------
FORM ALV_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN ‘&IC1’.

  • 获取当前ALV所在行数据
    READ TABLE LT_MARA INDEX RS_SELFIELD-TABINDEX.
    SET PARAMETER ID: ‘MAT’ FIELD LT_MARA-MATNR.
    CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN.
    ENDCASE.
    ENDFORM.

作者:兔宝
来源:优快云
原文:https://blog.youkuaiyun.com/szlaptop/article/details/8252093
版权声明:本文为博主原创文章,转载请附上博文链接!

### ABAP ALV 双击事件处理 示例代码 在ABAP中实现ALV网格双击行的功能,可以通过`REUSE_ALV_GRID_DISPLAY`函数模块来完成。此过程涉及设置事件处理器以及绑定自定义方法以响应用户的双击行为。 以下是完整的示例代码: ```abap REPORT zdemo_alv_double_click. TABLES: vbap. TYPE-POOLS: slis. DATA: gt_fieldcat TYPE slis_t_fieldcat_alv, gs_layout TYPE slis_layout_alv, go_custom_container TYPE REF TO cl_gui_custom_container, go_grid TYPE REF TO cl_gui_alv_grid, it_vbap TYPE TABLE OF vbap. START-OF-SELECTION. SELECT * FROM vbap INTO TABLE it_vbap UP TO 10 ROWS. CALL FUNCTION 'REUSE_ALV_FIELDNAME_GET' EXPORTING i_program_name = sy-repid IMPORTING et_fielddescription = gt_fieldcat[]. * 设置布局参数并启用双击事件 gs_layout-edit = 'X'. gs_layout-coltab_fname = 'VBELN'. * 创建自定义容器和ALV Grid对象 CREATE OBJECT go_custom_container EXPORTING container_name = 'CUSTOM_CONTAINER'. CREATE OBJECT go_grid EXPORTING i_parent = go_custom_container. * 显示ALV Grid CALL METHOD go_grid->set_table_for_first_display EXPORTING is_layout = gs_layout CHANGING it_outtab = it_vbap it_fieldcatalog = gt_fieldcat. * 注册双击事件 SET HANDLER on_double_click FOR go_grid. END-OF-SELECTION. METHOD on_double_click. DATA: lv_row_no TYPE i, ls_key TYPE slis_selfield. FIELD-SYMBOLS: <wa> TYPE any. * 获取当前选中的行号 CALL METHOD sender->get_current_cell_info IMPORTING e_row = lv_row_no. * 判断是否有有效行被点击 IF lv_row_no IS INITIAL. RETURN. ENDIF. * 获取对应的数据记录 READ TABLE it_vbap ASSIGNING <wa> INDEX lv_row_no. * 执行业务逻辑(例如弹出消息框) MESSAGE |You double-clicked row { lv_row_no } with VBELN: { <wa>-vbeln }| TYPE 'I'. ENDMETHOD. ``` #### 解析 上述代码实现了以下功能: 1. 使用`REUSE_ALV_GRID_DISPLAY`函数模块加载数据至ALV表格[^4]。 2. 配置了ALV的布局属性,并启用了编辑模式以便支持交互操作。 3. 定义了一个名为`on_double_click`的方法作为双击事件的处理器[^1]。 4. 当用户双击某一行时,程序会获取该行的信息并通过消息提示展示给用户[^2]。 注意,在实际应用开发过程中可能还需要进一步完善错误处理机制及用户体验优化等内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值