CAP自定义处理程序内联计数

2020-08-16 01:43发布

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

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


嗨,

对于我使用CAP的一个项目,我将启用了Excel导出功能的列表报告放在CAP OData服务的顶部。

列表报告会自动添加$ inlinecount选项,例如:

产品?$ skip = 0&$ top = 20&$ select = Product%2cValuationArea%2cProductName%2cProductHierarchy%2cPortfolio&$ inlinecount = allpages 

我似乎找不到从自定义读取处理程序(结果=结果数组)中返回计数值的方法:

 this.on('READ','Products',async req => {
  //已删除代码
   返回结果;
 });  

不幸的是,由于我无法返回内联计数值,因此现在在导出Excel文件时始终会产生警告消息:

由于缺少计数而导致的另一件事是列表报告的标头计数(似乎将增长的次数乘以2):

此线程我发现了一个类似的问题,但是是$ count(不是$ inlinecount)。 不幸的是,inlinecount的处理方式不同(两个读取事件),而只有一个读取事件。

有人接这个吗?

最诚挚的问候,

Geert-Jan Klaps

(42.9 kB)

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

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


嗨,

对于我使用CAP的一个项目,我将启用了Excel导出功能的列表报告放在CAP OData服务的顶部。

列表报告会自动添加$ inlinecount选项,例如:

产品?$ skip = 0&$ top = 20&$ select = Product%2cValuationArea%2cProductName%2cProductHierarchy%2cPortfolio&$ inlinecount = allpages 

我似乎找不到从自定义读取处理程序(结果=结果数组)中返回计数值的方法:

 this.on('READ','Products',async req => {
  //已删除代码
   返回结果;
 });  

不幸的是,由于我无法返回内联计数值,因此现在在导出Excel文件时始终会产生警告消息:

由于缺少计数而导致的另一件事是列表报告的标头计数(似乎将增长的次数乘以2):

此线程我发现了一个类似的问题,但是是$ count(不是$ inlinecount)。 不幸的是,inlinecount的处理方式不同(两个读取事件),而只有一个读取事件。

有人接这个吗?

最诚挚的问候,

Geert-Jan Klaps

(42.9 kB)
6条回答
Violet凡
1楼 · 2020-08-16 02:24.采纳回答

Geert-Jan嗨,

您应该根据外部服务返回的结果创建一个数组,并为其分配属性$ count。

例如,我有一个简单的请求

 GET/Employees?$ count = true 

(在您使用OData v4的自定义处理程序中,稍后它将通过适配器转换为v2)

然后,自定义处理程序的结果应类似于:

 Array(3)[对象,对象,对象]
 $ count:3
 1:对象{ID:1,名称:" John",生日:1970}
 2:对象{ID:3,名称:" Mia",生日:1950年}
 3:对象{ID:2,NAME:" Mike",生日:1960} 

最诚挚的问候,

Olena

大道至简
2楼-- · 2020-08-16 02:13

嗨,Olena,

感谢这个提示,这正是我所缺少的!

最诚挚的问候,

Geert-Jan

三十六小时_GS
3楼-- · 2020-08-16 02:13

嗨Geert-Jan,

开始 OData v4

 $ inlinecount = allpages已缩短为$ count = true。
 

因此,您可以使用您提到的问题中提供的解决方案。

还是要使用ODava v2(旧的OData格式)和inlinecount?

最诚挚的问候,

Olena

huskylover
4楼-- · 2020-08-16 02:13

嗨,Olena,

好吧,我现在使用默认OData V2模型的列表报告(CAP项目使用OData V2适配器 ),那就太好了。 (将$ inlinecount转换为count = true)

我面临的问题基本上是找到一种从自定义处理程序中返回实际计数值以及结果集的方法,因为该处理程序仅 执行一次。 (我已经在我的项目中获得了计数值)

最诚挚的问候,

Geert-Jan

吹牛啤
5楼-- · 2020-08-16 02:13

Hi Geert-Jan,

对不起,我不确定我是否正确解决了您的问题。

在您的自定义处理程序中,您可以根据需要向数据库发送尽可能多的请求。 然后,您可以将获得的结果集组合起来并计入一个对象中,然后将其返回。

如果您有其他意思,请纠正我。

最诚挚的问候,

Olena

N-Moskvin
6楼-- · 2020-08-16 02:23

嗨,Olena,

这正是我想要做的(尽管我不是在调用数据库,而是在使用外部的odata服务) 。 我似乎找不到在文档中一次发送计数和结果集的返回对象的格式。

您能告诉我返回对象应同时发送计数和结果集的格式吗? 计数和结果集一次? (我使用的是基于Node.js的CAP框架)

最好的问候,

Geert-Jan

一周热门 更多>