用DATA和RESULTLOOKUP汇总帐户

2020-08-15 23:51发布

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

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


嗨,

在"数据操作"中,我想总结大约20个不同的帐户,比如说公司代码和利润中心级别的X01,X02,... X20。

帐户不属于特定的层次结构节点。 我不想创建一个新的维度属性,仅用于设置用于汇总的过滤器。

帐户的值具有不同的粒度,例如

  • X01-X05是每个公司代码和利润中心
  • X06-X10是根据公司代码,利润中心和产品
  • X11-X15是每个公司代码的利润中心和销售办事处
  • X16-X20是每个公司代码的利润中心,产品和销售办事处

总和应存储在帐户Z中。

实现这一目标的最佳方式(最简单)是什么?

我目前的解决方案是这样的

 VARIABLEMEMBER #COST_A,共[d/GLACCOUNT]
 [d/GLACCOUNT]的变量成员#COST_B
 [d/GLACCOUNT]的变量成员#COST_C
 [d/GLACCOUNT]的变量成员#COST_D

 DATA([d/GLACCOUNT] = #COST_A,[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] =" X01",[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")+
         RESULTLOOKUP([d/GLACCOUNT] =" X02",[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")+
         ...
         RESULTLOOKUP([d/GLACCOUNT] =" X05",[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")

 DATA([d/GLACCOUNT] = #COST_B,[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] =" X06",[d/SALESOFFICE] ="#")+
         ...
         RESULTLOOKUP([d/GLACCOUNT] =" X10",[d/SALESOFFICE] ="#")

 DATA([d/GLACCOUNT] = #COST_C,[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] =" X06",[d/PRODUCT] ="#")+
         ...
         RESULTLOOKUP([d/GLACCOUNT] =" X10",[d/PRODUCT] ="#")

 DATA([d/GLACCOUNT] = #COST_D,[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] =" X06")+
         ...
         RESULTLOOKUP([d/GLACCOUNT] =" X10")

 DATA([d/GLACCOUNT] =" Z",[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] = #PRODCOST_A)+
         RESULTLOOKUP([d/GLACCOUNT] = #PRODCOST_B)+
         RESULTLOOKUP([d/GLACCOUNT] = #PRODCOST_C)+
         RESULTLOOKUP([d/GLACCOUNT] = #PRODCOST_D)

这真的很表演吗? 有没有更简单的方法?

谢谢-托马斯

PS:我缺少一个在RESULTLOOKUP函数中的维度过滤器中指定多个值的选项。

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

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


嗨,

在"数据操作"中,我想总结大约20个不同的帐户,比如说公司代码和利润中心级别的X01,X02,... X20。

帐户不属于特定的层次结构节点。 我不想创建一个新的维度属性,仅用于设置用于汇总的过滤器。

帐户的值具有不同的粒度,例如

  • X01-X05是每个公司代码和利润中心
  • X06-X10是根据公司代码,利润中心和产品
  • X11-X15是每个公司代码的利润中心和销售办事处
  • X16-X20是每个公司代码的利润中心,产品和销售办事处

总和应存储在帐户Z中。

实现这一目标的最佳方式(最简单)是什么?

我目前的解决方案是这样的

 VARIABLEMEMBER #COST_A,共[d/GLACCOUNT]
 [d/GLACCOUNT]的变量成员#COST_B
 [d/GLACCOUNT]的变量成员#COST_C
 [d/GLACCOUNT]的变量成员#COST_D

 DATA([d/GLACCOUNT] = #COST_A,[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] =" X01",[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")+
         RESULTLOOKUP([d/GLACCOUNT] =" X02",[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")+
         ...
         RESULTLOOKUP([d/GLACCOUNT] =" X05",[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")

 DATA([d/GLACCOUNT] = #COST_B,[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] =" X06",[d/SALESOFFICE] ="#")+
         ...
         RESULTLOOKUP([d/GLACCOUNT] =" X10",[d/SALESOFFICE] ="#")

 DATA([d/GLACCOUNT] = #COST_C,[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] =" X06",[d/PRODUCT] ="#")+
         ...
         RESULTLOOKUP([d/GLACCOUNT] =" X10",[d/PRODUCT] ="#")

 DATA([d/GLACCOUNT] = #COST_D,[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] =" X06")+
         ...
         RESULTLOOKUP([d/GLACCOUNT] =" X10")

 DATA([d/GLACCOUNT] =" Z",[d/PRODUCT] ="#",[d/SALESOFFICE] ="#")=
         RESULTLOOKUP([d/GLACCOUNT] = #PRODCOST_A)+
         RESULTLOOKUP([d/GLACCOUNT] = #PRODCOST_B)+
         RESULTLOOKUP([d/GLACCOUNT] = #PRODCOST_C)+
         RESULTLOOKUP([d/GLACCOUNT] = #PRODCOST_D)

这真的很表演吗? 有没有更简单的方法?

谢谢-托马斯

PS:我缺少一个在RESULTLOOKUP函数中的维度过滤器中指定多个值的选项。

付费偷看设置
发送
4条回答
四川大学会员
1楼-- · 2020-08-16 00:40

为什么不使用MEMBERSET范围源帐户?

 MEMBERSET [d/GLACCOUNT] =(" X01"," X02"," X03"," X04"," X05")
 成员[d/PRODUCT] ="#"
 成员[d/SALESOFFICE] ="#"
 数据([d/GLACCOUNT] = #COST_A)= RESULTLOOKUP()
 成员集[d/GLACCOUNT] =(" X06"," X07"," X08"," X09"," X10")
 数据([d/GLACCOUNT] = #COST_B)= RESULTLOOKUP()
 ... 
ZJXianG
2楼-- · 2020-08-16 00:29

嗨,瓦迪姆,

不允许在DATA函数之后定义MEMBERSET范围。

这意味着在每个"高级公式"步骤的开始只能定义一次MEMBERSET。

在我的情况下,我有4个变量,它们在以后进行汇总(#PRODCOST_A + #PRODCOST_B + #PRODCOST_C + #PRODCOST_D)。

变量仅在"高级公式步骤"中可见,而不能在整个数据操作中共享。

当然,我可以创建虚拟帐户来存储值而不是变量,但这是我要避免的事情。

因此,我认为您使用MEMBERSET解决范围帐户的解决方案将无法完全正常工作。

如果我误解了一些东西,请告诉我。 否则,还有其他解决方案吗?

关于托马斯,

宇峰Kouji
3楼-- · 2020-08-16 00:41

对不起,我的错:)我只花了几个小时来玩高级公式脚本!

看起来没有办法拥有多个 RESULTLOOKUP中的成员过滤器...

您可以尝试在GLACCOUNT维中创建2个属性并填充:

 Acc TARGET_A TARGET_BCD
 X01 Z
 X02 Z
 X03 Z
 X04 Z
 X05 Z
 X06 Z
 X07 Z
 X08 Z
 X09 Z
 X10 Z 

然后类似:

//仅适用于X01 ... X05
 DATA([[d/GLACCOUNT] = [d/GLACCOUNT]。[p/TARGET_A],...)= RESULTLOOKUP(...)
//对于X06 ... X10
 DATA.APPEND([[[d/GLACCOUNT] = [d/GLACCOUNT]。[p/TARGET_BCD],...)= RESULTLOOKUP(...)
 DATA.APPEND([[[d/GLACCOUNT] = [d/GLACCOUNT]。[p/TARGET_BCD],...)= RESULTLOOKUP(...)
 ... 
暮风yp
4楼-- · 2020-08-16 00:39

P.S。 过去,我认为BPC脚本逻辑是一种非常有限的语言,但是现在有了SAC ...

一周热门 更多>