首先来看看数据一致性,很简单。
table1 不存在8884的记录,table2存在9999&9999的记录,
只是在最后的更新提交COMMIT WORK 和ROLLBACK WORK。
保证数据一致性。要么都成功,要么都失败。
以上是Insert table通过工作区来做的。如果sy-subrc不为0,还是可以继续执行的。
而对于Inserttable使用internal table,且internal table的数据已经在table里存在了,那么就down了。
现状是table1 已经有8884的数据,程序直接挂了。
另一个问题,
现状是Table已经有了8884的数据,没有1009的数据,
用了TRY CATCH后,是不会dump了。即便抓到了异常,但是1009的数据还是进去了。
但因为程序还要去抓已有的重复数据,输出到结果列表。所以, CATCH后的ROLLBACK WORK还是不可缺少。后面在用loop来一个个更新,抓去table已有的数据。如上图注释掉的数据。