在 SAP 系统间(或 SAP 与外部系统)进行异步通信时,我们经常会用到 tRFC (Transactional RFC,事务性 RFC),即在开发时会写的 CALL FUNCTION ... IN BACKGROUND TASK。
关于底层的运行逻辑、数据一致性保证以及报错后的流转机制,今天就来拆解 tRFC 的“事务一致性”原理以及核心的监控排错技巧。
1. 什么是 tRFC 的事务一致性 (LUW)?
当你调用一个函数模块并在后台任务中执行时,该函数并不会被立即执行,而是会一直处于等待状态,直到程序触发 COMMIT WORK 语句 。使用了 IN BACKGROUND TASK 后缀的调用之所以被称为“事务性 RFC”,正是因为这种机制保障了事务的一致性 。
核心概念:逻辑工作单元 (LUW) 在程序中,发生在一个 COMMIT WORK 和下一个 COMMIT WORK 之间,并且指向同一个目标系统的所有 tRFC 调用,会被系统自动打包合并成一个 LUW (逻辑工作单元) 。
在一个 LUW 内部,SAP 系统会严格保证以下三条执行铁律 :
-
顺序执行:严格按照代码中被调用的先后顺序执行。
-
同一上下文:在目标系统中,所有的调用都在同一个程序上下文中运行。
-
整体事务:作为一个单一的事务运行,要么全部提交成功,要么全部回滚失败(一荣俱荣,一损俱损)。
2. 事务 ID (TID) 与高级控制
每个 LUW 在国内外系统中都是通过一个全球唯一的 事务 ID (TID)


1802

被折叠的 条评论
为什么被折叠?



