强制OOALV运行数据修改事件

5 篇文章 0 订阅

ALV中的数据修改事件,在编辑了某一个字段之后,如果点击了屏幕上不属于alv的部分,那么注册的失去焦点和回车事件(代码如下)是失效的,因为无论是失去焦点还是回车事件都是针对于当前alv的。

CALL METHOD PP_ALV_GRID->REGISTER_EDIT_EVENT  "注册更新事件
  EXPORTING
*          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER .
    I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED .

比如,当alv编辑了字段,点击了非alv元素的返回按钮,那么最后修改的字段的值是没有更新到展示的内表的,解决这个问题的方法如下,只需要在非alv元素点击事件的代码中加入如下代码:

* to react on custom events:
  CALL METHOD cl_gui_cfw=>dispatch.

* force ALV to copy the data from grid to the internal table
*(events DATA_CHANGED and DATA_CHANGED_FINISHED)
   CALL METHOD go_grid->check_changed_data.

这样,即使你没有回车或者点击alv中的元素,直接点击了返回按钮等,也可以把最后编辑的数据更新到内表中。
如果还不能实现你的要求,可能就要考虑使用table control了,以上只是个人见解,如有错误望各位指正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值