SAP 高级应用开发 学习笔记 1 -- RFC NO.6
来源:互联网 发布:js 0除以0 nan 编辑:程序博客网 时间:2024/06/07 16:28
事务性RFC方式的RFM调用
l 同步、异步RFC过程中,每一个RFC调用在远程系统中构成一个独立的LUW
l 事务性RFC调用,可以将多个逻辑上相关的远程调用绑定至同一个LUW上,在该LUW内,按顺序调用,要么执行所有数据库操作,要么完全回滚来取消全部数据库更新操作,保证RFC调用过程的完整性和数据一致性
l 事务性RFC调用处理保证在程序到达COMMIT WORK语句时执行所有计划的更新,并保证事务性RFC调用仅运行一次
l 该调用具有安全、可靠的特点
其中oref必须引用一个接口IF_BGRFC_UNIT实现类的对象
l 在相邻两个COMMIT WORK之间出现的所有相同目标的异步调用都属于同一个LUW
l 事务性RFC不需要等待每个单独的更新过程完成,调用程序就可以立即继续进行,知道事务结束
l 若调用发送时,远程系统不可用,调用将设为后台作业运行,不能从调用模块接收返回结果,不允许调用者进行与远程系统的交互性对话及测试
调用参数
l 不能直接或通过RECEIVE RESULTS FROM FUNCTION语句接收RFM的返回结果,FM的接口不应指定任何EXPORT类型参数,在CALL FUNCTION语句中的IMPORTING参数将导致编译错误
l 事务性运行的功能模块中不适合进行回调(调用远程目标BACK)
l 事务性RFC调用示例
l 直到COMMIT WORK 语句才开始于远程系统进行联系
l TRAVEL_BOOK_REMOTE是一个适合进行事务性RFC调用的RFM,只进行远程系统中的数据库更新,不需要返回任何数据
事务ID
l 每一个事务性RFC调用均通过一个独特的事物ID(Transactional ID,TID)
l TID存在于数据库表ARFCSSTATE和ARFCSDATA,ARFCSSTATE记录LUW执行状态,ARFCSDATA包含事务性RFC调用的输入数据
l 作业执行过程中,从事务性RFC表中读取相关数据,与相应的事务性RFC进行通信,远程LUW成功执行,则相应的条目在表中删除,因此,若LUW运行成功,则无法重新执行因而保证了仅仅执行一次
l 若COMMIT WORK同时触发了本地更新操作,则事务性RFC调用在本地更新成功完成之后才开始运行
设定作业开始时间
l 如果希望在特定时间启动LUW,可以通过功能模块START_OF_BACKGROUPTASK设置作业开始的时间,必须在LUW内部调用该功能模块,必须在第一个CALL…IN BACKGROUNDTASK语句之后和COMMIT WORK语句之前调用该功能模块
l 对于某个调用需要创建独立的事务,不参与其他目标的事务性RFC调用作何至一个LUW,可以通过AS SEPARATE UNTIAL附加项实现
l 各个LUW处理都是独立进行的,执行次序无法被保证
出错处理机制
l 发生错误,事务性RFC调用将启动重试机制或者回滚
l 通过COMMIT WORK执行远程调用时,不能建立到目标系统的连接,将在ARFCSSTATE表中记录当前状态,系统通过报表RSARFCSE根据当前的TID重新计划后台作业,准备进行下一次调用。
l 默认时间间隔15分钟,尝试至30次为止
l Tools-Administraion-Administraion-Network-RFCdestinations-Destination-TRFC options进行尝试次数、时间间隔设定
l 若经过最大尝试次数,系统仍然无法连接,系统将停止调用报表RSARFCSE,将ARFCSDATA状态更新为CPICERR,默认8天,将表中的响应条目删除,SM59可以手动启动该条目
l 执行出错,A类型的消息或者RAISE语句抛出异常,则ARFCSSTATE表将记录出错状态,整个RFC中的操作将取消, SM58查看该错误,修改错误后,通过SM58重新启动出错的RFM
l 在RFM中,功能模块RESTART_OF_BACKGROUNDTASK启动重试功能
检查事务性RFC调用状态:
每个LUW都用过唯一的TID进行标识,两种方法检查TID状态:
l ABAP程序:在CALL… IN BACKGROUND TASK之后和COMMIT WORK之前调用FM“ID_OF_BACKGROUNDTASK”,获得TID后,用FM“STATUS_OF_BACKGROUNDTASK”确定事务性RFC的状态
l 联机确认:通过SM58显示并维护事务性RFC的LUW状态
- SAP 高级应用开发 学习笔记 1 -- RFC NO.6
- SAP 高级应用开发 学习笔记 1 -- RFC NO.2
- SAP 高级应用开发 学习笔记 1 -- RFC NO.3
- SAP 高级应用开发 学习笔记 1 -- RFC NO.4
- SAP 高级应用开发 学习笔记 1 -- RFC NO.5
- SAP 高级应用开发 学习笔记 1 -- RFC NO.7
- SAP 高级应用开发 学习笔记 1 -- RFC
- SAP 高级应用开发 学习笔记
- 《SAP高级应用开发》---Idoc学习笔记
- 《SAP高级应用开发》---Idoc学习笔记
- SAP 高级应用开发 学习笔记 2 -- BAPI
- SAP 高级应用开发 学习笔记 2 -- BAPI
- MULE 连接sap rfc接口开发二:调用rfc接口
- Android高级应用开发(基础篇) - stage1 - 学习笔记
- Android高级应用开发(基础篇) - stage2 - 学习笔记
- Android高级应用开发(基础篇) - stage3 - 学习笔记
- Android高级应用开发(基础篇) - stage4 - 学习笔记
- Android高级应用开发(基础篇) - stage5 - 学习笔记
- rmi
- sqlserver 分支语句及索引
- 随想
- 测试是否连接上 POP邮件服务器
- ORDER BY
- SAP 高级应用开发 学习笔记 1 -- RFC NO.6
- ubuntu 9.10 安装 php mysql apache(LAMP)
- 安全界神话-------新一代软件“Web应用防火墙”
- QMessageBox解析
- C#文件读写常用类介绍
- asp.net中涉及子文件夹的母版页和相对路径文件引用问题
- 软件厂商6大忽悠伎俩揭秘
- 百度联盟中的一个不错的图片切换特效
- struts2使用拦截器时产生java.lang.IllegalStateException异常解决办法