强制OOALV运行数据修改事件

来源:互联网 发布:淘宝怎么买爱奇艺会员 编辑:程序博客网 时间:2024/05/18 01:57

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 0