最近Jerry写了一系列关于SAP云平台ABAP编程环境的技术文章,这些文章都是围绕着在云上的ABAP编程环境的具体知识点来分享,比如要完成一个具体的开发需求,所需要的编程步骤。这些文章陆续收到一些读者朋友的留言,咨询各种各样的问题,我才意识到Jerry缺少一篇对SAP Cloud Platform ABAP编程环境总体的介绍文章,比如SAP为什么要发布这款云平台上的编程环境,它的使用场景,和S/4HANA Cloud的关系是什么等等。

今天就把这篇迟来的文章补上。

SAP Cloud Platform发布后很长一段时间,在SAP各大技术社区里,能感觉到ABAP从业者们内心一丝隐隐的失落:尽管SAP和其他IT公司一道,大步迈开了向云端转型的步伐,在SAP云平台上通过BYOL(Bring Your Own Language)的架构,实现了对业界流行编程语言的支持,这使得拥有Java,nodejs,PHP,Python,Ruby,Go等编程技能的开发人员们,也能加入SAP生态圈这个大家庭。


然而,这些编程语言的集合里,竟然没有SAP的主打语言ABAP?It's embarrassing...

不过ABAP从业者们“被云时代抛弃”的这份尴尬,随着SAP云平台 ABAP编程环境的发布一扫而空。截至您看到Jerry这篇文章为止,SAP Cloud Platform编程环境和运行时,已经出现了ABAP的身影:

ABAP加入SAP Cloud Platform编程环境的大家庭,好处是显而易见的:

(1) 广大的ABAP从业者们终于上车了,大家以前在Netweaver On-Premises里的ABAP编程技能可以继续在云上发光发热——尽管SAP云平台上的ABAP编程环境里出现了许多新的关键字,新的编程模型,然而ABAP毕竟还是ABAP,这些新知识对于ABAP从业者来说,学习和掌握的速度比非ABAP编程人员要快得多。

(2) 为基于ABAP技术栈的SAP产品的扩展,提供了一种新的开发方式。这一点稍后会展开细说。

(3) 为以前大量存在于ABAP On-Premises环境的二次开发代码提供了迁移到云上的可能性

(4) SAP Cloud Platform上提供的种类丰富的企业级微服务,机器学习等强大功能,如今也可以被同在SAP云平台上的ABAP编程环境消费了。

如今SAP Cloud Platform上可供选择的编程语言又增添了ABAP,那么我们接到开发任务时,根据什么样的依据从工具库里挑选使用的编程语言呢?

SAP给出的建议就是:具体问题具体分析。

企业开发人员具备的技能,企业现有的系统和软件资产,以及待开发的用户需求和涉及到的业务场景,都会影响编程语言的选择。一般来说,ABAP和非ABAP编程语言各具优势,各有各的适用场合:Java,JavaScript和Python等语言的开发生态圈非常繁荣,Github各种开源的组件,工具库,可以说凡是你能想到的点子,生态圈几乎都早已有人做出来了,因此选择这些编程语言开发,我们可以避免重复造很多轮子;而SAP云平台上的ABAP环境,借助CDS view,Restful ABAP Programming模型等ABAP语言提供的原生特性,在扩展基于ABAP技术栈的SAP产品时优势显得特别突出。

SAP云平台ABAP编程环境最典型的两种使用场景

以Side-by-side方式对S/4HANA Cloud进行扩展。

首先需要解释何谓side-by-side Extensibility.

传统的SAP产品的二次开发方式是,ABAP开发者们通过SAP GUI登录到ABAP On-Premises系统,直接在被扩展的系统上通过Netweaver提供的各种增强技术进行二次开发。

S/4HANA Cloud,SAP Marketing Cloud,SAP Cloud for Customer等后台基于Netweaver ABAP的云端解决方案,还提供了基于浏览器的面向Key User的扩展工具,使用者在浏览器里通过简单的向导步骤,也能实现对所在的云产品进行增强的需求。

这种增强方式,使用的开发工具由被增强应用本身提供,生成的资源和被增强的SAP产品都位于同一服务器上,因此称为In-App增强方式。这种方式简单易用,需要的技术门槛相对较低。

与此相对应的则是SAP Cloud Platform ABAP编程环境提供的side-by-side增强方式。这种增强方式通常的步骤是首先在本地开发环境完成开发,然后再部署到SAP云平台,SAP Kyma等平台上,因此二次开发内容最终部署和运行的环境,和被增强的SAP产品从物理上看是松耦合的,不在同一服务器上。

上图即SAP S/4HANA Cloud通过side-by-side方式进行扩展的示意图。位于SAP云平台上的ABAP增强通过云平台提供的Connectivity服务(Jerry之前的文章 SAP云平台上的ABAP编程环境里如何消费第三方服务 介绍过,可以理解成ABAP On-Premises里的Destination), 消费SAP S/4HANA Cloud的OData服务,实现对后者系统数据的增删改查和Action操作。

Side-by-side增强方式使得作为数字化核心的SAP S/4HANA的应用代码保持Stable & Clean,同时又能让二次开发工作者紧跟技术发展的趋势,使用业界最新最流行的技术进行SAP产品增强。

至此,SAP Cloud Platform ABAP编程环境和S/4HANA Cloud的区别和关系,想必大家应该能理解了吧。前者是增强/集成工具,后者是被增强的系统。

这种增强方式非常符合咨询公司Gartner的大佬,John MacDorman提出的IT双模型的交付模式,即采取两套独立管理却彼此互补的模式,一套交付模式采用传统成熟的软件开发方式,需求变动频率相对较低,强调交付的健壮和稳定性。另一套则兼走偏锋,遵循“天下武功,唯快不破”的理想,强调敏捷,创新,探索,速度,高频次的迭代。

Jerry当时看了Google上对Gartner提出的IT双模型的介绍文字,第一反应就是:这不就是在描述SAP智慧企业概念里的“数字化核心”(SAP S/4HANA)和创新平台(SAP Cloud Platform)的关系吗?


Side-by-side这种增强内容与被增强的系统分开部署的灵活方式,使得从理论上来说,如果增强开发的设计得足够通用,从商业模式上说,其就具备了可以单独拿出来售卖的可能性。

我们通过下面的链接访问SAP应用中心:
https://www.sapappcenter.com/home

依次勾选左边的SAP Cloud Platform Services和ABAP,即可列出所有使用SAP Cloud Platform ABAP编程环境开发的partner解决方案。


希望这篇文章能帮助大家理解SAP云平台ABAP编程环境的诞生原因和使用场景,感谢阅读。

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

学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景的更多相关文章

  1. 在SAP云平台ABAP编程环境上编写第一段ABAP程序

    距2017年秋季的SAP TechEd大会上一位大佬Björn Goerke,SAP's Chief Technology Officer宣布了SAP Cloud Platform即将支持ABAP至今 ...

  2. 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务

    Jerry 2016年在学习SAP CDS view时,曾经写过一个CDS view的自学系列,其中有一篇提到了一个很方便的注解: @OData.publish: true 加上这个注解的CDS vi ...

  3. 如何在SAP云平台ABAP编程环境里创建自己的Z表

    选中ABAP包,右键创建一个新的Database Table: 维护表名为ZBOOKING: 表实现的源代码: @EndUserText.label : 'Jerry''s booking' @Aba ...

  4. ABAP开发者上云的时候到了 - 现在大家可以免费使用SAP云平台ABAP环境的试用版了

    之前Jerry已经写了一系列SAP Cloud Platform ABAP编程环境的文章,当时使用的环境,是SAP专门为SAP社区导师们创建的. 当时也有朋友留言,询问大家何时才能使用到免费的SAP云 ...

  5. 使用abapGit在ABAP On-Premises系统和SAP云平台ABAP环境之间进行代码传输

    SAP ABAP顾问朋友们,应该都使用过SAPLink这个工具.如果两个ABAP Netweaver系统没有建立起传输路径时,我们无法使用标准的SE10事务码创建传输请求的方式进行这两个系统间的代码传 ...

  6. 在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务

    我的前一篇文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数介绍了在SAP云平台的Neo环境下如何通过SAP Cloud Conne ...

  7. 如何在SAP Cloud Platform ABAP编程环境里创建一个employee

    用ABAP Development Tool登录SAP Cloud Platform ABAP编程环境后,对ABAP项目点击右键,选择属性,从而找到该环境的web访问的url: https://325 ...

  8. SAP云平台里的三叉戟应用

    大家第一次看到SAP MTA这个词组,会联想到什么? Jerry第一次看到的时候,联想到的是那一个个足坛著名的三叉戟攻击组合. 海皇波塞冬(Poseidon),奥林匹斯十二神中地位仅次于宙斯的大神,海 ...

  9. SAP云平台上的ABAP编程环境里如何消费第三方服务

    在ABAP On-Premises环境下,使用ABAP编程消费第三方服务,相信很多ABAP顾问都已经非常熟悉了,无非就是使用CL_HTTP_CLIENT或者CL_REST_HTTP_CLIENT来发送 ...

随机推荐

  1. Buffon投针问题

  2. 转 Linux sudo命令

    脚本中使用$HOME变量 问题描述:某些同事原来写的脚本中包含如下内容. BIN_DIR=${HOME}/tools TAIR_BIN_DIR=${HOME}/tair_binTAIR_SRC_DIR ...

  3. eclipse :代码自动补全不生效解决办法

    参考文章:https://blog.csdn.net/qq_35033270/article/details/79285821 请见下图! 恢复缺省值即可!

  4. k8s 修改节点角色和删除节点

    修改节点角色: kubectl label nodes cn-thin05 node-role.kubernetes.io/node= 卸载节点: kubectl drain jupiter --de ...

  5. python json模块(15)

    JSON 的全称是 JavaScript Object Notation,即 JavaScript 对象符号,它是一种轻量级.跨平台.跨语言的数据交换格式,其设计意图是把所有事情都用设计的字符串来表示 ...

  6. java常见集合

    集合与数组区别 1-从长度来讲: 数组:需要固定长度. 集合:长度可以改变,可以根据保存的数据进行扩容. 2-从存储内容上: 数组:可以存储基本类型数据,还可以存储引用类型的数据(比如:String ...

  7. LeetCode 238. 除自身以外数组的乘积(Product of Array Except Self)

    238. 除自身以外数组的乘积 238. Product of Array Except Self 题目描述 LeetCode LeetCode238. Product of Array Except ...

  8. sql查询出现1055 this is incompatible with sql_mode=only_full_group_by

    今天在测试服务器上突然出现了这么一个MySQL的问题,同样的代码正式服没有问题,那肯定就是出在了配置上,查了一下原因才明白原来是数据库版本为5.7以上的版本, 默认是开启了 only_full_gro ...

  9. 爬虫请求库之requests库

    一.介绍 介绍:使用requests可以模拟浏览器的请求,比之前的urllib库使用更加方便 注意:requests库发送请求将网页内容下载下来之后,并不会执行js代码,这需要我们自己分析目标站点然后 ...

  10. Codeforces Round #568 Div. 2

    没有找到这场div3被改成div2的理由. A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long ...