SAP API开发方法大全

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介:

Jerry之前的文章:从SAP Leonardo到SAP Data Intelligence 曾经提到,SAP Leonardo Machine Learning Foundation的机器学习API已经被标注为deprecated状态,将由SAP新的AI产品,SAP Data Intelligence所替代。

在学习SAP Data Intelligence的过程中,Jerry算是了解到了一种新的API开发方式。本文首先简单回顾一下我从事SAP开发工作13年以来,接触过的各种SAP API的开发方式,然后再介绍SAP Data Intelligence里遵循Low Code Development(低代码开发)理念的API开发方式。

目录

(1) ABAP function module + SOAMANAGER
(2) 基于事务码SEGW的SAP CRM OData服务手动实现
(3) 基于CDS view的OData服务自动生成
(4) SAP Cloud for Customer里基于Business Object的自定义OData API创建
(5) 基于Java SpringBoot,Node Express等Web应用框架的API开发
(6) Serverless 架构
(7) SAP Data Intelligence Graph

本文提到的API,指的是通过HTTP协议暴露出来,能直接通过浏览器,Postman,curl等各种工具,以及各种编程语言消费的API. 在SAP生态圈内,最常遇到的是基于SOAP的Web Service和串联SAP S/4HANA前后台的OData服务。

(1) ABAP function module + SOAMANAGER

最古老的技术,把ABAP系统里的函数通过SOAMANAGER发布成Web Service. 虽然古老,但至今S/4HANA里的Service模块的新功能开发还在使用。

https://blogs.sap.com/2014/05/20/step-by-step-to-create-consume-and-trace-web-service-in-abap-system/

我2014年的时候也写过一篇介绍SOAMANAGER使用步骤的文章,虽然到现在为止,这个工具已经更新换代多次了。

(2) 基于事务码SEGW的SAP CRM OData服务手动实现

这是我最熟悉的SAP OData服务实现方式,因为我就是SAP CRM OData服务的开发者之一。SAP成都研究院CRM开发团队在2014和2015年开发这些OData服务时,SAP Fiori Elements的前身,当时的名称是Smart Template,还处于发展初期,所以那时候我们没有选择这项基于元数据驱动的开发方式。

Jerry在2018年写过一篇文章 SAP OData编程指南, 里面详细介绍了这种方法。

(3) 基于CDS view的OData服务自动生成

再后来,随着CDS view和Fiori Elements的成熟,我们可以基于加上了@OData.publish注解的CDS view,直接生成OData服务了,具体工作原理在我的这篇文章里有介绍:

揭开SAP Fiori编程模型规范里注解的神秘面纱 - @OData.publish工作原理解析

在S/4HANA里,除了在ABAP Development Tool里手动给CDS view加上@OData.publish注解之外,还可以采取另一种方式,纯粹在浏览器里完成操作。

使用S/4HANA里的Custom CDS Views这个应用,

可以选择S/4HANA里多个标准的CDS view来创建新的复合视图,

并能根据自己的需求,来挑选哪些标准视图的字段需要包含到新的复合视图里:

最后也是一键实现复合视图的OData服务发布。

到了SAP云平台ABAP环境上,基于CDS view创建的Service Definition和Service Binding,把OData服务和Fiori UI界面的创建全部包办了。

更多关于这种基于Restful ABAP Programming模型的开发方式,请参考我的文章 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用

(4) SAP Cloud for Customer里基于Business Object的自定义OData API创建

前面在SAP S/4HANA Fiori Launchpad里看到的Custom CDS View这个应用,即使不太懂技术的Key User,也能在浏览器里完成字段的搭配和OData服务的发布。

SAP Cloud for Customer也有类似的设计,只不过供Key User选择的不是CDS view,而是C4C里标准的Business Object.


Key User在浏览器的Custom OData Service应用里能选择将Business Object节点里的哪些字段发布到OData服务里,此操作同SAP S/4HANA里选择标准CDS view字段的思路是一样的。

在C4C的Cloud Application Studio里,还能基于标准Business Object创建Web Service.

总结:基于ABAP技术栈的SAP产品,运行于其上的OData或者Web Service这些API,本质都是通过ABAP Netweaver的ICF(Internet Communication Framework)被外界消费的。我们观察其调用Url路径,就能找到SICF事务码里的对应的处理节点。

以SAP CRM OData服务Url末尾的CRM_OPPORTUNITY为例:

在SICF事务码里能找到对应的同名节点。我们只需要在SICF里给这个节点绑定一个ABAP类,该节点对应的Url通过浏览器或者Postman,或者其他编程语言访问时,ABAP ICF框架就会自动调用绑定的ABAP类。

也就是说,应用开发人员只需要在ABAP类里实现业务逻辑,至于这个类运行时的实例如何被ICF调用,如何初始化和销毁等生命周期管理,ABAP开发人员完全不用操心。

关于更多ABAP ICF的介绍,请参考我的文章:一个13年ABAP老兵的建议:了解这些基础知识,对ABAP开发有百利而无一害

(5) 基于Java SpringBoot,Node Express等Web应用框架的API开发

采用此类开发方式的生态圈是全球最庞大最活跃的群体,技术成熟稳定,相关文档和教材非常丰富。更新更先进的开发框架也在不断演化。开发人员通常在本地完成开发,再将应用部署到服务器上运行。也可以将应用打包成容器镜像,再以容器的方法运行在物理服务器或者SAP云平台,AWS,Google Cloud Platform,Azure等各种云上。容器数量到达一定规模之后,可以采用Kubernetes进行编排管理。

Jerry这篇文章介绍了一个例子:在SAP云平台上部署和运行Docker应用

Jerry之前的项目里也消费过SAP Commerce的Web Service:如何使用API的方式消费SAP Commerce Cloud的订单服务。

(6) Serverless 架构

云计算行业里的一个热门词汇,Serverless架构,并不意味着采用这个架构后就再也不需要服务器了,而是指应用开发人员不用关心开发好的应用如何部署到服务器,不需要考虑服务器的运行状态等运营和维护问题。传统Web应用的开发思路,如Jerry之前介绍的那样,通常在本地完成开发和单元测试,然后需要考虑采用何种方式,部署到何种服务器或者云上。

而基于Serverless架构的API/服务开发,根本就没有API部署的这个步骤。以Jerry之前介绍过的SAP Kyma上的Lambda Function为例,API函数本身的代码编写就是在云上完成。一旦保存,只要API维护的触发条件满足(事件触发或者Url触发),该API立即被调用。

下图是我在SAP Kyma里使用nodejs编写的一个Lambda Function:

我设置其通过HTTPS的方式被调用:

在浏览器里访问这个HTTPS-endpoint,Lambda Function立即执行。

从这个角度讲,Jerry觉得ABAP开发人员,在开发API的时候,一直就在享受着Serverless架构带来的便利。因为ABAP领域的开发,无论是通过SAPGUI,ABAP Development Tool,还是通过各种Key User工具,本质上都是连接到ABAP Netweaver这个集应用开发和运行为一体的服务器上进行的,因而根本没有传统Java/nodejs开发里的应用部署这一环节。

关于更多如何使用Lambda Function实现API的介绍,请参考Jerry的文章:

(7) SAP Data Intelligence Graph

这种方式严格来讲也算基于Serverless,使用者通过浏览器登录SAP Data Intelligence控制台,进行Graph建模。完成后启动,Graph就直接运行在SAP Cloud Platform的Kubernetes基础设施上了。

之所以把这种方式单独拿出来介绍,是因为其又具有Low Code Development(低代码开发)的特质。

看一个具体的例子。

假设我想实现一个支持CRUD的API,消费者通过HTTP GET, POST和DELETE请求,能够在数据库里分别读取,插入和删除一条记录。

低代码开发平台,通常都提供了图形化的用户界面,给使用者提供了通过拖拽组件和模型驱动开发的方式, 结合少量的编码来快速创建应用或者API.

访问SAP Data Intelligence Launchpad,进入Modeler:

我们像小朋友搭积木一样,从左边的工具箱里,拖拽HTTP Server和若干个JavaScript Handler到编辑页面里。


这些积木一样的组件搭配在一起,如何就实现了支持增删改查的API功能的呢?由于篇幅原因,Jerry后续的文章会介绍,敬请继续关注。

更多阅读

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
4天前
|
缓存 弹性计算 API
用 Go 快速开发一个 RESTful API 服务
用 Go 快速开发一个 RESTful API 服务
|
1天前
|
存储 安全 API
后端开发中的API设计艺术
在数字化时代的浪潮下,后端开发不仅仅是代码的堆砌,更是一种艺术的体现。API设计作为后端开发的精髓,它的优雅与否直接关系到软件产品的性能与用户体验。本文将通过深入浅出的方式,带领读者领略API设计的魅力所在,从基本原则到实用技巧,再到安全性考量,全方位剖析如何打造一个既高效又安全的API。无论你是初学者还是资深开发者,这篇文章都将为你的后端开发之路提供宝贵的启示。
|
3天前
|
存储 缓存 API
探索后端开发:构建高效API的实用指南
【8月更文挑战第28天】在数字化时代的浪潮中,后端开发扮演着至关重要的角色。本文旨在通过深入浅出的方式,为读者揭示如何构建一个高效、稳定且易于维护的API。我们将从API设计的基础出发,逐步深入到实现细节,探讨如何在保证性能的同时兼顾安全性和可扩展性。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
|
2天前
|
安全 API 数据处理
后端开发中的API设计哲学:简洁、高效与安全
【8月更文挑战第29天】 在后端开发的广阔天地中,API(应用程序编程接口)的设计如同编织一张无形的网,连接着数据的海洋与应用的大陆。本文将深入探讨如何打造一个既简洁又高效的API,同时不忘筑牢安全的防线。我们将从API设计的基本原则出发,逐步剖析如何通过合理的结构设计、有效的数据处理和严格的安全措施来提升API的性能和用户体验。无论你是初学者还是资深开发者,这篇文章都将为你提供宝贵的视角和实用的技巧,帮助你构建出更优秀的后端服务。
|
2天前
|
前端开发 API 网络架构
深入理解后端开发中的RESTful API设计
【8月更文挑战第29天】在数字化时代,后端开发是构建强大、高效软件系统不可或缺的一环。RESTful API作为后端与前端交互的桥梁,其设计直接影响到应用程序的性能和用户体验。本文将深入浅出地探讨如何设计符合REST原则的API,并通过实际代码示例来展示最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,帮助你提升后端开发技能。
|
2天前
|
存储 设计模式 API
深入浅出后端开发:从零到一构建RESTful API
【8月更文挑战第29天】本文旨在引导读者理解后端开发的精髓,并通过实际代码示例,展示如何从无到有构建一个RESTful API。文章首先解释后端开发的基本概念,然后逐步深入到API设计的原则和最佳实践,最后通过一个具体的代码示例,让读者能够动手实践,体验后端开发的乐趣。
|
3天前
|
缓存 API 数据库
探索后端开发:构建高效API的艺术
【8月更文挑战第28天】在数字化时代的浪潮中,后端开发扮演着不可或缺的角色。本文通过深入浅出的方式,带领读者理解后端开发的精髓,并重点介绍如何构建高效的API。我们将从基础概念出发,逐步深入到设计原则、最佳实践以及性能优化策略。文章旨在为初学者提供清晰的指导,同时给予经验丰富的开发者新的启示和思考。
|
5天前
|
数据采集 API 开发工具
淘系商品详情数据解析(属性youhui券sku详情图等)API接口开发系列
在电商领域,特别是像淘宝(淘系)这样的平台,商品详情数据对于商家、开发者以及数据分析师来说至关重要。这些数据包括但不限于商品属性、优惠券信息、SKU(Stock Keeping Unit)详情、商品图片、售后保障等。然而,直接访问淘宝的内部API接口通常需要特定的权限和认证,这通常只对淘宝的合作伙伴或内部开发者开放。 不过,对于需要这些数据的第三方开发者或商家,有几种方式可以间接获取或解析淘系商品详情数据: ——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
5天前
|
存储 API 网络架构
深入浅出后端开发:从零到一搭建RESTful API
【8月更文挑战第26天】 在数字化时代,后端开发是连接用户与数据的核心桥梁。本文旨在为初学者提供一个清晰、易懂的指南,通过构建一个基础的RESTful API来揭示后端开发的面纱。我们将从理解REST架构开始,逐步过渡到实际的代码实现,最终将理论与实践结合,完成一个简单的API项目。无论你是编程新手还是希望扩展知识的开发者,这篇文章都将为你打开一扇通往后端世界的大门。
|
8天前
|
安全 Java API
下一篇
云函数