点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
您好CAP(M)专家
使用提交 21ad5225404a03020a5ba248b28a65bb2e1c4a75 为Analytics(分析)添加了注释。 不幸的是,当通过@ sap/cds-odata-v2-adapter-proxy请求时,服务将汇总的度量作为String返回。 为此,我使用URL:
http://localhost:4004/v2/catalog/Books?$ select = author_ID,stock&$ orderby = stock&$ inlinecount = allpages
我回来了:
{ " d":{ "结果":[ { " author_ID":107, " __metadata":{ " uri":" http://localhost:4004/v2/catalog/Books(aggregation'{\" key \":{\" author_ID \":107},\" value \":[\" stock \" ]}')", " type":" CatalogService.Books" }, " stock":" 11" }, { " author_ID":101, " __metadata":{ " uri":" http://localhost:4004/v2/catalog/Books(aggregation'{\" key \":{\" author_ID \":101},\" value \":[\" stock \" ]}')", " type":" CatalogService.Books" }, " stock":" 12" }, { " author_ID":170, " __metadata":{ " uri":" http://localhost:4004/v2/catalog/Books(aggregation'{\" key \":{\" author_ID \":170},\" value \":[\" stock \" ]}')", " type":" CatalogService.Books" }, " stock":" 22" }, { " author_ID":150, " __metadata":{ " uri":" http://localhost:4004/v2/catalog/Books(aggregation'{\" key \":{\" author_ID \":150},\" value \":[\" stock \" ]}')", " type":" CatalogService.Books" }, " stock":" 888" } ], " __count":4 } }
您可以看到库存以字符串形式返回。 与使用OData V4进行聚合时相反:
http://localhost:4004/catalog/Books?$ apply = groupby((author_ID),aggregate(stock%20with%20sum%20as%20StockTotal))
我得到:
{ " @ odata.context":" $ metadata#Books(author_ID,StockTotal)", " @ odata.metadataEtag":" W/\" q/OUzjzknmb3bMu6Fb8dAUuX53w4FSBIFhXoCuLQjeI = \"", "值":[ { " @ odata.id":null, " author_ID":101, " StockTotal@odata.type":" #Decimal", "股票总数":12 }, { " @ odata.id":null, " author_ID":107, " StockTotal@odata.type":" #Decimal", "股票总数":11 }, { " @ odata.id":null, " author_ID":150, " StockTotal@odata.type":" #Decimal", "股票总计":888 }, { " @ odata.id":null, " author_ID":170, " StockTotal@odata.type":" #Decimal", "股票总数":22 } ] }
StockTotal是一个整数。
期待您的帮助。
最诚挚的问候
格雷戈尔
你好,格雷格,
这可能只是一个错误,但 Oliver Klemenz 可以确认吗?
干杯
Pierre
我刚刚看到,您还尝试过使用ABAP CDS重新检查它。
我也这样做了,在我的情况下,小数作为字符串返回...
由于OData V4总是返回@ odata.type":" #Decimal"我也总是转换为字符串,因为十进制在OData v2中表示为字符串。
也许OData V4需要在整数和(保持整数类型)的情况下返回不同的类型
然后我可以对它做出反应,并根据@ odata.type进行分类...
但是您在代理中执行的代码替换对于十进制而言是不正确的,因为它们在v4中由JSON数字表示,在v2中由JSON字符串表示...
Hello Gregor,
感谢您的提问:
根据JSON格式(OData版本2.0)
https://www.odata .org/documentation/odata-version-2-0/json-format /
"十进制"被编码为JSON字符串。
Edm.DecimalLiteral形式的Edm.Decimal,用于格式化为JSON字符串的URI中我还使用ABAP Analytical Engine对其进行了仔细检查,并且这些值也以字符串形式返回。
这在哪里造成问题? 在用户界面中?
还是与OData V4不同?
感谢和问候,
Oliver
嗨,格雷戈尔
感谢您的评论。 我认为您是对的,在Fiori Elements层中这不是问题。
结合CDS和CDS OData v2适配器代理似乎是一个问题。
CDS服务运行时,需要正确填写" @ odata.type",当前始终为" #Decimal"。
CDS OData v2适配器代理仅需要基于" @ odata.type"信息进行字符串化。
我们将对此进行进一步调查,并将提供修复程序。
感谢您报告此问题。
最诚挚的问候
橄榄
一周热门 更多>