我正在尝试访问我们的S/4内部部署系统,而不涉及任何云服务。我’,连接到VPN,可以到达我们的S/4系统,并通过Postman成功地解决了BP API服务。
当我部署我的应用程序时,整个东西也能正常工作。然而,我不想盲目地编程并开始&在我的本地机器上测试整个程序。不幸的是,它不工作…
从VCAP_SERVICES变量获取'目标'服务凭据失败:没有为服务计划'(any)'找到服务绑定。请确保正确地将应用程序绑定到目标服务的服务实例。
和
由:com.sap.cloud.sdk.cloudplatform.security.exception.TokenRequestFailedException: Failed to get destination service client identifier and secret。请确保正确地将应用程序绑定到目标服务实例
我可以直接使用云SDK访问S4吗,还是我需要btp中的目标服务?
我application-local。Yaml文件看起来像:
destinations:
s4:
name: s4
authentication-type: BASIC_AUTHENTICATION
url: 'https://ourS4URL'
user: USER
password: ZZZ
trust-all-certificates: true
只是为了测试它,我尝试读出所有目的地,但即使在这里,我也直接得到上述错误:
ScpCfDestinationLoader load = new ScpCfDestinationLoader();
Try<Iterable<ScpCfDestination>> destinations = load.tryGetAllDestinations();
// sysout etc.
与部署版本的唯一区别是,我启动了应用程序。使用配置文件"云",而不是"本地"。喜欢这里。我忘记了什么?还是真的不可能?
编辑:这就是我在部署版本中使用服务的方式:
HttpDestination httpDestination = DestinationAccessor.getDestination("s4").asHttp()
.decorate(DefaultErpHttpDestination::new);
final BusinessPartnerService service = new DefaultBusinessPartnerService();
由于您能够直接访问本地系统,因此您可以选择以编程方式创建目的地并注册它,以便DestinationAccessor
能够提供此目的地的详细信息,而不是使用目的地服务。请在这里阅读有关此选项的更多信息。
或者,你也可以为你的目标设置一个环境变量:(以Windows为例,请根据你的操作系统进行调整)
$destinations='[{name: "MyErpSystem", url: "https://URL", "username": "USER", "password": "PASSWORD"}]'
这两个方法都确保DestinationAcessor
返回一个有效的目的地(您的S/4内部部署系统)。