如何将所有SELECT参数传递给外部服务

2020-08-22 08:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) Hello CAP专家,丹尼尔...

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

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


Hello CAP专家,丹尼尔·赫泽尔克里斯汀·乔治(Christian Georgi)

在TechEd会话CAA265中,显示了一个服务重用示例。 为此,使用了外部审阅服务。 不幸的是,所示实现没有将通过OData $ filter或$ select应用的任何过滤器或字段选择转发给被调用的外部服务。

我已将该项目分叉到 CAA265节点 -ex4-final 并将其功能至少实现了将where子句传递给远程服务。 我也测试了这个替代方法:

 req.query.SELECT.from =评论
    结果=等待tx.run(req.query.SELECT)
 

但这会导致错误消息"功能不受支持:流畅的API方法.kind"

我现在有一些问题:

  1. 是否存在更优雅的方法来区分应用$ filter的请求和未过滤的大小写?
  2. 如何做到这一点,以便将所有查询选项都传递给外部服务?
  3. 使用OData V2的Java是否有类似的示例?

最诚挚的问候
格雷戈尔

cc: Henning Heitkoetter DJ Adams Volker Buzek

4条回答
Bunny_CDM
2020-08-22 08:50 .采纳回答

Hello Gregor,

由于Marc在Java和OData v2的上下文中提到了Cloud SDK,所以我想解释一下。

SAP Cloud SDK提供了客户端库来访问由 SAP提供的S/4HANA OData服务。 API Business Hub 。 通过使用所谓的虚拟数据模型(VDM),您可以根据规范读取和写入数据。 该API的设计方式是,不需要任何先前的OData或服务知识。

首先,您要解析目标,然后可以使用VDM的流畅API,例如 解决所有业务合作伙伴的方法:

最终HttpDestination httpDestination = DestinationAccessor.getDestination(" MyErpSystem")。asHttp();

 最终的ErpHttpDestination erpDestination =新的DefaultErpHttpDestination(httpDestination);

 最终列表 businessPartners =
     新的DefaultBusinessPartnerService()
         .getAllBusinessPartner()
         .select(BusinessPartner.BUSINESS_PARTNER,
                 BusinessPartner.LAST_NAME,
                 BusinessPartner.FIRST_NAME,
                 BusinessPartner.IS_MALE,
                 BusinessPartner.IS_FEMALE,
                 BusinessPartner.CREATION_DATE)
         .execute(erpDestination); 

您可以在此处添加过滤器,扩展,分页,排序或计算结果集。

您还可以使用博客文章中所述的生成器来生成自己的OData v2服务的VDM类。 请考虑以下文档项:

最好的问候

亚历山大

一周热门 更多>