前段时间由于特殊情况R3系统和BW系统断开不能互联,但是用户还要查询系统数据,这就给IT提出了比较大的挑战,我们需要研究怎么把R3中Delta Queue的数据读取出来并且传送到BW系统中,要解决这一问题我们首先需要查询数据了解Delta Queue的存储原理及结构,然后查找Delta Queue的读取方法,最后还要处理读取的数据如何传送的BW系统中,以下是我们解决此问题采用的方法供大家参考,有不当之处请及时指出。
一、Delta Queue的存储原理及结构:
BW Delta Queue 是一种基于SAP Web Application servers RFC技术的队列功能(qRFC), Delta Queue的数据主要存放在以下三个表中:
a. TRFCQOUT :Client Dependent pointer table per queue name and destination
依赖Client的库表,主要存储每个TID 的RFC Queue的名称及RFC的目标客户端Destination,以及此RFC调用的Function Module名称还有TID的读取状态等信息;
b. ARFCSSTATE: Link between TRFCQOUT and ARFCSDARA
不依赖Client的库表,主要存放每个TID的读取状态,是连接库表TRFCQOUT和库表ARFCSDARA的中间桥梁;
c. ARFCSDATA:Compressed data for tRFC/qRFC
不依赖Client的库表,主要存放每个TID即Delta Queue的具体数据内容以压缩方式存放;
另外一个比较重要的库表ROOSPRMSC[Control Parameter Per DataSource Channel],主要存放每个DataSource的相关重 要信息,包括目标客户端,做Initial的Request Number及具体时间以及上一次做Delta的Request Number及时间,还有两个重要的字段GETTID和GOTID;
TID= Host ID (IP ID) +Process ID +Timestamp+Transaction ID (LUW)
GETTID:This field refers to the last but one delta TID
GOTTID:This field refers to the last delta TID (that has reached to BW)
当用户每次在BW做Delta数据拉取时,R3系统首先将大于GETTID并且小于等于GOTTID的DeltaQu