最近項目上發現 BAPI更新WBS的審批狀態時 DUMP,如下圖
DUMP 位置如下圖
在Insert 之前有一個Delete 會刪除數據。本着探索精神就做了個小程序進行測試
REPORT ztest_delete_insert.
TABLES z00_demo_001.
*
SELECT SINGLE *
FROM z00_demo_001.
IF sy-subrc EQ 0.
DELETE FROM z00_demo_001 WHERE uuid = z00_demo_001-uuid.
z00_demo_001-aenam = 'ABCD'.
INSERT z00_demo_001 FROM z00_demo_001. " 可以正常插入,不會報主鍵重複
COMMIT WORK.
ENDIF.
message i001(00) with '在 IN UPDATE TASK 前還沒有DUMP'.
CALL FUNCTION 'ZFM_TEST_DELETE_INSERT' IN UPDATE TASK. " FM中的代碼和 上邊 delete後insert的代碼一致
*bapi commit
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
運行結果如下圖所示:
基於測試得出結論如下
- 在非Update進程中,先delete後insert相同主鍵的數據,不會dump,可以正常更新
- 在update進程中,先delete後insert相同主鍵數據,會引發DBSQL_DUPLICATE_KEY_ERROR運行時錯誤。