@ sap/cds-odata-v2-adapter-proxy不以整数形式返回聚合度量

2020-09-01 05:12发布

         点击此处--->   EasySAP.com群内免费提供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是一个整数。

期待您的帮助。

最诚挚的问候
格雷戈尔

         点击此处--->   EasySAP.com群内免费提供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是一个整数。

期待您的帮助。

最诚挚的问候
格雷戈尔

付费偷看设置
发送
4条回答
Nan4612
1楼-- · 2020-09-01 05:49

你好,格雷格,

这可能只是一个错误,但 Oliver Klemenz 可以确认吗?

干杯

Pierre

我是小鹏鹏啊
2楼-- · 2020-09-01 05:38

我刚刚看到,您还尝试过使用ABAP CDS重新检查它。

我也这样做了,在我的情况下,小数作为字符串返回...

由于OData V4总是返回@ odata.type":" #Decimal"我也总是转换为字符串,因为十进制在OData v2中表示为字符串。

也许OData V4需要在整数和(保持整数类型)的情况下返回不同的类型

然后我可以对它做出反应,并根据@ odata.type进行分类...

但是您在代理中执行的代码替换对于十进制而言是不正确的,因为它们在v4中由JSON数字表示,在v2中由JSON字符串表示...

SC_Yao
3楼-- · 2020-09-01 05:47

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

暮风yp
4楼-- · 2020-09-01 05:40

嗨,格雷戈尔


感谢您的评论。 我认为您是对的,在Fiori Elements层中这不是问题。

结合CDS和CDS OData v2适配器代理似乎是一个问题。

CDS服务运行时,需要正确填写" @ odata.type",当前始终为" #Decimal"。

CDS OData v2适配器代理仅需要基于" @ odata.type"信息进行字符串化。

我们将对此进行进一步调查,并将提供修复程序。

感谢您报告此问题。

最诚挚的问候

橄榄

一周热门 更多>