REC在三元表达式中使用属性

2020-09-18 19:36发布

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

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


尊敬的专家,

我遇到了语法问题,我不知道如何在BPC 10.1(SP10)上为一个表达式编写正确的语法。

目的是让我们在 FLOW (校正)上获取值,并希望使用 ACCOUNT 维度中的属性将该值添加到另一流中 (如果值为正数,则为Pos_Flow;如果值为负数,则为Neg_Flow)。

我尝试使用某些语法编写公式:

 * REC(EXPRESSION =%VALUE%> 0?%VALUE%+ [FLOW]。([ACCOUNT] .properties.POS_FLOW):0,FLOW = ACCOUNT.POS_FLOW)
 * REC(EXPRESSION =%VALUE%> 0?%VALUE%+ [FLOW]。[ACCOUNT]。[POS_FLOW]:0,FLOW = ACCOUNT.POS_FLOW)

并且我尝试使用具有相同问题的SELECT语句(RUN_LOGIC:语法错误:"。运算符后缺少名称")

当我只尝试在属性上写入数据时,它可以正常工作,如下所示:

 * REC(EXPRESSION =%VALUE%,FLOW = ACCOUNT.POS_FLOW)

但是我找不到执行三元表达式的好语法。

你能帮我吗?

非常感谢您的帮助。

史蒂芬(Stéphane)

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

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


尊敬的专家,

我遇到了语法问题,我不知道如何在BPC 10.1(SP10)上为一个表达式编写正确的语法。

目的是让我们在 FLOW (校正)上获取值,并希望使用 ACCOUNT 维度中的属性将该值添加到另一流中 (如果值为正数,则为Pos_Flow;如果值为负数,则为Neg_Flow)。

我尝试使用某些语法编写公式:

 * REC(EXPRESSION =%VALUE%> 0?%VALUE%+ [FLOW]。([ACCOUNT] .properties.POS_FLOW):0,FLOW = ACCOUNT.POS_FLOW)
 * REC(EXPRESSION =%VALUE%> 0?%VALUE%+ [FLOW]。[ACCOUNT]。[POS_FLOW]:0,FLOW = ACCOUNT.POS_FLOW)

并且我尝试使用具有相同问题的SELECT语句(RUN_LOGIC:语法错误:"。运算符后缺少名称")

当我只尝试在属性上写入数据时,它可以正常工作,如下所示:

 * REC(EXPRESSION =%VALUE%,FLOW = ACCOUNT.POS_FLOW)

但是我找不到执行三元表达式的好语法。

你能帮我吗?

非常感谢您的帮助。

史蒂芬(Stéphane)

付费偷看设置
发送
4条回答
黑丝骑士
1楼 · 2020-09-18 20:27.采纳回答

对不起,但不清楚您在做什么!

请阅读: https ://blogs.sap.com/2014/01/31/how-to-ask-questions-about-script-logic-issues /

在这种情况下,需要数据样本来弄清楚问题。

我的猜测:在REC中,您想从当前ACCOUNT成员的属性中定义的FLOW成员中读取值

解决方案:按属性定义LOOKUP-阅读帮助: https: //help.sap.com/viewer/a2049170bfeb4178ace32222842c3ec1/10.1/zh-CN/f02a3d4897254042be24ebea3ba572f3.html

最后一个示例:

* DIM RATE:INPUTCURRENCY = ENTITY.CURRENCY

在您的情况下:

* DIM PFLOW:FLOW = ACCOUNT.POS_FLOW

然后在您的REC三元运算符中使用此LOOKUP。

nice_wp
2楼-- · 2020-09-18 20:20

好的,现在很清楚! 那我不明白为什么你需要LOOKUP。 请阅读我的新答案。

hengyuye
3楼-- · 2020-09-18 20:17

根据您的要求编写的脚本("我们希望移动不同的流"):

 * XDIM_MEMBERSET FLOW =初始//范围初始
 *当流
 *是*
 * REC(EXPRESSION =%VALUE%> 0?%VALUE%:0,FLOW = ACCOUNT.POS_FLOW)//如果为正则移动
 * REC(EXPRESSION =%VALUE%<0?%VALUE%:0,FLOW = ACCOUNT.NEG_FLOW)//如果为负则移动
 * REC(EXPRESSION = 0)//清除初始值
 * ENDWHEN 

您所说的"添加"可能不是"移动"? 但是"添加"通常很危险-重复将重复值。

绿领巾童鞋
4楼-- · 2020-09-18 20:33

是的,如果脚本第二次运行,则清除initial可以防止数据重复:

用* REC(EXPRESSION = 0)清除后,初始值为零:

%VALUE%= 0

 * REC(表达式=%VALUE%> 0?%VALUE%+ LOOKUP(PFLOW):LOOKUP(PFLOW),FLOW = ACCOUNT.POS_FLOW)
 * REC(表达式=%VALUE%<0?%VALUE%+ LOOKUP(NFLOW):LOOKUP(NFLOW),FLOW = ACCOUNT.NEG_FLOW)

两行都将目标值写入目标:

从LOOKUP(PFLOW)到FLOW = ACCOUNT.POS_FLOW
 LOOKUP(NFLOW)到FLOW = ACCOUNT.NEG_FLOW 

一周热门 更多>