SAP API开发方法大全-阿里云开发者社区

开发者社区> 开发者小助手-bz6> 正文

SAP API开发方法大全

简介: SAP API开发方法大全
+关注继续查看

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


image.png


在学习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

image.png

本文提到的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使用步骤的文章,虽然到现在为止,这个工具已经更新换代多次了。



image.png

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

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


image.png


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这个应用,


image.png


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

image.png



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

image.png



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


image.png


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


image.png


更多关于这种基于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.


image.pngimage.png



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


image.png


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


image.png


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


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


image.png


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

image.png



也就是说,应用开发人员只需要在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应用。


image.png


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


(6) Serverless 架构

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

image.png



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


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


image.png


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

image.png



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


image.png


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


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


从ABAP Netweaver的SICF到SAP Kyma的Lambda Function


周伯通的空明拳,米诺斯的星尘傀儡线,SAP Kyma的Serverless


(7) SAP Data Intelligence Graph

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



image.png

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


看一个具体的例子。


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


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


访问SAP Data Intelligence Launchpad,进入Modeler:

image.png



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

image.pngimage.png



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8444 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26459 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10229 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
2228 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
12091 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
8688 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
4543 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
21595 0
1853
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载