理论教育 基于队列RFC的远程函数调用

基于队列RFC的远程函数调用

时间:2023-06-12 理论教育 版权反馈
【摘要】:确保事务性RFC调用中的LUW都按照其创建次序执行,需要使用队列RFC创建LUW序列。队列RFC调用示例如下:本地远程函数调用和回调通过DESTNATION附加项的两个特殊目标NONE和BACK,可以进行远程函数本地远程调用和回调。■同步/异步RFC调用过程,参数值将直接传输至支持远程调用的功能模块;事务性RFC的参数值暂时存储在数据库中。■对于异步RFC,只适用于SAP系统内部或之间的调用,不能通过T类型目标连接至外部系统。■事务性RFC、队列RFC支持状态查询。

基于队列RFC的远程函数调用

确保事务性RFC调用中的LUW都按照其创建次序执行,需要使用队列RFC创建LUW序列。队列RFC是事务性RFC的增强版本,用于SAP-SAP及SAP-非SAP系统间的连接。多个函数发送至目标系统中的三种可能情况(实际的连接过程仍然通过事务性RFC来实现,可以增加入站、出站队列)包括普通事务性RFC、含出站队列的队列RFC和含出入站队列的队列RFC,其中出站队列在队列RFC中是必须的。

出站调度器用于控制其他逻辑目标系统中的LUW执行,入站调度器控制本地系统中的队列RFC执行(目标NONE或IN BACKGROUND TASK实现为指定目标RFC),事务SMQS可以配置出战的队列RFC序列,事务SMQR可以配置入站的队列RFC序列,需要在普通事务性RFC调用之前使用函数模块TRFC_SET_QUEUE_NAME来指明后续的事务性RFC所要插入的出战队列,通过函数TRFC_SET_QIN_PROPERTIES来完成入站队列。

队列RFC调用示例如下:

(1)本地远程函数调用和回调

通过DESTNATION附加项的两个特殊目标NONE和BACK,可以进行远程函数本地远程调用和回调。调用本地系统中的远程功能模块,即调用当前系统内部的远程函数,CALL FUNCTION语句格式决定以远程调用或非远程调用方式运行。

本地调用时call function语句没有destination、starting new task、in background task/unit出现,不在单独的内存滚动区中运行,若当调用没有指定某些必选exporting参数时,会引发系统异常终止。

(2)远程回调

■在服务器执行远程功能时,该服务器可以调用客户中随调用程序载入内存的功能模块,称为回调。

■通过特殊目标BACK可以触发回调机制。

语法:978-7-111-50126-8-Chapter03-237.jpg(www.daowen.com)

■只有同步调用时,才可以在服务器中的被调用功能模块中使用BACK功能。

注:各种RFC调用总结如下:

■同步RFC调用需要等待RFM返回结果;异步RFC不需要,但需要通过RECEVICE语句在回调子程序中接收结果。事务性RFM不能接收RFM返回值

■同步/异步RFC调用,服务器系统必须在调用时可用;事务性RFC无此限制。

■同步/异步RFC调用过程,允许用户与远程系统进行交互对话;事务性RFC不允许。

■同步/异步RFC调用过程,参数值将直接传输至支持远程调用的功能模块;事务性RFC的参数值暂时存储在数据库中。

■对于异步RFC,只适用于SAP系统内部或之间的调用,不能通过T类型目标连接至外部系统。

■事务性RFC、队列RFC支持状态查询。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈