乐趣区

SAP-2019-TechEd-Key-Note解读云时代下SAP从业人员如何做二次开发

刚刚过去的在巴塞罗那举行的 2019 SAP TechEd,SAP 照例向全球广大的 SAP 生态圈从业者们传达了一些重要的信息,其中一条为:Building Extensions for the Intelligent Enterprise on SAP Cloud Platform,中文即“在 SAP 云平台上为智慧企业创建扩展应用”。

本文是 Jerry 对 SAP 社区这篇博客 Making development of extensions easier – SAP Cloud Platform Extension Factory 的一些个人解读,并非逐字逐词的简单翻译。

SAP 的一个宏伟目标:将来 SAP 所有产品 (不管是 On-Premises 还是云解决方案) 的二次开发平台,统一为 SAP 云平台。而现状是,SAP S/4HANA Cloud 和 SAP C/4HANA 已经可以通过 SAP 云平台扩展了,而上图左边的一些其他产品,例如同为云解决方案的 SAP Concur,以及本地部署的 S /4HANA On-Premises 和 SAP ECC,如何用 SAP 云平台对这些产品做扩展,是 SAP 将来努力的方向。

目前 SAP 云平台上已经有了下列这些组件,SAP Cloud Platform 的作用就是将它们组合起来(Orchestration),像 Kubernetes 编排 pod 那样,让其发挥出 1 +1>2 的作用:

SAP Cloud Platform Extension Factory
SAP Cloud Application Programming Model (CAP)
ABAP RESTful Programming Model (RAP)
SAP Cloud Platform Enterprise Messaging
SAP Cloud SDK
SAP Web IDE
SAP Cloud Platform API Management
SAP API Business Hub
SAP Cloud Platform Workflow

Connect securely & quickly

SAP Cloud Platform Extension Factory 是 SAP 推荐的 ” 智慧企业的专属云原生扩展框架 ”,在开源项目 Kyma 的基础上,借助 SAP 云平台提供的 Cloud Connector 和 Connectivity Service,保证了企业级应用所需的标准化和安全性。

Build efficiently & effectively

一旦 SAP 解决方案同 SAP 云平台建立绑定关系后,其对应实例就会被分配给云平台上的 subaccount,而该产品支持的 API 和事件会发布到 SAP 云平台上。开发者们能够直接在云平台上浏览和消费这些 API 及事件。

以为 SAP S/4HANA Cloud 创建扩展为例,首先基于 Open Service Broker API 创建一个 S /4HANA Cloud Extensibility Service 的实例,然后在该 subaccount space 下的开发人员,即可将该实例绑定到自己创建的扩展应用去,并消费该实例暴露的服务。

开始搬砖之前,开发人员可以在 SAP 推荐的两种编程模型里进行选择,到底是用 SAP Cloud Application Programming Model (CAP),还是 ABAP RESTful Application Programming Model (RAP).

先看看这两种编程模型各自的特色。

基于 CAP 模型的扩展应用特色

(1) 天生支持多租户(native multi-tenant enablement)
(2) 同一个 SAP Cloud Platform 账号创建的基于 CAP 模型的应用能共享 API 和事件
(3) 终端用户能够很容易的使用 key user tool 等工具对此类应用进行字段级别的扩展 – Field Extensibility


如果 SAP 解决方案的标准功能支持事件发布,则可以通过 SAP Cloud Platform 上一个叫做 Enterprise Messaging 的组件,将这些事件发布到 SAP Cloud Platform Extension Factory 上,这样 SAP 二次开发人员可以订阅这些事件,编写对应的事件响应函数。

一些具体的例子:

  • Simplified extensions for the Intelligent Enterprise with SAP Cloud Platform Extension Factory and Enterprise Messaging
  • New service plan and UI for SAP Cloud Platform Enterprise Messaging

下图是对应的编码实现订阅 S /4HANA Cloud 系统服务订单创建事件并作出响应的例子:通过 eventBus 实例注册 ServiceOrder.Created 事件,在其触发后,调用技师分配函数进行响应。

在分配 S /4HANA Cloud 系统里的技师资源时,我们需要消费对应的 API,通过 SAP Cloud SDK 可以轻易实现,不用从更底层的 HTTP 级别的函数调用开始编写。

SAP Cloud SDK 对底层 API 进行了封装,写起来如同自然语言一样,可读性极佳:


基于 Restful ABAP Programming(RAP)模型的扩展应用特色

采用这种模型开发的扩展应用能享受到 SAP 在云端 ABAP 领域提供的最新技术和特性,扩展本身同被扩展的解决方案核心代码彻底解除了耦合,因此又被称为 Side-by-side 扩展。这种模式的扩展能很好的实现所谓 digital core code clean 的目标。

由于 RAP 模型本身的语言还是 ABAP,因此 RAP 在工作于 ABAP 技术栈的 SAP 产品扩展需求时显得更加如鱼得水。

基于 Restful ABAP Programming 模型的开发套路,Jerry 之前的文章已经介绍过了:

(1) 根据实际业务创建基于 CDS view 的模型。

(2) 给模型添加 transactional behavior,在 validation,determination 和 actions 里编写业务逻辑。

(3) 创建 business service,将前面创建并实现的模型通过 OData 暴露出来。

(4) 创建 Fiori Elements 应用,消费第三步创建的 business service,将业务数据通过 Fiori UI 展示出来。

总结一下,云时代 SAP 从业人员进行二次开发的工具集:

SAP Cloud Platform, Application runtime
SAP Cloud Platform, ABAP environment
SAP Cloud Platform Enterprise Messaging
SAP Web IDE
SAP Cloud Platform Connectivity (includes Cloud Connector for on-premise connectivity)
SAP Cloud SDK
SAP Cloud Platform API Management
SAP API Business Hub

SAP 官网上给出的 SAP Cloud Platform Extension Factory 演进的路线图:

比如图中标注的,在 2019 年第四季度,SAP Cloud Platform Extension Factory 会添加对 SAP S/4HANA On-Premises 的支持。当然,路线图中标注了一条:

“This is the current state of planning and may be changed by SAP at any time without notice”.

让我们在以后的日常工作中,好好消化 SAP 通过 TechEd 传达给我们的这一精神吧,感谢阅读。

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版