CAP扩展方案-如何询问过滤器?

2020-08-15 20:21发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们刚刚启动了一个项目,使用CA...

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

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


我们刚刚启动了一个项目,使用CAP Java为SuccessFactors构建新的扩展。 我们需要做的第一件事之一就是为持久保存在SF中而不是HANA中的实体(就像它们中的大多数一样)处理读取场景。 我需要确定传入了哪些过滤器,然后使用它们从SF构建一个类似的查询(使用SAP Cloud SDK)。

我不敢相信这有多难! 我(Java开发人员)同事的方法是(使用Spring Boot API)获取整个请求url,然后以这种方式确定过滤器。 我认为"必须有更好的方法,因为这应该是CAP的核心重点"。

经过反复试验,我设法产生了这种基本方法(参见下文),这使我可以继续进行自己的开发。 这是一项正在进行的工作(顺便说一句,我不是Java专家),需要进行增强以处理诸如OR条件和诸如NE或LT之类的谓词。

有人有更好的方法吗? 我并不是真的要整理这段代码(例如,使用groupBy方法)。 相反,我的意思是还有其他可用的CAP Java API吗?

我的另一个问题是," 扩展方案的文档在哪里?"。 我看过了

几乎所有这些内容都与未开发的CAP方案有关,例如著名的书店示例。 在我们扩展后端系统(例如S/4(尤其是S/4 Cloud))的情况下,没有任何事情 或SuccessFactors。 许多示例都显示了诸如创建订单时如何更新书籍存货之类的事情,但与扩展方案并不相关。 我们需要的第一件事是如何

询问由UI传递给CAP的读取请求。 对于我在代码中使用的SAP类和接口,没有任何文档。 许多类甚至都没有公共的JavaDoc! 我确实找到了一个有关扩展的教程,但这是针对node.js CAP的。

Iwona Hahn 您能帮我找到一些有关扩展方案的文档吗?

公共静态Map  mapFilterFieldsFromSimpleCqnSelect(CqnSelect cqn){
         Map  filtersMap = new HashMap ();

         如果(cqn.where()。isPresent()){
             CqnPredicate pred = cqn.where()。get();
             Stream 令牌;
            
            //建立属性名称清单
             令牌= pred.tokens();
             List 属性= tokens.filter(令牌-> ElementRefImpl的令牌实例)
                                             .map(ElementRefImpl.class :: cast)
                                             .map((ref)-> ref.displayName())
                                             .collect(Collectors.toList());
    
            //建立栏位值清单
             令牌= pred.tokens();
             List 值= tokens.filter(令牌-> CqnStrLiteral的令牌实例)
                                         .map(CqnStrLiteral.class :: cast)
                                         .map((lit)-> lit.value())
                                         .collect(Collectors.toList());
    
            //组合成地图
             for(int i = 0; i             
3条回答
N-Moskvin
2020-08-15 21:09

嗨,马克,非常感谢您的回复。 您使用的API看起来很相似,但是您的代码当然更全面。 很高兴知道我处在正确的轨道上,未来更加光明。

也许您应该更广泛地共享这些示例应用程序。 例如,一个特定的扩展教程会很棒

一周热门 更多>