实体属性的首字母由@ sap/cloud-sdk-generator转换为小写

2020-08-16 05:42发布

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

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

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


SAP Cloud SDK专家您好,

我正在完成教程任务使用CAP和SAP Cloud SDK 扩展S/4HANA 。 但是,我没有使用基于S/4HANA的业务伙伴,而是在我的AS ABAP中基于EPM业务伙伴创建了一个简单的OData服务。 为了简化复制问题,我为此OData服务创建了模拟服务 。 下一步,我遵循了使用SAP Cloud SDK的生成器生成自定义OData客户端库。 为我的消费者应用获取类型化的界面。

到目前为止一切顺利。 生成的结果即 EpmBusinessPartnerSet.ts 文件,其中包含实体集的所有属性。 但不像EDMX磁贴中的 ZEPM_BP_SRV.edmx 用作来源的属性(即BpId)始终以小写字母(即bpId)开头。 因此,我需要调整服务定义,这样 服务实现与通用选择一起使用。

有没有办法改变发生器的这种行为? 还是有一种更简单的方式来使用OData服务?

最诚挚的问候
格雷戈尔

3条回答
My梦
2020-08-16 06:25 .采纳回答

你好,格雷格,

感谢您与我们联系! 如果我理解正确,那么您正在使用CAP公开OData服务,并希望从下游服务中提供一些数据,这些数据是使用SAP Cloud SDK的OData客户端生成器生成的代码来消费的。

在最终的JavaScript代码中减少属性是一个明智的决定,以便与您通常在JavaScript中定义属性的方式保持一致。 话虽这么说,SDK的核心包(@ sap/cloud-sdk-core)导出了一个函数" serializeEntity",该函数将服务调用的结果转换为OData JSON格式(因此,仅是用于与该服务进行通信的常规格式) 无论如何)。 如果在调用select之前应用此功能,则应该可以解决格式问题。 因此,在您的情况下,它将是:

 const {FilterList,serializeEntity} = require('@ sap/cloud-sdk-core');

 const epmbps =
   等待EpmBusinessPartnerSet.requestBuilder()
           。得到所有()
           .filter(createFilter(results))
.execute(目的地) .then(businessPartners => businessPartners.map(bp => serializeEntity(bp,EdmBusinessPartnerSet)))

尽管这是暂时的解决方法,请让我们知道这是否可以解决您的问题!

如果您总体上有解决此问题的想法,我们也很想听听您的看法!

最诚挚的问候,
丹尼斯

一周热门 更多>