在BW中,存在两种数据抽取方式,彻底更新与增量更新,彻底更新是每次把截至到某个时间的数据所有抽取,增量抽取则只抽取上次和本次抽取之间更新的数据,很显然,增量抽取可以提升系统效率,根据SAP帮 助的说法,增量更新又分为时间戳和增量队列两种方法,其中财务数据的抽取为时间戳增量法,后勤数据的抽取为加强队列法。对于增量更新,都须要先对数据抽取 进行初始化,而后再进行增量的抽取。对于时间戳增量法,系统存在一个延迟时间,即时间戳设置时间与记帐时间的差别,好比时间戳是根据建立时间(或输入时 间)来肯定是否更新的依据,而在抽取开始时(时间戳已标记),此时凭证已建立而未记帐(即未更新至数据库),则这次没法抽取到该凭证,但下次抽取时,因为 已在时间戳范围以外,也再也不进行抽取,从而致使抽取数据遗漏,避免此问题,SAP帮助上给出了经过设置安全抽取时间的方法,设置视图为BWOM2_V_SAFETY, 可根据不一样的数据源设置不一样的安全时间,两个小时为推荐设置,个人理解是这个安全时间是对于已经建立但未保存在凭证而言,若是在这个安全时间内保存了,则 这次抽取将包含在内,那时间戳标记会改变吗?如时间戳标记不变,则在安全时间内抽取不能结束,需一直等待凭证保存而后抽取?未进行测试,不知这样理解是否 正确。有的人会说,既然这样,何不根据记帐时间来标记时间戳,我想若是根据记帐日期,则增量更新问题更大,由于有的时候常常在下月往上月记帐(财务正常结 账是这样的),若是根据记帐日期判断,则遗漏数据更多。财务上的时间戳标记表为BWOM2_TIMEST,其中TS_LOW和TS_HIGH字段为两次更新之间的时间差,修改凭证日期表则为BWFI_AEDAT。后勤数据抽取相关的T_code有LBWG/LBWE/LBWQ/RSA7等,后勤数据是先保存在R3端,而后再抽取到BW中的。
举个例子:
好比你6小时抽取一次数据,假如你第一次在12:00抽取,那么下次应该是18:00抽取,那么应该来讲18:00抽取的数据是 12:00-18:00的数据才对,可是有种状况须要你考虑,好比我11:55在作一个凭证,可是中间我去吃饭,12:30才回来完成这个凭证,那么这个 凭证就是11:55建立的,在12:00抽取的时候,因为凭证没有产生,所以没法抽取,可是下次18:00抽取的时候,因为这个凭证是在11:55建立 的,因此也没法抽取到。
作BW数据仓库最重要的一条准则就是“不重复、不遗漏”,那么这样你就遗漏了数据,那么SAP就想了个办法,就是好比此次我抽取从 06:00-12:00,那么下次我抽取从11:30-18:00,这样上面的凭证就能抽取出来了吧,这时候11:30-12:00就有半个小时的重复, 这个就叫作Lower Limit。
同上,好比我12:00抽取的时候,不想抽取06:00-12:00,而是想抽取06:00-11:30,那么我就设置一个Higher Limit 为30分钟,则抽取的时候就不会到最新的时间,而是须要过帐半小时前的凭证。
好比我设置了30分钟的Lower Limit,30分钟的Higher Limit,那么我12:00抽取的数据应该是05:00-11:30的数据,下次抽取的数据时11:00-17:30,在下次就是 17:00-23:30,在下次就是23:00-05:30,在下次就是05:00-11:30,如此循环。
可是若是设置了Lower Limit和Higher Limit以后,请记得在BW中使用DSO来处理数据。