BASIS--笨办法解决ALV_GRID的列剪切丢失纪录的错误

时间:2023-03-05 22:52:37

最近经常有业务人员问及在ALV_grid输出报表中,选择某一列,点击左键,并点击弹出菜单的复制文本,复制出的文本存在丢失 (纪录不少,但部分纪录的文本丢失)。该如何解决呢?

后来跟踪代码发现这个命令没有向后台提交APPLICATION命令,应该提交的是SYSTEM事件。这样就没法跟踪了,我就想到用“pagedown",将GRID显示的数据都刷新显示出来,再来做这个操作就没有纪录丢失了。

得出的结论,sap的gui的执行拷贝实际上是拷贝客户端的缓冲。

关于system event 和application event的说明:

  • System events
    are is triggered before any automatic field checks (for example, required fields) have taken place on the screen, and before any field transport. The PAI and PBO events are not triggered. Consequently, you cannot access any values that the user has just changed on the screen. Furthermore, there is no field transport back to the screen after the event, so values that you have changed in the event handling are not updated on the screen.

The handler method that you defined for the event is called automatically by the system. However, you can use the method set_new_ok_code to set a new value for the OK_CODE field. This then triggers the PAI and PBO modules, and you can evaluate the contents of the OK_CODE field as normal in a PAI module.CL_GUI_CFW=>DISPATCH .

  • Application events
  • are triggered automatically at the end of the PAI event. Consequently, all field checks and field transport has taken place. If you want the event handler method to be called at a particular point during PAI processing, you must trigger the event handler using the static method
  • 转自:http://silverw0396.iteye.com/blog/229283