2020-09-26 09:06发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我们有一个要求,必须根据某些条件通过逻辑脚本调用业务规则。 例如,如果ACCOUNT VALUE> 0,则* INCLUDE ABC.LGF,否则为PQR.LGF。
我们可以实现吗? 如有需要,我们乐意进一步阐述。
不,我们不能!
脚本逻辑不是真正的语言,并且其中没有IF THEN。
更何况您无法基于事务数据值更改脚本执行。
WHEN/ENDWHEN循环中唯一支持的是三元运算符:
*帐户开通时间
* IS A1
* REC(EXPRESSION =%VALUE%> 0?%VALUE%:0,ACCOUNT = A2)
* ENDWHEN
如果您可以使用WHEN/REC/ENDWHEN代替规则,则可以执行某些操作!
感谢Vadim和Pratyush的回复。 我们试图为满足以下要求在逻辑脚本中放入逻辑。 任何人都可以检查是否正确 语法?
要求是-
如果C_ACCOUNT_ORIG上的TECH_INT_TOTAL-默认> 0,则
1)INT_04 = TECH_INT_04 + TECH_INT_16
2)INT_05 = TECH_INT_05 + TECH_INT_17
3)INT_06 = TECH_INT_06 + TECH_INT_18
4)INT_07 = TECH_INT_07 + TECH_INT_19
5)INT_16 = 0
6)INT_17 = 0
7)INT_18 = 0
8)INT_19 = 0
如果C_ACCOUNT_ORIG上的TECH_INT_TOTAL-默认<= 0,则
1)INT_04 = 0
2)INT_05 = 0
3)INT_06 = 0
4)INT_07 = 0
5)INT_16 = TECH_INT_04 + TECH_INT_16
6)INT_17 = TECH_INT_05 + TECH_INT_17
7)INT_18 = TECH_INT_06 + TECH_INT_18
8)INT_19 = TECH_INT_07 + TECH_INT_19
逻辑脚本:
*当C_ACCOUNT *为TECH_INT_TOTAL时
* REC(C_ACCOUNT = INT_04,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。[ TECH_INT_16]):0)
* REC(C_ACCOUNT = INT_16,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])== 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。 [TECH_INT_16]):EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])<0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。[TECH_INT_16]):0 )
* REC(C_ACCOUNT = INT_05,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_05] + [C_ACCOUNT]。[ TECH_INT_17]):0)
* REC(C_ACCOUNT = INT_17,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])== 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_05] + [C_ACCOUNT]。 [TECH_INT_17]):EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])<0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_05] + [C_ACCOUNT]。[TECH_INT_17]):0 )
* REC(C_ACCOUNT = INT_06,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_06] + [C_ACCOUNT]。[ TECH_INT_18]):0)
* REC(C_ACCOUNT = INT_18,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])== 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_06] + [C_ACCOUNT]。 [TECH_INT_18]):EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])<0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_06] + [C_ACCOUNT]。[TECH_INT_18]):0 )
* REC(C_ACCOUNT = INT_07,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_07] + [C_ACCOUNT]。[ TECH_INT_19]):0)
* REC(C_ACCOUNT = INT_19,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])== 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_07] + [C_ACCOUNT]。 [TECH_INT_19]):EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])<0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_07] + [C_ACCOUNT]。[TECH_INT_19]):0 )
对不起,但您似乎没有阅读我的答案!
" * REC(C_ACCOUNT = INT_04,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。 [TECH_INT_16]):0)"-错误的语法!
我的帖子中的语法:
您的REC必须是:
* REC(EXPRESSION =([C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0?[C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。[TECH_INT_16]:0,C_ACCOUNT = INT_04)
对于其他内容,您必须解释范围界定逻辑...
P.S。 请评论答案,而不是问题!
嗨,Sameer,
我不确定您在哪个SP中,但是您可以浏览关键字
* XDIM_SKIPNULLCHECK-
正如Vadim所建议的那样,脚本并非旨在将条件语句放在事务数据上,并且该条件语句非常本机。 您必须在"何时"条件下进行操作,或通过跳空键才能获得所需的结果。
根据需求进一步扩展,可能会有解决方法。
https ://www.column5.com/blog/how-to-create-conditional-logic-in-sap-business-objects-planning-consolidation-version-for-netweaver
请阅读: https ://blogs.sap.com/2014/01/31/how-to-ask-questions-about-script-logic-issues /
并提供所需的信息和示例测试用例!
"系统未考虑..."范围可能不正确!
"我们应该放入
*当C_ACCOUNT
* IS ????????"-解释您拥有的数据!
最多设置5个标签!
不,我们不能!
脚本逻辑不是真正的语言,并且其中没有IF THEN。
更何况您无法基于事务数据值更改脚本执行。
WHEN/ENDWHEN循环中唯一支持的是三元运算符:
*帐户开通时间
* IS A1
* REC(EXPRESSION =%VALUE%> 0?%VALUE%:0,ACCOUNT = A2)
* ENDWHEN
如果您可以使用WHEN/REC/ENDWHEN代替规则,则可以执行某些操作!
感谢Vadim和Pratyush的回复。 我们试图为满足以下要求在逻辑脚本中放入逻辑。 任何人都可以检查是否正确 语法?
要求是-
如果C_ACCOUNT_ORIG上的TECH_INT_TOTAL-默认> 0,则
1)INT_04 = TECH_INT_04 + TECH_INT_16
2)INT_05 = TECH_INT_05 + TECH_INT_17
3)INT_06 = TECH_INT_06 + TECH_INT_18
4)INT_07 = TECH_INT_07 + TECH_INT_19
5)INT_16 = 0
6)INT_17 = 0
7)INT_18 = 0
8)INT_19 = 0
如果C_ACCOUNT_ORIG上的TECH_INT_TOTAL-默认<= 0,则
1)INT_04 = 0
2)INT_05 = 0
3)INT_06 = 0
4)INT_07 = 0
5)INT_16 = TECH_INT_04 + TECH_INT_16
6)INT_17 = TECH_INT_05 + TECH_INT_17
7)INT_18 = TECH_INT_06 + TECH_INT_18
8)INT_19 = TECH_INT_07 + TECH_INT_19
逻辑脚本:
*当C_ACCOUNT *为TECH_INT_TOTAL时
* REC(C_ACCOUNT = INT_04,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。[ TECH_INT_16]):0)
* REC(C_ACCOUNT = INT_16,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])== 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。 [TECH_INT_16]):EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])<0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。[TECH_INT_16]):0 )
* REC(C_ACCOUNT = INT_05,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_05] + [C_ACCOUNT]。[ TECH_INT_17]):0)
* REC(C_ACCOUNT = INT_17,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])== 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_05] + [C_ACCOUNT]。 [TECH_INT_17]):EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])<0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_05] + [C_ACCOUNT]。[TECH_INT_17]):0 )
* REC(C_ACCOUNT = INT_06,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_06] + [C_ACCOUNT]。[ TECH_INT_18]):0)
* REC(C_ACCOUNT = INT_18,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])== 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_06] + [C_ACCOUNT]。 [TECH_INT_18]):EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])<0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_06] + [C_ACCOUNT]。[TECH_INT_18]):0 )
* REC(C_ACCOUNT = INT_07,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_07] + [C_ACCOUNT]。[ TECH_INT_19]):0)
* REC(C_ACCOUNT = INT_19,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])== 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_07] + [C_ACCOUNT]。 [TECH_INT_19]):EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])<0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_07] + [C_ACCOUNT]。[TECH_INT_19]):0 )
对不起,但您似乎没有阅读我的答案!
" * REC(C_ACCOUNT = INT_04,EXPRESSION =(([[C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0)?EXPRESSION =([C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。 [TECH_INT_16]):0)"-错误的语法!
我的帖子中的语法:
* REC(EXPRESSION =%VALUE%> 0?%VALUE%:0,ACCOUNT = A2)
您的REC必须是:
* REC(EXPRESSION =([C_ACCOUNT]。[TECH_INT_TOTAL],[C_ACCOUNT_ORIG]。[DEFAULT])> 0?[C_ACCOUNT]。[TECH_INT_04] + [C_ACCOUNT]。[TECH_INT_16]:0,C_ACCOUNT = INT_04)
对于其他内容,您必须解释范围界定逻辑...
P.S。 请评论答案,而不是问题!
嗨,Sameer,
我不确定您在哪个SP中,但是您可以浏览关键字
* XDIM_SKIPNULLCHECK-
正如Vadim所建议的那样,脚本并非旨在将条件语句放在事务数据上,并且该条件语句非常本机。 您必须在"何时"条件下进行操作,或通过跳空键才能获得所需的结果。
根据需求进一步扩展,可能会有解决方法。
https ://www.column5.com/blog/how-to-create-conditional-logic-in-sap-business-objects-planning-consolidation-version-for-netweaver
请阅读: https ://blogs.sap.com/2014/01/31/how-to-ask-questions-about-script-logic-issues /
并提供所需的信息和示例测试用例!
"系统未考虑..."范围可能不正确!
"我们应该放入
*当C_ACCOUNT
* IS ????????"-解释您拥有的数据!
一周热门 更多>