1

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

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

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

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

{"message":"不支持destination类型的服务!考虑在调用destinationForServiceBinding时提供自己的转换函数,如下所示:\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":"不支持destination类型的服务!考虑在调用destinationForServiceBinding时提供自己的转换函数,如下所示:\n destinationServiceForBinding(yourServiceName, { serviceBindingToDestination: yourTransformationFunction });",“written_ts”:1583777741856,“written_at”:“2020-03-09T18:15:41.856Z”}

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

有人可以在这里帮助我吗,出了什么问题?还是新版 Cloud-SDK 使用destination的方式不同?

4

2 回答 2

1

经过多次尝试,我已经做到了。

我的观察:

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

  2. 日志中没有错误,我在代码中做了一些修改以使用async/await

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

修改后,当我点击 GET 请求时,它给了我以下错误:

“获取业务伙伴失败 - 获取对http://s4h-scc-basic:500/sap/opu/odata/sap/API_BUSINESS_PARTNER/sap/opu/odata/sap/API_BUSINESS_PARTNER 的请求失败!”

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

从目的地删除后suffix,它开始工作。

于 2020-03-12T16:25:39.963 回答
0

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

于 2020-03-10T09:33:34.697 回答