在不修改数据库的情况下调用BAPI?

时间:2014-04-02 12:39:53

标签: commit abap bapi

是否可以调用BAPI然后做一些事情来阻止BAPI提交数据库更改?

我需要为报告制作类似测试模式的内容,并且不想向数据库提交任何内容。

4 个答案:

答案 0 :(得分:1)

对于" old" bapis< 3.1没有可能阻止bapi的提交:所有bapis都自己做出了承诺。 从4.6开始,所有DB更改bapis必须通过bapi commit明确调用。如果你不打电话,你的改变就不会被保存

答案 1 :(得分:0)

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

答案 2 :(得分:0)

取决于BAPI。

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

这意味着,例如,您可以调试对心脏内容的BAPI调用(无论如何都会返回所有结果或错误消息),然后当报告准备好生成时,添加BAPI_COMMIT调用,并验证无论什么行动成功通过。

答案 3 :(得分:0)

在屏幕上查看一个复选框,并执行下面的工作。请记住,这是一个快速而肮脏的例子。

CALL FUNCTION'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.