本文主要是介绍强制OOALV运行数据修改事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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了,以上只是个人见解,如有错误望各位指正!
这篇关于强制OOALV运行数据修改事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!