声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4296985.html
ECC端的SBIW界面也可通过BW系统远程登录进入:
远程登录到ECC源系统,进行数据源的创建与配置:
在ECC端输入SBIW:
下面以物料主数据的文本为例:
如果不需要某个表里的所有字段,则可以单独为这个表创建一个视图,选择需要的字段,再以这个视图为基础创建数据源
下面需要将数据源复制到BW系统中,并且激活后,才能在BW系统里使用,进入到BW系统中:
不等于表示数据源还未激活,需激活才能使用,将数据切换到编辑模式再进行激活(激活过程会为数据源生成相应的PSA物理表):
下面就可以通过该数据源抽数了
创建信息包:
发现该数据源目录只支持全量加载,可以使用RSA2来查看数据源是否支持增量,以及增量处理模式:
还可以通过RSA6来查看数据源是否支持增量(但查出来的信息没有RSA2详细):
只有在通过RSO2创建数据源时,才可以设置是否支持增量:
现假设每天0点启动任务抽数,并抽一天的数据,则需抽从昨天0点到今天0点的数据,任务也是0点起动,但在昨天 23:59分时,用户在维护一张单子,在今天零晨1点才做完保存,但记录的是修改时间还是昨天昨天 23:59分,如果任务在0点准时启动,并且在半小时就抽完了,则这一条在昨天昨天 23:59分修改的数据就会抽不到,明天再启动任务更抽不到,所以就会用到下面两个安全值设定:
Safety Interval Upper Limit:安全上限,将抽取的时间向前推多少秒,这样虽然今天抽不上那条昨天 23:59分修改的数据,但明天0点抽取时一定会抽上来,这种安全设置不好的就是会抽设置时间段的重复数据,不过即使重复数据只要是放入覆盖DSO是没有问题的,但放入合计累加的DSO就会有问题了
Safety Interval Lower Limit:安全下限,这种就是直接将抽取任务向后推多少秒后再执行,假设是2小时,这样那昨天 23:59分修改今天零晨1点的数据就会被抽上来,不用等到明天再抽,这种方式较前一种没有重复数据,但会推迟抽数的完成时间点
并且选择增量的字段不能再为作Data Selection字段,因为被用作增量的字段会自动变灰:
注:自建数据源只支持Pull方式的增量方式(所以与财务模块数据源一样也不支持删除),因为我们不可能像为LO后勤数据源那样,给它们用推的方式主动向Delta-Queue里存增量数据,因为推的方式需要在数据源端使用代码来实现的。而Pull的方式则会简单很多,它是基于某个字段来筛选出发生变化的数据来的。
当使用RSO2设置增量数据以“New Status for Changed Records”方式记录时,数据源增量处理方式则为AIE:
当使用RSO2设置增量数据以“Additive Delta”方式记录时,数据源增量处理方式则为ADD:
下面开始测试AIE增量处理方式的自建数据源:
注:自建数据源也是有Delta-Queue的(就像财务模块数据一样)
新创建一个订单:
当创建好订单后,如果现在就去查看ZVBAK的Delta-Queue,则是没有数据的,因为自建数据都是Pull的方式,所以一定要运行BW端的增量信息包才会向此Delta-Queue里存一份数据
下面创建增量信息包后,运行ZVBAK Delta-Queue里是否有增量数据:
但运行完增量信息包后,查看监视器,发现也没有增量数据上来,怪哉?!
12944订单号没有抽上来的原因是,该自建数据源是基于 “Numeric Pointer”类型的 VBELN 字段作的增量,但Pointer当前的状态值已经到S-6102,在BW拉数据的时候,是要从大于S-6102开始才认为是增量数据,所以12944订单无法抽上来:
(注:这个Pointer 在这里是不能修改的,是由系统自动填充的,但会随着增量数据的抽取而自动修改,它记录了增量抽到哪个位置来了)
通过SE11查看,VBAK里最大单号就是S-6102,因为先前的初始化信息我们选择的是“只打标记,不传数据”,这样目前VBAK里的数据认为已经抽过了,所以打完初始化标记后,Current Status指针的值就会VBAK表里编号最大的订单号:
注:该示例是以VBELN为基础的增量字段,但实际上并不合适,因为VBELN订单号可能含有非数字,作为Numeric Pointer的增量字段,要求字段必须是纯数字类型的字段,这样新增数据时,最新的数据就会在最后,这样增量抽取时才不会有问题
RSA3:可在ECC端对数据源进行预提测试