SAP Cloud SDK for javascript 使用目标

SAP Cloud SDK for javascript using the destination

我已经按照 Tutorial 构建了基于 CF 的基本 nodejs 应用程序,以显示来自我的 S/4HANA 内部部署目的地的所有 BusinessPartners。

function getAllBusinessPartners(): Promise<BusinessPartner[]> {
  return BusinessPartner.requestBuilder()
    .getAll()
    .execute({
      destinationName: 'MockServer'
    });
}

目标配置了来自云连接器的虚拟主机。

但是在部署到 Cloud Foundry 之后,我收到以下 GET 请求错误

{"message":"Service of type destination is not supported! Consider providing your own transformation function when calling destinationForServiceBinding, like this:\n destinationServiceForBinding(yourServiceName, { serviceBindingToDestination: yourTransformationFunction });","level":"warn","custom_fields":{"package":"core","messageContext":"destination-accessor"},"logger":"sap-cloud-sdk-logger","timestamp":"2020-03-09T18:15:41.856Z","msg":"Service of type destination is not supported! Consider providing your own transformation function when calling destinationForServiceBinding, like this:\n destinationServiceForBinding(yourServiceName, { serviceBindingToDestination: yourTransformationFunction });","written_ts":1583777741856,"written_at":"2020-03-09T18:15:41.856Z"}

该应用程序也已绑定到目标服务。

有人可以帮我吗,哪里出了问题?还是新版本的Cloud-SDK使用destination的方法不同?

如果您的请求确实出错,那么您从日志中发布的内容很可能不是失败的原因。我们知道此消息令人困惑,并将对其进行改进 (https://github.com/SAP/cloud-sdk/pull/32)。 你能检查一下你的日志中是否有更多的错误吗?根据您发布的代码和您描述的设置,这应该可行。您是否绑定到 XSUAA 服务。

经过多次尝试,我成功了。

我的观察:

  1. Connectivity服务也需要绑定,当使用本地S4后端时。

  2. 日志中没有错误,我对代码进行了一定的修改以使用async/await

async function getAllBusinessPartners(): Promise<BusinessPartner[]> {
  return await BusinessPartner.requestBuilder()
    .getAll()
    .execute({
      destinationName: 'MockServer'
    });
}

修改后,当我点击 GET 请求时,出现以下错误:

"Failed to get business partners - get request to http://s4h-scc-basic:500/sap/opu/odata/sap/API_BUSINESS_PARTNER/sap/opu/odata/sap/API_BUSINESS_PARTNER failed!"

可以注意到http://domain:port之后的suffix是两次。一个我在目的地给的,另一个VDM自动添加。 理想情况下,甚至在添加 async/await.

之前就应该抛出此错误

从目标中删除 suffix 后,它开始工作了。