CAP的自定义逻辑错误:"无效的列名:COUNT"

2020-08-24 02:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在使用CAP创建OData服...

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

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


我正在使用CAP创建OData服务。

目标是使以下网址正常工作。

 /analytics-output/ApplicationUsage?select = application,count&$ orderby = count 

这是服务模型。

 @readonly
     实体ApplicationUsage {
         关键应用:String(80);
             计数:十进制;
             timestamp:DateTime null;
     }
 

这是自定义逻辑(js文件)的实现

 srv.on('READ','ApplicationUsage',(req)=> {
         selectQuery ='选择'+
             "将关键的app.application作为应用程序," +
             'COUNT(app.application)as count:十进制'+
             '来自cis.fiorianalytics。动作作为动作'+
             '将action.applicationID = app.id内加入cis.fiorianalytics.Apps作为应用程序'+
             '按应用程序分组';

         让查询= cds.parse.cql(selectQuery);
        //附加时间戳记WHERE和ORDERBY条件
         query.SELECT.orderBy = req.query.SELECT.orderBy;
         query.SELECT.where = req.query.SELECT.where;
         返回cds.run(query);
     }); 

这在本地部署中效果很好,我得到了数据。 但是它无法在HANA中工作(在部署到试用版CF之后)。

我最终在浏览器中得到了一个不太有用的错误。

 <错误xmlns =" http://docs.oasis-open.org/odata/ns/metadata">
  500 
 内部服务器错误
  

当我查看SCP上的"日志"时,我看到下面的行似乎与之相关。

任何帮助将不胜感激。

(34.0 kB)
4条回答
nice_wp
2020-08-24 02:33

您好,克里希纳,

您已使用属性计数定义了实体ApplicationUsage。 如果现在在请求中执行" $ orderby = count",则这将转换为" req.query.SELECT.orderBy"中的" order by ApplicationUsage.count asc",即列上的order by。 但是,在您的SQL中,您联接了两个表,而创建别名CAP不知道,而count实际上是一个聚合,而CAP也不知道。 因此," req.query.SELECT.orderBy"的内容不适合您的SQL。

顺便说一句,SQLite只是忽略了这样的错误,这就是为什么您不在本地遇到它们的原因。

最佳,
塞巴斯蒂安

一周热门 更多>