在BW 报表的设计中,由于使用了各种特性,报表结果的数据有时可能不是你所预想的结果,甚至看上去是错误的。在这种情况下,我们应该怎么来分析、理解这些报表结果呢?以下是一个使用condition后BW报表的实例,通过这个例子,我们可以看到分析报表结果的一些基本技巧,并理解condition的工作原理。
话说某年某月的某一天,我们看到这样一个报表结果:
这个报表的意义是一目了然的,即我们现在有的数据是,在C02这个国家颜色为3的F07部件有760个,注意我们只有颜色为3的数据。
这时对这个报表下钻,筛选component为F07的所有结果,即在F07上右击鼠标,选择'fix filter value to Axis',就可以设置filter:component=F07如下:
这时得到的报表结果非常出人意外,我们看到:
突然我们多出了颜色为2的数据。这看上去很不合理,因为在原有数据结果的基础上进一步删选component=F07,所得到的结果应该完全与前面的报表结果一致,即760个数量才对。现在突然多了一条数据结果,这是非常奇怪的。
这时,我们通常应该看一看该报表里面有没有设置了一些特殊的东西。首先应当看一下条件(condition)的设置,因为condition会对报表的结果做特殊的选取。
在这个报表中,我们会看到,有一个condition是在激活状态。
具体查看这个condition的定义,我们会看到它是这样的:
它所表示的是,基于颜色和国家的组合,只显示key figure FABC_STZ<>0的结果,为0的结果将被屏蔽掉。
所谓基于颜色和国家的组合,即该condition只在颜色和国家同时下钻(drill down)的情况下,并且颜色与国家彼此相邻时才起作用。
此时,如果我们要理解报表的工作机制,我们就应该关掉这个condition,然后考察一下没有condition作用时的实际数据状态。把condition关闭后,我们看到报表的实际数据状态时这样的:
这里我们会看到,实际上颜色3和2其实本来都有数据,只是由于颜色2国家C02的FABC_STZ数量总和是0,这个组合就被condition屏蔽掉了。这是conditon的正确工作方式,具体可以参看online help里的说明:
具体针对这个例子,请看Rule 6,以及给出的例子来解释condition的设计逻辑:基于特性组合的condition
当我们增加了额外的filter component=F07的时候,报表的实际结果是:
此时,颜色2和国家C02的组合结果就不再是0了,我们就得到了不同的结果。
至此,我们看到,实际上报表的结果是正确的,只是由于condition的使用,看上去有些出乎意料。
要理解SAP关于condition的设计逻辑,一个更好的途径是在BW7.x(SPS 15以上)系统上运行事物代码RSFC