二维码

事务RFC(TRFC)原理和实战解析

Twilight发表于 2015-04-14 20:07zhongguomao 最后回复于 2017-10-26 14:35 [复制链接] 8913 2

transactional RFC (tRFC),又称事务RFC,在被调用端紧被执行一次。

1、语法
  1. CALL FUNCTION func IN BACKGROUND TASK
  2.                    [DESTINATION dest]
  3.                    PARAMETER list
  4.                    [AS SEPARATE UNIT].
复制代码
AS SEPARATE UNIT,是一个附加参数,如果没有该参数,表示在同一个函数组中的RFC,可以共享访问Function Group的全局变量,添加该参数,创建独立的事务,不参与其他目标的事务性RFC调用作何至一个LUW

2、tRFC程序处理流程:
TRFC 1.jpg
注意:
  • tRFC 是异步,所以没有返回数据,所以只有IMPORT没有EXPORT
  • SM58 (LUW执行状态:ARFCSSTATE,事务性RFC调用的输入数据:ARFCSDATA)--->commit work -->出栈调度监控器SMQS -->SMQ1
  • 若连接目标系统失败,则会再次尝试发送LUW数据,默认时间间隔15分钟,尝试至30次为止;若经过最大尝试次数,系统仍然无法连接,系统将停止调用报表RSARFCSE,将ARFCSDATA状态更新为CPICERR,默认8天,将表中的响应条目删除,SM59可以手动启动该条目。其中,尝试次数、时间间隔可以设定
    tRFC_SM59.jpg
    T-code:SM59 Edit-->tRFC Options
  • 触发commit work时,会产生一个后台JOB,JOB名称以ARFC*开头
  • 获取Tid函数:CALL FUNCTION 'ID_OF_BACKGROUNDTASK'

3、实战案例
TRFC 2.jpg
注意只有程序执行到COMMIT WORK,才会调用RFC将数据发送到IMS系统。
如果添加rollback work,数据库就会混滚LUW数据库中缓存的数据,不能讲数据发送出去,我们这里希望即时zwmtt004写表失败也要将数据发送到ims,所以不能添加rollback work。

4、相关Demo
系统中几个标准demo程序
RSTRFCT0
RSTRFCT1
RSTRFCQ4
回复

使用道具 举报

FISH_HAPPY
谢谢分享
回复

使用道具 举报

zhongguomao
感谢分享。
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表