代码之家  ›  专栏  ›  技术社区  ›  user3463645

在程序退出时执行某些操作

  •  2
  • user3463645  · 技术社区  · 7 年前

    在我的ABAP程序中,我在开始时更新表tab1中的字段X,在最后一步中,如果一切正常,我将反转此更新。重要的是,在执行程序的过程中,字段X有正确的值。

    但是,当我使用close按钮而不是SAP cancel按钮(F12)退出事务时,程序终止,并且不会转到程序的末尾,因此不会反转开始时所做的更新。

    enter image description here

    有没有办法在关闭报表后执行一些代码?

    2 回复  |  直到 5 年前
        1
  •  0
  •   mkysoft    7 年前

    我想你是想增加锁机制。ABAP有自己的对象锁定机制。如果用户注销、关闭报表或会话终止,系统将自动解锁。我喜欢用锁紧装置, example

    如果你工作的情景不同;将user和lock time的新列添加到同一个表中,并检查user是否联机,否则删除锁。

        2
  •  5
  •   Sandra Rossi    7 年前

    不能由程序控制 (这适用于“外部模式”,即全屏窗口,这似乎是您的问题,但不适用于弹出窗口,其关闭按钮可以控制)。

    正因为如此,SAP对其Dynpro应用程序进行了如下编程:

    • SAP在整个应用程序结束时更新数据库
    • 最后,如果屏幕的某些部分由“外部”应用程序处理,SAP会通过“更新任务”记录中间更新(即,它们会被延迟,直到应用程序结束时完成提交工作)。注意,SAP也经常只在最后使用update任务,但这只是为了获得更好的对话框响应时间。

    自定义应用程序应遵循相同的原则。