SAP Cloud for Customer 如何直接消费S/4HANA API

简介: SAP Cloud for Customer 如何直接消费S/4HANA API

最近有朋友在微信上问我本文标题这个需求,如何在 SAP Cloud for Customer 里实现。正好我在 2018年底参加的 SAP 和沈阳自动化研究所合作设计的一个工业 4.0 示范系统 POC 中,曾经用到了这个技术,本文就来说一说。image.png关于这个 POC 的详情,在 SAP中国研究院官方公众号这篇文章里有详细叙述:

SAP中国研究院&中科院沈阳自动化所重磅发布第三代自适应模块化智能生产解决方案image.pngimage.png下面这个 POC 视频,是当时的项目兼产品经理,我的研究院同事 Cai Carol 制作的。视频最开头,展示的是从 SAP Cloud for Customer里创建销售订单。SAP C4C 销售订单创建完毕之后,点击订单明细页面的一个按钮,触发 S/4HANA 的交货单(Outbound Delivery)创建,进而触发接下来的制造流程的执行。


其中SAP Cloud for Customer 部分的定制开发是由我实现的,里面就涉及到了本文标题描述的场景,即 SAP Cloud for Customer 里直接调用 SAP S/4HANA 的 API. 整个定制开发部分均可在 C4C 的 Cloud Application Studio 里完成,这意味着 Partners 也可以完成类似场景的开发。


https://v.qq.com/x/page/e323674458n.html


下面是具体的实现步骤。


(1) 首先在 S/4HANA 里开发一个 API,逻辑是接收从 SAP Cloud for Customer 传过来的 Sales Order ID,读出其包含的行项目,然后调用 SAP S/4HANA 的交货单创建函数,为这些行项目创建交货单。


用关键字 S/4HANA Outbound Delivery,一下子就搜索到了对应的 BAPI 名称:BAPI_OUTB_DELIVERY_CREATE_SLS.


很快写好了一个 report:在第21行硬编码了一个 SAP Cloud for Customer 的销售订单 ID,测试后发现没什么问题,将这个报表的源代码拷贝到一个新的 ABAP Class 里,稍作修改,将硬编码去掉,替换成从 SAP Cloud for Customer 传过来的销售订单 ID 即可image.pngimage.png在 SAP S/4HANA 里新建一个 SICF 服务节点,其实现 Class 指定成刚刚建好的包含了调用 BAPI_OUTB_DELIVERY_CREATE_SLS 的 ABAP Class. 每个 ABAP SICF 节点会自动生成一个 url,从而将其节点分配的 SICF ABAP Class的业务逻辑通过 HTTP 的方式暴露给外界。


关于 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 的不同值来区分。image.png对 CustomerQuote 进行扩展,创建一个新的 Action:triggerOutboundDelivery:image.png这个 Action 的实现逻辑当然就是调用前一步骤里创建好的,SAP S/4HANA 通过 SICF 暴露出来的 API.


在动手实现 Action 之前,我们还需要在 SAP C4C 里创建一些消费 S/4HANA API 所需要的模型。


Cloud Application Studio 里新建一个 External Web Service Integration:image.pngWeb Service 名称取为 JerryExternal,类型为 REST. URL字段,填充成 S/4HANA API 的 url.image.png这个 Web Service 模型的创建,会同时自动创建一个 Communication Scenario,名称为 JerryExternalService:

image.png基于该 Communication Scenario 创建一个新的 Communication Arrangement:

image.png通过上图邮件菜单,打开 Communication Arrangement 的维护 UI:image.png将访问 S/4HANA API 所需的用户名和密码,维护到新建的 Communication Arrangement 里去:image.png最后,实现 CustomerQuote BO 扩展出来的 Action,在里面通过 C4C 标准的工具库函数 WebServiceUtilities.ExecuteRESTService,消费 S/4HANA API:image.png从上图 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:image.pngimage.png上图是 SAP C4C ABSL 代码的单步调试,点击 Continue 之后,设置在 SAP S/4HANA SICF 实现类里的 ABAP 断点触发,调试器里能看到 SAP C4C Sales Order ID 已经成功传递到 SAP S/4HANA 端了。

image.png之前我已经将 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,是一种比较通用的二次开发方式,希望对大家有所帮助。





相关文章
|
20天前
|
开发者 数据处理 数据管理
SAP HANA 的不同类型
SAP HANA 的不同类型
36 9
SAP HANA 的不同类型
|
20天前
|
SQL 数据库 索引
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
18 1
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
|
1月前
|
Linux 开发工具 开发者
关于 SAP HANA 开发那些事
关于 SAP HANA 开发那些事
24 0
|
3月前
|
SQL 存储 数据可视化
SAP HANA 内存数据库不同类型的视图的应用场景介绍
SAP HANA 内存数据库不同类型的视图的应用场景介绍
55 0
|
20天前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
16 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
16天前
|
安全 UED 开发者
SAP Commerce Cloud 配置项 refreshWithLock=false 的作用介绍
SAP Commerce Cloud 配置项 refreshWithLock=false 的作用介绍
17 0
|
16天前
|
Java BI API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
14 0
|
20天前
|
数据库 SQL 应用服务中间件
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
20 0
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
|
2月前
|
机器学习/深度学习 人工智能 监控
SAP Sales Cloud,Service Cloud 和 SAP BTP 平台上的 AI 集成场景
SAP Sales Cloud,Service Cloud 和 SAP BTP 平台上的 AI 集成场景
67 0
|
3月前
|
存储 数据库
SAP HANA 数据库支持的几种不同类型的视图
SAP HANA 数据库支持的几种不同类型的视图
34 0