这两天发现了一个不得了的事,SAP BW标准总账行项目数据源0FI_GL_40存在跨年抽数的BUG,限制条件【财政年/阶段】假如通过ABAP变量或者手工限定跨年条件,将无法正常抽数,比如限定条件是2013.012~2014.001,那么,他并不会直接抽取这个区间的会计行项目数据,而是把所有的行项目(到今天为止)的数据都抽了上来,奇怪的是,如果限定条件不跨年,就可以正常抽取两个会计期间的数据。苦逼的我,让处理链自动跑了三天(1月1号、1月2号、1月3号),第三天就出错了,于是就到RSPCM看看怎么回事,跟Basicis沟通后发现数据库硬盘空间已经满了,然后我查了这三天的请求数据包大小,每天都大于1000W的数据量,泥玛真心悲剧,平时最多也就10W+吧,况且新年刚到,1月份也不可能有这么大的数据量,首先可以确定BW这边是没有问题的了,那么,会不会是ECC的问题呢?
于是到ECC去查看,通过RSA3模拟抽取发现,这个问题跟BW那边一样,那么基本上可以确定这个标准数据源存在BUG了,通过RSO2查看到标准数据源0FI_GL_40的提取函数之后,到SE37直接看函数源代码,查找这个【财政年/阶段】的来源,无奈没有找到,但数据是从BSEG表里面来的,那么其他问题就有等研究了。
基于上面的问题,解决方案就比较明了了,下面是我自己想出的解决方法:
1.新建两个BW信息包(InfoPackage),分别对限制条件【财政年/阶段】做本月及上月的限定,在处理链上同时跑两个信息包,这样可以保证绝对不会跨年在一个信息包执行请求时报错。
2.修改原有信息包限制条件【财政年/阶段】的ABAP代码,对于跨年的条件,只抽取上一月份数据。
3.请求SAP官方解决,利用Sap MaketPlace账号发个Note,请求解决。
4.找出限制条件【财政年/阶段】的源代码处理过程,修改(不推荐,太多未知因素了)。