首页 > 解决方案 > 尽管 BAPI_TRANSACTION_ROLLBACK 仍提交数据库更新

问题描述

我有一个Modify更新自定义表的声明,之后我调用BAPI_CONTRACT_CHANGE. 当 BAPI 未能更改它正在调用的文档时BAPI_TRANSACTION_ROLLBACK。但是,它不会将数据更改回由Modify语句更新的自定义表中。

  IF gt_return[] IS NOT INITIAL.
    READ TABLE gt_return INTO gwa_return WITH KEY type = 'E'.
    IF sy-subrc EQ 0.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      MESSAGE i021(zxx).
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = abap_true.
    ENDIF.
  ENDIF.

感谢您的回复。

修改语句存在于 bapi 调用之前的某处。该程序也可以从外部门户运行。当我从门户网站运行它时,行为与预期一致,即 BAPI_TRANSACTION_ROLLBACK 有效,并且自定义表中的数据没有得到更新。只有当我从 ECC 运行它时它才会失败。

标签: abap

解决方案


您会在每个 PBO 屏幕交互中获得隐式提交。因此,插入/修改/更新数据库之后的任何用户交互都将被提交,而无需发出提交工作的代码。如果要回滚,必须在下一个 PBO 周期之前完成。


推荐阅读