使用CDS计算关联实体

2020-09-03 18:30发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 是否可以使用CDS计算关...

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

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


嗨,

是否可以使用CDS计算关联实体的数量? 假设我要显示特定作者撰写的书籍数量:

实体书籍{
     密钥ID:整数;
     title:本地化的String;
     作者:作者协会;
   }

   实体作者{
     密钥ID:整数;
     名称:字符串;
     书籍:与许多书籍有关的书籍。author= $ self;
     @ Core.Computed
     numberOfBooks:整数;
   }
 

我尝试了类似 count(books)作为numberOfBooks 的操作,但不支持:-)

干杯

皮埃尔

10条回答
shere_lin
2020-09-03 19:05

嗨约翰尼斯,

这实际上并没有达到预期的效果,因为那么numberOfBooks包含作者总数,而响应仅包含1个作者:

 {
 " @ odata.context":" $ metadata#Authors",
 " @ odata.metadataEtag":" W/\" 8q5jjLD6vJ0ARrjnkajTONXIn38vpa1wxoXucua4kzU = \"",
 "值":[{
 " ID":101,
 " name":" EmilyBrontë",
 " numberOfBooks":4
 }]
 } 

这就是DJ解决方案的收获:

 {
 " @ odata.context":" $ metadata#Authors",
 " @ odata.metadataEtag":" W/\" 8q5jjLD6vJ0ARrjnkajTONXIn38vpa1wxoXucua4kzU = \"",
 "值":[{
 " ID":101,
 " name":" EmilyBrontë",
 " numberOfBooks":1
 },
 {
 " ID":107,
 " name":" CharloteBrontë",
 " numberOfBooks":1
 },
 {
 " ID":150,
 " name":" Edgar Allen Poe",
 " numberOfBooks":2
 },
 {
 " ID":170,
 " name":" Richard Carpenter",
 " numberOfBooks":1
 }
 ]
 } 

编辑:这是一个解决方案,在CDS级别使用计数:

 service CatalogService {

   实体书作为my.Books上的投影;
   从my.Authors,my.Books {
     关键Authors.ID,
     名称,
     @ Core.Computed
     count(Books.ID)as numberOfBooks:整数
   },其中Authors.books.ID = Books.ID
     按Authors.ID分组;
 } 

cds将。\ srv \ cat-service.cds编译为sql:

创建视图CatalogService_Authors AS SELECT
   作者_0.ID,
   Author_0_0.name,
   COUNT(Books_1.ID)AS numberOfBooks
 FROM(((my_bookshop_Authors AS Authors_0 CROSS JOIN my_bookshop_Books AS Books_1)左加入my_bookshop_Books AS Books_2 ON(Books_2.author_ID = Authors_0.ID))
 WHERE Books_2.ID = Books_1.ID
 GROUP BY作者_0.ID; 

干杯

Pierre

一周热门 更多>