2014-04-02 95 views
0

是否可以調用BAPI,然後執行一些操作來防止BAPI提交數據庫更改?在不修改數據庫的情況下調用BAPI?

我需要爲我的報表製作類似於測試模式的東西,並且不想向數據庫提交任何內容。

+0

除非調用'BAPI_TRANSACTION_COMMIT',否則BAPI不會向數據庫提交任何內容。 – Jagger

+0

在每一種情況下都不是這樣。一些BAPI不需要'BAPI_TRANSACTION_COMMIT'。 – Eric

回答

1

對於「老字號」的BAPI < 3.1沒有可能性,以防止犯BAPI的:所有的BAPI做他們自己提交。 由於4.6所有數據庫更改bapis都必須通過bapi提交明確調用。如果您不稱呼它,您的更改將不會被保存

0

對於FI文檔,您可以使用BAPI_ACC_DOCUMENT_CHECK僅檢查所有項目是否正確,但不會更改數據庫。

+0

*「s。th」*很可能是指*「something」*。 –

+0

謝謝你,這是我的一個新縮寫。 –

+0

這是很少用於我的知識,我編輯出來的原始問題,以便於理解。 –

0

取決於BAPI。

某些BAPI在將由前者發出的任何更改發送到數據庫之前需要額外調用BAPI_COMMIT。

這意味着,例如,您可以調試BAPI調用以查看您心中的內容(它將返回所有結果或錯誤消息,無論如何),然後當報告準備好進行生產時,添加BAPI_COMMIT調用,並且驗證是否已成功執行任何操作。

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. 
相關問題