ABAP CDS查看默认聚合#FORMULA

2020-08-15 22:14发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的SAP顾问 我试图在CD...

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

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


尊敬的SAP顾问

我试图在CDS视图中使用'@DefaultAggregation:#FORMULA'聚合,但是我无法使其工作。

业务需求如下:我们有定购数量和已售数量,并且必须提供已售商品中所占数量的百分比。

对于订购数量和售出数量,我使用了" @DefaultAggregation:#SUM",对于计算列,我使用了以下摘自另一篇文章的代码段:

 @ Aggregation.default:#FORMULA
 @ AnalyticsDetails.query.formula:'NDIV0(QtaSold/QtaOrdered)* 100'
 @ AnalyticsDetails.query.decimals:2
 1作为百分比

在测试CDS时,对于计算所得的列,我在整个输出中得到了'1'。

您能告诉我我想念什么吗?

2条回答
绿领巾童鞋
2020-08-15 22:57

如您的定义所说

 1作为百分比

毫不奇怪,您在所有行中看到1

@AnalyticsDetails的文档。 说:

此批注允许您指定公式表达式,该表达式不能表示为SQL公式(视图元素列表中需要的操作数)。 只能将数值(度量)用作操作数。

范围:#ELEMEN

评估运行时(引擎):此注释将由分析管理器解释为公式。

对于不通过分析管理器的查询,不会评估注释的公式-您以哪种方式测试视图?

您可以将公式移至SQL表达式并删除@ AnalyticsDetails.query.formula批注-然后,您当然需要将除数处理为零。 最好的方法可能是在两个分支的QtaOrdered字段上具有WHERE条件的UNION ALL(一个分支WHERE QtaOrdered <> 0和另一个WHERE QtoOrdered = 0)

一周热门 更多>