BW层次结构-聚合和Inputcontrol过滤器

2020-09-11 00:49发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我已经开发了一个WEBI报告,其后端数据源是BEX查询。 该查询的层次结构为" H1",量度为" m1"。 我需要为每个层次结构级别总计计算" m1"。 为了避免随着每个层次级别的扩展使m1加倍,我对m1总数使用了以下公式

=总和(if([H1] .Depth = 0; [m1]; 0))

我使用了以下链接中的公式

https://archive.sap.com/discussions/thread/3331847

我也尝试过使用soln。 通过以下链接。

https://archive.sap.com/discussions/thread/3359253

没有运气…..:(

从第一个链接开始的此公式可以完美地计算每个层次结构级别的m1总数,而无需通过层次结构级别扩展BUT将聚合加倍

当我在Webi报表上将H1用作输入控件过滤器时,会出现公式问题。 当选择m1总数时,仅对于所有子节点的顶级层次结构节点而言,总的来说才是正确的,因为我使用了条件" if([H1] .Depth = 0; [m1]; 0)",所以m1总数对所有子节点都是正确的。

我尝试了公式的不同变体,例如,在else条件中,而不是0,我给条件" if([H1] .Depth = 1; [m1]; if([H1] .Depth = 2; [m1]; 0))"。 我有3个等级的层次结构。 所以我的公式变成

Sum(if([H1] .Depth = 0; [m1]; if([H1] .Depth = 1; [m1]; if([H1] .Depth = 2; [m1]; 0)) ))

此变体在任何层次结构级别上都不会产生0的总和,但深度1的总和(m1总计)是两倍,深度2则是三倍。

我可以理解,对于级别1,它包括深度0和深度1的总和,与深度2相同,这为深度0,深度1和深度2加了。

因此,为了避免这种情况,我在各个级别分别使用了sum,但这会导致" MultiValue错误"。

请提出一个适用于聚合和输入控制的公式,该公式可过滤子节点而不产生总计0的

任何帮助将不胜感激。

谢谢!!!!!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我已经开发了一个WEBI报告,其后端数据源是BEX查询。 该查询的层次结构为" H1",量度为" m1"。 我需要为每个层次结构级别总计计算" m1"。 为了避免随着每个层次级别的扩展使m1加倍,我对m1总数使用了以下公式

=总和(if([H1] .Depth = 0; [m1]; 0))

我使用了以下链接中的公式

https://archive.sap.com/discussions/thread/3331847

我也尝试过使用soln。 通过以下链接。

https://archive.sap.com/discussions/thread/3359253

没有运气…..:(

从第一个链接开始的此公式可以完美地计算每个层次结构级别的m1总数,而无需通过层次结构级别扩展BUT将聚合加倍

当我在Webi报表上将H1用作输入控件过滤器时,会出现公式问题。 当选择m1总数时,仅对于所有子节点的顶级层次结构节点而言,总的来说才是正确的,因为我使用了条件" if([H1] .Depth = 0; [m1]; 0)",所以m1总数对所有子节点都是正确的。

我尝试了公式的不同变体,例如,在else条件中,而不是0,我给条件" if([H1] .Depth = 1; [m1]; if([H1] .Depth = 2; [m1]; 0))"。 我有3个等级的层次结构。 所以我的公式变成

Sum(if([H1] .Depth = 0; [m1]; if([H1] .Depth = 1; [m1]; if([H1] .Depth = 2; [m1]; 0)) ))

此变体在任何层次结构级别上都不会产生0的总和,但深度1的总和(m1总计)是两倍,深度2则是三倍。

我可以理解,对于级别1,它包括深度0和深度1的总和,与深度2相同,这为深度0,深度1和深度2加了。

因此,为了避免这种情况,我在各个级别分别使用了sum,但这会导致" MultiValue错误"。

请提出一个适用于聚合和输入控制的公式,该公式可过滤子节点而不产生总计0的

任何帮助将不胜感激。

谢谢!!!!!

付费偷看设置
发送
2条回答
SKY徐
1楼 · 2020-09-11 01:53.采纳回答

您好,Afreen,

我想您可能现在已经知道了这一点,但是只要我正确理解您的问题,就可以尝试以下操作:

在上图中,我有两个相同的表块。 两者都使用相同的变量:

  • [v_M1总计(L012)] = Sum(If([Product] .Depth = 0; [Actual Amount]; If([Product] .Depth = 1; [Actual Amount]; If([Product] .Depth = 2; [Actual Amount]; 0))))))
  • [v_M1 Total(L0)] = NoFilter(Sum(If([Product ]。深度= 0; [实际金额]; 0))))

第二个变量仅显式计算您的L0总数。 为了避免L0结果重复,我添加了Nofilter()函数,并且仅在表的聚合页脚中使用[v_M1 Total(L0)]变量。 在对左侧表中的层次结构值进行过滤时,值不会更改。

但是我不确定这是您的问题吗?

亲切的问候,

汤姆

SAP浪
2楼-- · 2020-09-11 01:46

嗨,汤姆,

感谢您的支持。 我申请了你的Soln。 它有效!!

但是对于其他人,我也要提到我的问题。 我申请了

我没有使用深度进行层次结构,而是使用了简单的webi上下文运算符ForEach

总和([Measure] ForEach(表和本节中的所有尺寸列)。

再次感谢您的支持。

一周热门 更多>