点击此处---> 群内免费提供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.cloud.sap上的CAP文档
- 位于 developers.sap.com 的教程
- 关于这里的问题
- DJ Adams 和Max Streifeneder 进行的直播会话
询问由UI传递给CAP的读取请求。 对于我在代码中使用的SAP类和接口,没有任何文档。 许多类甚至都没有公共的JavaDoc! 我确实找到了一个有关扩展的教程,但这是针对node.js CAP的。
Iwona Hahn 您能帮我找到一些有关扩展方案的文档吗?
公共静态MapmapFilterFieldsFromSimpleCqnSelect(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
嗨,迈克,
我们在公共cloud-cap-samples-java存储库中有一个远程S/4 OData扩展用例的示例: https://github.com/SAP-samples/cloud-cap-samples-java/tree/odata-service-consumption (位于odata-service-consumption分支中)。
具体来说,该类在示例中处理从CQN到OData的转换: https://github.com/SAP-samples/cloud-cap-samples-java/blob/odata-service -consumption/srv/src/main/java/my/bookshop/handlers/external/ApiBusinessPartnerHandler.java
您可能知道,Node.js可以开箱即用地处理远程OData服务。 我们还在Java中开发此功能,但尚未准备就绪。
CQN确实是一种强大的野兽,它可以带来一些复杂性。 特别是当必须分析CQN语句时,我们还没有许多API可以简化此任务。 Matthias Schur 可能会提供更多的提示,说明现有的API如何帮助完成任务 从CQN检索过滤器。
最好的问候,
马克
为远程服务创建CAP代理时,我的期望是,如果我不想添加任何其他限制:
在大多数情况下,CAP中间件必须限制用户可以通过某些属性读取的内容。 让我们以最简单的示例用户名为例:
将CAP指向< a hraf=" https://people.sap.com/marcbecker">马克·贝克尔,马蒂亚斯·舒尔 ?
嗨,马克,非常感谢您的回复。 您使用的API看起来很相似,但是您的代码当然更全面。 很高兴知道我处在正确的轨道上,未来更加光明。
也许您应该更广泛地共享这些示例应用程序。 例如,一个特定的扩展教程会很棒
一周热门 更多>