自己如何封装一个statr(如何直接消费S4HANAAPI)
简介:SAP Cloud for Customer 如何直接消费S/4HANA API最近有朋友在微信上问我本文标题这个需求,如何在 SAP Cloud for Customer 里实现。正好我在 2018年底参加的 SAP 和沈阳自动化研究所合作设计的一个工业 4.0 示范系统 POC 中,曾经用到了这个技术,本文就来说一说。
关于这个 POC 的详情,在 SAP中国研究院官方公众号这篇文章里有详细叙述:
关于 ABAP SICF 的更多介绍,请参考我之前的文章:从ABAP Netweaver的SICF到SAP Kyma的Lambda Function.
我们当时做 POC 的这台 S/4HANA 服务器,其 url 是可以直接被外网访问到的,所以省去了使用 SAP Cloud Connector 将其暴露给外网这一步。对于常规的 SAP ABAP On-Premises 平台上开发的 HTTP Service url,请参考我这篇文章将其暴露给公网使用:
使用Java SAP云平台 SAP Cloud Connector调用ABAP On-Premise系统里的函数
(2) 回到 SAP C4C,打开 Cloud Application Studio,对标准的 Sales Order BO 进行扩展,增添一个新的 Action.
准确的说,被扩展的 BO 名称应该为 CustomerQuote,因为根据 SAP C4C 帮助文档介绍,Sales ORder 和 Sales Quote 共用同一个 BO 模型 CustomerQuote,通过模型字段 Type Code 的不同值来区分。
对 CustomerQuote 进行扩展,创建一个新的 Action:triggerOutboundDelivery:
这个 Action 的实现逻辑当然就是调用前一步骤里创建好的,SAP S/4HANA 通过 SICF 暴露出来的 API.
在动手实现 Action 之前,我们还需要在 SAP C4C 里创建一些消费 S/4HANA API 所需要的模型。
Cloud Application Studio 里新建一个 External Web Service Integration:
Web Service 名称取为 JerryExternal,类型为 REST. URL字段,填充成 S/4HANA API 的 url.
这个 Web Service 模型的创建,会同时自动创建一个 Communication Scenario,名称为 JerryExternalService:
基于该 Communication Scenario 创建一个新的 Communication Arrangement:
通过上图邮件菜单,打开 Communication Arrangement 的维护 UI:
将访问 S/4HANA API 所需的用户名和密码,维护到新建的 Communication Arrangement 里去:
最后,实现 CustomerQuote BO 扩展出来的 Action,在里面通过 C4C 标准的工具库函数 WebServiceUtilities.ExecuteRESTService,消费 S/4HANA API:
从上图 ABSL 实现代码,我们也能体会到 SAP 引入 Communication Scenario & Arrangement 这些模型带来的好处:
Code Over Configuration is better than Code Over Code - 基于配置编程优于硬编码。
如果 SAP S/4HANA API url 或者用户名和密码发生变化,我们只需修改 C4C 里 Communication Scenario 和 Arrangement 对应的配置即可,而无需重新编译 ABSL 代码本身。
最后,在 SAP C4C UI 上点击 Trigger Delivery 按钮后,触发我们在 BO 上自定义的 action:
上图是 SAP C4C ABSL 代码的单步调试,点击 Continue 之后,设置在 SAP S/4HANA SICF 实现类里的 ABAP 断点触发,调试器里能看到 SAP C4C Sales Order ID 已经成功传递到 SAP S/4HANA 端了。
之前我已经将 SAP C4C 端的销售订单,通过这篇文章 一些SAP Partners能够通过二次开发实现打通 SAP C/4HANA和S/4HANA 的场景分享 介绍的二次开发方式,同步到了 SAP S/4HANA 端,且两个系统里销售订单的 ID 一致。因此,在 SAP S/4HANA 端,调用 S/4HANA 销售订单的读取 API,读到的是 SAP C4C 同步过来并存储到 S/4HANA 的销售订单数据。
本文介绍了 SAP C4C 如何通过定制开发,实现消费第三方系统 API 的需求。这里的第三方系统 API,可以是 SAP S/4HANA,SAP Business Technology Platform 或者其他任何系统的 API,是一种比较通用的二次开发方式,希望对大家有所帮助。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com