事务性RFC方式的RFM调用
同步、异步RFC过程中,每一个RFC调用在远程系统中构成一个独立的LUW;
事务性RFC调用,可以将多个逻辑上相关的远程调用绑定至同一个LUW上,在该LUW内,按顺序调用,要么执行所有数据库操作,要么完全回滚来取消全部数据库更新操作,保证RFC调用过程的完整性和数据一致性;
事务性RFC调用处理保证在程序到达COMMIT WORK语句时执行所有计划的更新,并保证事务性RFC调用仅运行一次;
该调用具有安全、可靠的特点;
语法:
CALL FUNCTION rfm_name
IN BACKGROUND TASK
[DESTINATION dest]
[EXPORTING p1 = a1 ... pn = an ... ]
[TABLES t1 = itab1 ... tn = itabn ... ]
[AS SEPARATE UNIT.
或者:
CALL FUNCTION rfm_name
IN BACKGROUND UNIT oref
[EXPORTING p1 = a1 ... pn = an ... ]
[TABLES t1 = itab1 ... tn = itabn ... ].
其中oref必须引用一个接口IF_BGRFC_UNIT实现类的对象;
在相邻两个COMMIT WORK之间出现的所有相同目标的异步调用都属于同一个LUW;
事务性RFC不需要等待每个单独的更新过程完成,调用程序就可以立即继续进行,直到事务结束;
若调用发送时,远程系统不可用,调用将设为后台作业