问题标签 [sap-cloud-sdk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
106 浏览

sap - Cloud Foundry 上的 RFC 支持

几个月前,Cloud Foundry 还没有 Rfc 支持。在这里讨论过

https://blogs.sap.com/2017/09/15/step-11-with-sap-s4hana-cloud-sdk-virtual-data-model-for-bapi/

同时支持 RFC 调用吗?

0 投票
1 回答
463 浏览

java - How to manage users and roles for S/4HANA from Java?

I want to manage Account and Role of SAP S/4HANA Cloud (HEC) by Java code.

My client tries to upgrade to SAP S/4HANA Cloud from R/3. In the previous version of SAP R/3 I could control them using sapjco3.dll and sapjco3.jar.

I find 2 ways which can manage them:

However I could not get a sample code or an article to manage them on SAP S/4HANA Cloud (HEC).

I want to know how to manage user/role on SAP S/4HANA cloud via my Java code.

0 投票
2 回答
840 浏览

s4sdk - 无法使用 S/4 Hana Cloud SDK 对 API_PRODUCT_SRV 标准白名单 API 执行深度插入操作

我已完成对API_PRODUCT_SRVService 的读取和更新操作。

现在在API_PRODUCT_SRV(产品实体 - 有很多关联)上进行深度插入时,我收到以下错误。

我发现了这个深潜博客

https://blogs.sap.com/2017/12/07/step-20-with-s4hana-cloud-sdk-create-and-deep-insert-with-the-virtual-data-model-for-odata/评论页 1/#comment-453020

它解释了使用 servlet 进行的深度插入。(即使用 HttpServletReq)它提供了其余的服务。

但我使用的CreateRequest是 SAP Cloud Application Programming Model 中生成 odata 服务的类,因此我无法使用博客中提供的类似代码。

我已经添加了代码和有效负载供您阅读。

创建操作代码

正在使用的有效载荷:

CreateRequest您能否帮助我在使用 SAP Cloud Application Programming Model(类)时如何修改我的代码以使用 SAP S/4HANA Cloud SDK 进行深度插入?

日志文件:

我的服务.cds

你能告诉我如何在其中添加关联吗? 我的服务.cds

温暖的问候,

米纳克什

0 投票
1 回答
402 浏览

spring-security - 如何使用 SAP S4SDK/CAPM 为我的用户分配角色?

我将 SAP S/4HANA Cloud SDK (S4SDK) 与云应用程序编程模型 (CAPM) 结合使用。我在 Neo 中有工作流和 Fiori 工件,它们使用在 Cloud Foundry (CF) 中运行的 S4SDK 服务。然后,S4SDK 服务使用系统用户调用 S/4HANA(公共)云。我已经按照以下链接设置了从 Neo 到 CF 的原则传播:

从 Neo 到 Cloud Foundry 环境的主要传播

我已经开发我的项目几个月了。现在是时候设置对我的 OData 服务的基于角色的访问了。例如,我需要确保我有后端验证,以检查只有批准者才能将我的请求状态设置为“已批准”。

我计划通过在 my-service.cds 文件中声明多个 OData 服务来做到这一点。然后使用spring-security,我只会让那些拥有批准者角色集合的人访问批准者服务。

我正在关注这个博客:

使用 SAP S/4HANA Cloud SDK 的第 7 步:在 SAP Cloud Platform、CloudFoundry 上保护您的应用程序

我的 xs-security.json 看起来像这样:

我在我的 spring-security.xml 中做了以下条目(否则根据博客):

当我进入 CF 主控室(组织级别)并导航到 Security/Roles 部分时,我可以创建一个新的角色集合并向其中添加两个角色模板。

然后我导航到信任配置,在该配置中我看到了 SCIA(又名 SAP Cloud Identity)和“Neo”部分。后者是我在设置从 Neo 到 CF 的原理传播时配置的。我可以进入任一帐户并输入我的用户电子邮件地址。然后我可以将我的角色集合分配给用户(我)。

问题是,无论我在这里做什么,似乎都无法通过新的安全检查。当我尝试访问受保护的路径时,我总是收到以下消息:访问被拒绝access_denied

我应该如何分配这个角色?我是否使用电子邮件地址,因为那通常是 CF 中的 ID?我应该在空间甚至应用程序级别做些什么吗?我需要重新绑定 XSUAA 服务吗?

我在浏览器中测试。如果我还没有会话,它会让我登录。不受保护的服务仍然可以正常工作。

附录:这是 JWT 有效负载。看起来我确实有这个角色的范围:

0 投票
1 回答
203 浏览

s4sdk - 无法进行发布,因为应用程序总是向我发送标头“x-csrf-token:require”HTTP 403

我有一个 doGet 工作,但是当我跟随尝试做 de doPost 时,我得到一个 403,我认为这是因为服务器总是向我发送标头“x-csrf-token:require”,但这里奇怪的是我在这些行之前停用:

我读到 approuter 采取了安全措施,这是我的 Override post 方法,我只想尝试它是否有效:

但我每次都在响应标头中看到:

来自应用程序的响应 - HTTP 403 在此处输入图像描述

我发现您需要在 approuter 中激活身份验证,但它仍然不适合我,这是我的 approuter 代码:

在此处输入图像描述

0 投票
1 回答
142 浏览

sap-cloud-platform - 使用 S4 SDK 集成 SuccessFactors 和 S4HANA

目前,我们正在为我们的并行可扩展性用例引用https://blogs.sap.com/2017/05/10/first-steps-with-sap-s4hana-cloud-sdk/博客。

我们正在尝试为构建并行可扩展性应用程序创建一个场景,以使用 S4 SDK 集成成功因素和 S/4 hana 系统。

我们找不到任何博客,集成成功因素和hana系统的示例代码实现。我们找到了以下相关博客。

https://github.com/SAP/cloud-s4-sdk-examples/tree/master/Employee-Browser-Neo

但是我们无法理解这个 GitHub 示例代码的详细场景和输出。如果有人在博客/网址/代码方面帮助我们,那就太好了。

0 投票
2 回答
131 浏览

s4sdk - 无法在 CF 中托管简单的 HelloWorld 应用程序或通过本地主机访问

我正在学习“S/4HANA Cloud SDK:创建和交付云原生 SAP S/4HANA 扩展”课程

项目的构建和安装按预期工作。但是在尝试做mvn tomee:run应用程序时没有在 localhost 中打开。无法在 CF 帐户中托管应用程序,它在启动时遇到错误。

附上CF的日志。

0 投票
1 回答
134 浏览

sap-cloud-sdk - SAP Cloud SDK 是否也能够简化与非 S/4 系统的连接?

SAP Cloud SDK 的虚拟数据模型 (VDM) 旨在更轻松地连接到 SAP Cloud Platform 上的 SAP S/4HANA 系统。是否可以将虚拟数据模型也用于其他下游服务?

0 投票
2 回答
150 浏览

javascript - 如何从 SAP Cloud SDK for javascript 中的 DocumentInfoRecord get() 调用中获取 eTag(MetaData)?

我使用 SAP Cloud SDK for javascript 来处理 DocumentInfoRecords。DIR 的更新导致错误 428。所以我需要像 SAP Cloud API 中一样的请求的 etag。

如何从 GET 请求或每个 sdk 请求的一般标头响应信息中获取 etag?

得到:

用 etag 更新

0 投票
2 回答
2326 浏览

java - 无法获取订阅者子账户 SAP Cloud 平台 -CF 的目的地

连接到连接到本地的订阅者子帐户目标时出错。来自提供商帐户的多租户应用程序通过连接服务和 S4 SDK api 在 Cloud Foundry 中的系统。同样的安排适用于指向另一个与 provider subaccount 连接的本地系统的目标连接。

参考 SAP 帮助,显示连接服务具有开箱即用的内置功能: https ://help.sap.com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/en-US/9c0bdd0efc8640739c9d2fa5cfe56cbd.html

通过 S4 SDK API 从提供商子账户中运行的提供商 SAAS 应用程序访问订阅者子账户目标时出现以下错误:

完整的堆栈跟踪:

http-nio-8080-exec-6","level":"ERROR","categories":[],"msg":"Servlet.service() for servlet [dispatcherServlet] 在路径 [] 的上下文中抛出异常 [请求处理失败;嵌套异常是 com.sap.cloud.sdk.cloudplatform.connectivity.exception.DestinationAccessException:com.sap.cloud.sdk.cloudplatform.connectivity.exception.DestinationAccessException:无法获取订阅者服务实例的目的地:无法获取访问令牌目的地服务。如果您的应用程序在 Cloud Foundry 上运行,请确保绑定到目标服务和授权和信任管理 (xsuaa) 服务,并且您已正确保护您的应用程序或已将“ALLOW_MOCKED_AUTH_HEADER”环境变量设置为 true . 请注意,具有用户传播的身份验证类型(例如主体传播或 OAuth2 SAML Bearer 流)要求您保护您的应用程序,并且在使用“ALLOW_MOCKED_AUTH_HEADER”环境变量时不起作用。如果您的应用程序未在 Cloud Foundry 上运行,例如,在部署到本地容器时,请考虑声明“destinations”环境变量以配置目的地。] 根本原因","stacktrace":["com.sap.cloud. sdk.cloudplatform.security.exception.TokenRequestDeniedException:无法获取访问令牌:XSUAA 服务拒绝请求,HTTP 状态为 401(未授权)。请确保将您的应用程序正确绑定到 XSUAA 服务实例。请注意,如果您使用的服务计划不适合您的方案,也可能会出现此错误。如果您在 Cloud Foundry 上构建 SaaS 应用程序,请在创建 XSUAA 实例时选择服务计划“应用程序”。如果您正在构建应由其他应用程序使用的重用服务,请选择服务计划“broker”。","tat com.sap.cloud.sdk.cloudplatform.connectivity.TokenRequest.executeTokenRequest(TokenRequest.java:128)", "tat com.sap.cloud.sdk.cloudplatform.connectivity.TokenRequest.requestTokenWithClientCredentialsGrant(TokenRequest.java:385)","tat com.sap.cloud.sdk.cloudplatform.connectivity.XsuaaService.requestAccessToken(XsuaaService.java:156) ","tat com.sap.cloud.sdk.cloudplatform.connectivity.XsuaaService.getServiceToken(XsuaaService.

请帮忙。

谢谢,悉达多