最近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. 如何解决“HttpException (0x80004005): 超过了最大请求长度”问题

    .net mvc项目在做上传文件时,出现这个问题,上传文件的是通过表单提交,后台是通过请求里面获取文件信息的 1.问题截图: 堆栈信息 “/”应用程序中的服务器错误.超过了最大请求长度.说明: 执行当 ...

  2. Post Setting Proxy 设置 代理

    postman的代理使用篇(四) - codingstudy - SegmentFault 思否https://segmentfault.com/a/1190000012024844 postman ...

  3. 深入理解Flink ---- 系统内部消息传递的exactly once语义

    At Most once,At Least once和Exactly once 在分布式系统中,组成系统的各个计算机是独立的.这些计算机有可能fail. 一个sender发送一条message到rec ...

  4. python web开发——django学习(二)第一个django网站运行成功

    1.写message_form.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  5. [LeetCode] 597. Friend Requests I: Overall Acceptance Rate 朋友请求 I: 全部的接受率

    In social network like Facebook or Twitter, people send friend requests and accept others’ requests ...

  6. Deploy != Release(第一部分):部署与发布的区别,以及为什么这很重要

    原文地址:http://ju.outofmemory.cn/entry/351873 翻译自: Deploy != Release (Part 1): The difference between d ...

  7. [神经网络与深度学习][计算机视觉]SSD编译时遇到了json_parser_read.hpp:257:264: error: ‘type name’ declared as function ret

    运行make之后出现如下错误: /usr/include/boost/property_tree/detail/json_parser_read.hpp:257:264: error: 'type n ...

  8. ceph架构简介

    ceph架构简介 在测试OpenStack的后端存储时,看到了ceph作为后端存储时的各种优势 ,于是查询资料,总结了这篇ceph架构的博客,介绍了ceph的架构和ceph的核心组件.ceph整体十分 ...

  9. Ackermann Steering System

    Source : https://www.hotrod.com/articles/ctrp-0407-ackermann-steering-system/ Tuning Your Steering S ...

  10. Python各个岗位的开发流程

     根据张大美女提供资料微修改,在这谢谢张大美女! 1.python软件开发工程师 1.1 项目启动会 说明项目目标.阶段划分.组织结构.管理流程等关键事项. 1.2 需求调研 由用户提出,描述产品的功 ...