0

Is it possible to call a BAPI and then do something to prevent the BAPI from committing the database change?

I need to make something like a test mode for my report and don't want to commit anything to the database.

4

4 回答 4

1

对于“旧” bapis < 3.1,不可能阻止 bapi 的提交:所有 bapis 都是自己提交的。从 4.6 开始,所有更改数据库的 bapi 都必须通过 bapi 提交显式调用。如果您不调用它,您的更改将不会被保存

于 2014-05-04T19:28:46.317 回答
0

在屏幕上勾选一个复选框,然后做一些粗略的工作,如下所示。请记住,这是一个快速而肮脏的例子。

调用函数'BAPI_ACC_DOCUMENT_CHECK。

LOOP AT lt_return INTO wa_return.
  IF wa_return-type EQ 'E'.
    lv_err_flag = 'X'.
    EXIT.
  ENDIF.
ENDLOOP.

IF lv_err_flag IS INITIAL.
"Success!

  "Is this a test or for real?
  IF lv_test IS INITIAL.

    CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST
              .

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT
              .

  ELSE.

   "Write some output to screen instead  of posting/commiting as its a test run

  ENDIF.

ELSE.
"Fail!
"Fail logic and output.

ENDIF.
于 2014-04-03T22:38:52.470 回答
0

取决于 BAPI。

在将前者所做的任何更改发送到数据库之前,某些 BAPI 需要额外调用 BAPI_COMMIT。

这意味着,例如,您可以将 BAPI 调用调试到您的心脏内容(它将返回所有结果或错误消息),然后当报告准备好生产时,添加 BAPI_COMMIT 调用,并验证任何操作已成功颁布。

于 2014-04-02T15:35:43.383 回答
0

对于 FI 文档,您可以使用BAPI_ACC_DOCUMENT_CHECKjust 检查所有项目是否正确,它不会更改数据库。

于 2014-04-02T13:24:20.343 回答