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

2020-09-01 05:12发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)您好CAP(M)专家 使用...

         点击此处--->   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条回答
我是小鹏鹏啊
2020-09-01 05:38

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

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

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

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

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

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

一周热门 更多>