ABAP 使用REUSE_ALV_GRID_DISPLAY实现 ALV列可编辑,编辑刷新后换成不可编辑状态

本文介绍如何使用ABAP中的REUSE_ALV_GRID_DISPLAY创建ALV表格,使得列在编辑后能切换到不可编辑状态。通过在USER_COMMAND事件中处理刷新命令,并在FIELDCAT中修改设置,避免了多次显示ALV的问题。利用额外的全局变量和SY-SUBRC判断,确保在刷新后仅显示最新的、不可编辑的ALV。

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

ABAP 使用REUSE_ALV_GRID_DISPLAY实现 ALV列可编辑,编辑刷新后换成不可编辑状态。

此方法实现简单,但是效率可能不高。网上有个方法,点击修改按钮,将alv某列的不可编辑状态转为可编辑状态,实现后弹出两个ALV,一个不可编辑状态的,一个原ALV(返回后可看到)。此方法就是针对那方法的改进。


更新
下面更新的代码是正统的操作方法,和网上其他的最大的不同在于
FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’ 里面多导入了一个参数sy-cprog
实现完美刷新,没有多个ALV。

FORM alv_user_command USING r_ucomm     LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield.
DATA: lr_grid  TYPE REF TO cl_gui_alv_grid,
    WHEN '&REFRESH'.                              *刷新button
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_repid = sy-cprog                        *网上代码没有这个,这个是必须的!!!!*
        e_grid  = lr_grid.

      CALL METH
### ABAP REUSE_ALV_GRID_DISPLAY_LVC `DATA_CHANGED` 事件处理 在ABAP中,当使用 `REUSE_ALV_GRID_DISPLAY_LVC` 方法展示数据时,可能会遇到 `DATA_CHANGED` 事件触发不正常的情况。此问题通常发生在用户修改表格中的某些单元格后,系统未能正确识别这些更改并执行相应的逻辑。 为了确保 `DATA_CHANGED` 能够被正确捕获,在调用 `REUSE_ALV_GRID_DISPLAY_LVC` 函数模块之前,需配置特定的网格设置选项[^2]: ```abap DATA: ls_setting TYPE lvc_s_glay. ls_setting-edt_cll_cb = 'X'. ``` 上述代码片段设置了允许编辑功能,使得 ALV 表格内的单元格可以响应用户的输入操作,并能激活后续的数据变更检测机制。 一旦完成了必要的初始化工作,则可以通过定义一个自定义的方法来接收来自 `DATA_CHANGED` 的回调通知。下面是一个简单的例子说明如何创建这样一个处理器函数: ```abap METHODS on_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING e_modified. ... ENDMETHOD. ``` 在这个方法内部,可以根据实际需求编写业务逻辑以应对不同类型的改动情况。例如验证新录入的信息是否合法、更新关联记录或是保存最新的状态到数据库等动作都可以在此处完成。 最后一步是在启动 ALV 显示前注册该监听器对象给对应的实例变量: ```abap SET HANDLER me->on_data_changed FOR go_alv_grid. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' ... ENDMETHOD. ``` 通过这种方式就可以有效地监控和管理由终端用户引起的任何变动,从而保障应用程序的一致性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值