最近项目上发现 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运行时错误。