读取当前LUW中已更改的表的原始值

Lil*_*hal 7 sap abap

在当前LUW中更改但尚未提交的表时,是否可以检索表的旧值或原始值?

我正在实现一个BAdI,它应该用于根据对象执行的更改来引发消息,但SAP实际上并没有在BAdI中提供原始对象数据.尝试使用SELECT语句读取数据不起作用,因为此时已应用挂起的更改,而不是已提交.

如果我调试代码,我可以看到旧的值很好,SE16但似乎未提交的更改值是由SELECTs我在此BAdI中执行的任何返回.

有没有办法阅读这些原始数据?

San*_*ssi 11

在同一个数据库LUW中,先前更新的表的读取将始终返回更新的值.因此,至少需要从另一个数据库LUW读取该表.

默认情况下使用的隔离级别取决于您使用的数据库类型.对于HANA和Oracle,"提交的读取"是默认值,但其他数据库默认使用"未提交的读取".

如果您不使用HANA/Oracle,则可以通过调用功能模块DB_SET_ISOLATION_LEVEL临时切换到"已提交读取"隔离级别.

然后,您可以使用服务连接(前缀为R/3*)从另一个数据库LUW读取该表,例如:SELECT ... FROM yourtable ... CONNECTION ('R/3*temp') ...