共计 6271 个字符,预计需要花费 16 分钟才能阅读完成。
这是 Jerry 2021 年的第 56 篇文章,也是汪子熙公众号总共第 333 篇原创文章。
本文目录
- SAP R/1:ABAP 老成持重
- SAP R/2:ABAP 初试锋芒
- SAP R/3:ABAP 一举成名
- ABAP 的语法
- SAP ALV
- ABAP 的将来
- ABAP 未来会沦亡吗?
SAP 总是长于依据市场最新的动静和变动,来调整其产品的命名策略。一个例子就是从诞生之初的 SAP HANA Cloud Platform,到 SAP Cloud Platform,再到现在的 SAP Business Technology Platform (简称 SAP BTP).
而作为 SAP 最胜利,最为人所知,最具代表性的标记之一,ABAP, 诞生之初的德文全称是 “Allgemeines Beleg Auswertungs Programm”, 翻译成英语为 “General Program to Evaluate Documents”, 中文意思为 “ 解决评估文档的通用程序 ”。
其后 ABAP 随同着 SAP R/2 到 SAP R/3 的成长,其全称也更名为 “Allgemeiner Berichts Aufbereitungs Prozessor”, 翻译成英文为 “Generic Report Preparation Processor”, 即 “ 通用报表编写处理器 ”。
随同着 SAP R/3 在企业管理软件畛域大放异彩之后,ABAP 也就有了咱们现在熟知的全称:Advanced Business Application Program —— 高级业务应用程序编程。
我还可能回忆起,Jerry 2007 年刚刚学习 ABAP 开发时,我的 QQ 签名是: Alawys Busy Always Problems.
SAP R/1:老成持重的 ABAP
1972 年,德国几位现实者因为一个平凡的想法聚在一起,立志为企业经营发明出一种革命性的繁多集成软件解决方案。这几位才俊过后可能没有预料到,他们的想法,起初竟成就了一家世界一流的企业管理软件企业。
同年,这 5 名 IBM 前员工创建了 SAP. 1976 年,约有 30 名 SAP 员工,在 SAP R/1 上反对着大概 50 个客户。SAP R/1 又被称为 SAP RFM, 是 RF (Financial Accounting, 财务会计) 和 RM (Inventory Management/Invoice Verification, 库存治理和发票校验) 模块的衍生工具。
SAP R/1 中的 R 代表 Real Time,即实时处理。现在的 ABAP 开发人员眼中被视为理所当然的 ABAP 应用服务器三层架构,即 Presentation,Application 和 Database 的三层设计,在 SAP R/1 里都合并在同一台物理服务器上,这也是 SAP R/1 中 1 的含意。
当年的 SAP 还没有独立的办公室,SAP 员工间接在客户现场工作。员工们深信,这样做能有助于开发出客户真正须要的产品,并对其继续优化。
此时的 ABAP,只是被用来简略地依据客户的主数据和事务数据创立展示报表,就像老成持重,尚未通过火烧博望坡和火烧新野而锋芒毕露的诸葛孔明一样,还没有向业界展现出本人真正的后劲。
SAP R/2:ABAP 初试锋芒
1979 年,SAP 公布了第二代 ERP 零碎,即 SAP R/2. ABAP 在 SAP R/2 的开发过程中施展了重要作用,随同着 ABAP 调试器、屏幕编辑器的呈现,俨然已成长为一个齐备的集成开发环境。
SAP R/2 时代的 ABAP 给现在古代的 ABAP 奉献了一项极为贵重的资产,即交互式代码调试器,这在 1979 年同类编程语言中并不常见。大概一半的 SAP R/2 代码是用 ABAP 编写的,剩下的另一半由汇编语言实现。
下图是 SAP R/2 的界面。
1980 年,SAP 的员工数增长到了 80 多名,搬到了新的 Walldorf 办公室。
SAP R/2 中的数字 2 代表两层,即体现层位于一台服务器,而应用层和数据库层位于另一台大型机服务器上。换言之,SAP R/2 是部署在大型机上的企业软件解决方案。
SAP R/3:ABAP 一举成名
SAP R/3 于 1992 年公布,是 SAP ERP 零碎的客户机 / 服务器版本,起初成为 SAP 最受客户欢送的产品之一。SAP R/3 从某种程度上说建立了 ERP 软件的行业标准:很长一段时间内,SAP 简直成为了 ERP 的同义词。
SAP R/3 中的数字 3,代表展示层,应用层和数据库层别离部署,这也标记着 SAP R 系列的软件倒退到成熟期。
同时借着 Windows 操作系统倒退的东风,SAP 引入了 SAPGUI 作为 SAP R/3 的用户界面。没错,就是现在包含 Jerry 空闲时依然会登录玩一玩的 SAPGUI, 算起来它曾经有 29 年的历史了。作为一款终端用户客户端和集成开发环境,SAPGUI 在软件开发布满风平浪静的历史长河中始终占有一席之地,这充分体现了其优良水平。
下图是应用 SAPGUI 出现的 SAP R/3 操作界面:
ABAP 的语法
因为历史起因,ABAP 语法受同时代编程语言 COBOL(Common Business-Oriented Language) 影响很大。
COBOL 采纳 300 多个英语单词作为保留字,以一种靠近于英语书面语言的模式来形容数据个性和数据处理过程,便于了解和学习。
COBOL 是专门为企业治理而设计的高级编程语言,可用于统计报表、财务会计、计划编制、作业调度、情报检索和人事管理等方面。
ABAP 的一些关键字,例如 MOVE、MOVE-CORRESPONDING、ADD、ADD-CORRESPONDING 等,在 COBOL 中均有确切的对应关系。
当然 ABAP 也绝不是一门固步自封,躺在过来辉煌功劳簿上停滞不前的编程语言,而是一直汲取其余古代编程语言的短处一直进化。在引入对面向对象编程个性的反对后,ABAP 中呈现的 NEW 等关键字,从中也依稀能分辨出 C++/Java 等编程语言的身影。
同时,ABAP 反对应用 OPEN SQL 的形式,在应用程序中间接对数据库内容进行读写操作,为开发人员屏蔽了数据库连贯和数据库接口的细节,这一设计在同时代其余编程语言中并不常见,也大大提高了 SAP 应用程序的开发效率。
ALV
一谈起《三国演义》中的水镜学生司马徽,就不得不说到他的“三国演义十大谎话排名之首”的那句“卧龙凤雏,得一可安天下”。
同样,说到 ABAP,就不能不提 ALV.
ALV 最后称为 ABAP List Viewer,起初更名为 SAP List Viewer,能够说只有有 SAPGUI 报表需要的中央,就有 ALV 的身影。时至今日,Jerry 所处的一些 SAP 开发技术群里,ALV 相干的编程探讨,依然是一个热门的话题。用户和市场需求阐明所有:ALV 能帮忙 ABAP 开发人员依据客户数据,疾速开发出其须要的各种维度的展示和剖析报表。这个工具如此受开发人员和客户的欢送,以至于每当 SAP 推出一种新的 UI 技术比方 Webdynpro, Fiori 或是新的数据建模形式后,SAP 开发生态圈总是大声疾呼,要求提供应用编程技术的 ALV 实现计划。
比方 SAP CDS view 问世之后,SAP 也迅速推出了反对 CDS view 数据展示的 ALV 工具。详情参考 Jerry 的文章:一行代码将 SAP CDS view 数据以 ALV 的形式输入。
ABAP 的将来
古代 ABAP 的一大翻新之处,是 ABAP 与 SAP HANA 数据库的交互,以及为了反对 Fiori 和其余 Web 利用程序开发而创立出新的编程模型,比方 ABAP Programming Model for SAP Fiori,以及 Restful ABAP Programming(RAP).
基于 SAP RAP 编程模型开发而成的利用,与生俱来具备 Restful 的特质,能充分利用 HANA 平台的弱小计算能力,反对云环境和 Fiori UX. SAP RAP 也是 SAP 外部创立新的 Fiori 应用程序的规范。
古代 ABAP 的另一翻新,就是胜利地跃入云端。
ABAP 对云端编程环境的反对,通过一个代号为 Steampunk (蒸汽朋克) 的我的项目所启动,在 Jerry 之前的文章 从 SAP 社区上的一篇博客开始,聊聊 SAP 产品命名背地的那份情怀 里有具体介绍。
SAP Business Technology Platform 是 SAP 向云端转型过程中,面向整个 SAP 生态体系,提供以业务为核心的对立开放式平台。而 ABAP 作为 SAP BTP 上和 Cloud Foundry,Kyma 并驾齐驱的三大开发环境之一,是用于 SAP 旗舰级产品 S/4HANA Cloud 扩大开发的官网举荐环境,其在 SAP 整个技术体系中的重要性显而易见。
另一方面,现在随着 ABAP 一直的进化,很多最新的开发个性,比方 CDS view,Restful ABAP Programming 开发对象诸如 Behavior Definitions, Service Bindings 等等均只能在 ABAP Development Tool 中创立和治理。这也预示着传统的 ABAP 开发人员,如果想紧跟 ABAP 演进的步调,本身也需一直学习和进步。
ABAP 未来会沦亡吗?
网络和社区上始终存在着对于 ABAP 是否会沦亡的探讨。
尽管 ABAP 内的确蕴含一些老式的编程个性,但从本文之前的阐述大家曾经能够发现,从 ABAP 诞生之日起至今,这门编程语言就不停地进行自我改造和一直地进化。思考到寰球在 ABAP 平台上运行软件的宏大客户群(其中相当一部分是 SAP 旗舰级产 S/4HANA),以及本文介绍的 SAP 在 ABAP 方面的翻新事实证明,ABAP 是一个充满活力的环境,总能找到适合的计划来整合市场最新需要和翻新。
所以,Is ABAP Dead?这个问题,置信每位 ABAP 开发者,心中都会有本人的答案。
阿诺德·施瓦辛格在《终结者》系列里,始终扮演着“人狠话不多”的角色,然而很多台词都成为永恒的经典。
在《终结者 5》里他已经说出一句可能激励有数高龄程序员的金句:
I am old, but not obsolete.
我老了,但我不过时。
作为一门领有数十年历史的编程语言,ABAP is Old. 但 Jerry 更违心仿照 T800 这句金句来表白我对 ABAP 的开发:
ABAP is old, but not obsolete.
当然,更能代表 SAP 官网观点的评论,莫过于 SAP 开发大佬 Thomas Jung 这句:
ABAP Is Not Dead, But Also Not the Only Answer.
ABAP 不会过期,只是不再会是惟一的抉择。
感激浏览。
Jerry 的 ABAP 专题
- Jerry 的 ABAP, Java 和 JavaScript 乱炖
- ABAP 开发人员将来应该学些什么
- Jerry 2017 年的五一小长假:8 种经典排序算法的 ABAP 实现
- Jerry 的 ABAP 原创技术文章合集
- 300 行 ABAP 代码实现一个最简略的区块链原型
- 应用 Java+SAP 云平台 +SAP Cloud Connector 调用 ABAP On-Premise 零碎里的函数
- 在 SAP 云平台的 CloudFoundry 环境下生产 ABAP On-Premise OData 服务
- ABAP vs Java,蛙泳 vs 自由泳
- 聊聊 C 语言和 ABAP
- 入手应用 ABAP Channel 开发一些小工具,晋升日常工作效率
- 我用 ABAP 做过的那些无聊的事件
- 不喜爱 SAP GUI?那试试用 Eclipse 进行 ABAP 开发吧
- 应用 Visual Studio Code 编写和激活 ABAP 代码
- 你的 ABAP 程序给佛祖开过光么?来试试 Jerry 这个小技巧
- 在 SAP 云平台 ABAP 编程环境上编写第一段 ABAP 程序
- SAP 官网公布的 ABAP 编程标准
- ABAP Code Inspector 那些暗藏的性能,您都晓得吗?
- 还在用 ABAP 进行 SAP 产品的二次开发?来理解下这种全新的二次开发理念吧
- ABAP Netweaver 体内的那些寄生式编程语言
- 从 SAP 社区上的一篇博客开始,聊聊 SAP 产品命名背地的那份情怀
- 云端的 ABAP Restful 服务开发
- 如何在 SAP 云平台 ABAP 编程环境里把 CDS view 裸露成 OData 服务
- 应用 abapGit 在 ABAP On-Premises 零碎和 SAP 云平台 ABAP 环境之间进行代码传输
- 30 分钟用 Restful ABAP Programming 模型开发一个反对增删改查的 Fiori 利用
- Jerry 带您理解 Restful ABAP Programming 模型系列之二:Action 和 Validation 的实现
- Jerry 带您理解 Restful ABAP Programming 模型系列之三:云端 ABAP 利用调试
- SAP 云平台上的 ABAP 编程环境里如何生产第三方服务
- ABAP 开发者上云的时候到了 – 当初大家能够收费应用 SAP 云平台 ABAP 环境的试用版了
- 学而不思则罔 – SAP 云平台 ABAP 编程环境的由来和实用场景
- SAP 云平台里的三叉戟利用
- 如何基于 Restful ABAP Programming 模型开发并部署一个反对增删改查的 Fiori 利用
- SAP 2019 TechEd Key Note 解读:云时代下 SAP 从业人员如何做二次开发?
- 有哪些 ABAP 关键字和语法,到了 ABAP 云环境上就没方法用了?
- ABAP 开发环境终于反对以驼峰命名法主动格式化 ABAP 变量名了
- 利用 ABAP 740 的新关键字 REDUCE 实现一个理论工作工作
- 一段让人瑟瑟发抖的 ABAP 代码
- 昨日万圣节 ABAP 怪兽级代码谜团,颁布答案啦
- 介绍一种在 ABAP 内核态进行内表高效拷贝的办法
- 应用 SAP Cloud Application Programming 模型开发 OData 的一个理论例子
- 当 ABAP 遇见普罗米修斯
- 应用 ABAP 绘制可伸缩矢量图
- ABAP 开发环境语法高亮的那些事儿
- SAP 谬误音讯调试之七种武器:让所有的谬误音讯都能被定位
- 应用 ABAP 操作 Excel 的几种办法
- SAP GUI 里的收藏夹事务码管理工具
- SAP GUI 和 Windows 注册表
- 有了 Debug 权限就能干坏事?小心了,你的一举一动尽在系统监控中
- ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX 这些东东是什么鬼
- 实现 ABAP 条件断点的三种形式
- 应用 SAT 跟踪监控从浏览器关上的 SAP 利用的性能和调用栈
- 一个 13 年 ABAP 老兵的倡议:理解这些基础知识,对 ABAP 开发有百利而无一害
- SAP ABAP Netweaver 容器化, 不可能实现的工作吗?
- SAP 产品加强技术回顾
- SAP API 开发方法大全
- 浅谈 Java 和 SAP ABAP 的动态代理和动静代理,以及 ABAP 面向切面编程的尝试
- SAP ABAP 应用服务器的 HTTP 响应状态码(Status Code)
- SAP ABAP 里存在 Java List 这种汇合工具类么?CL_OBJECT_COLLECTION 理解一下
- ABAP 面试题系列:写一组会呈现死锁 (Deadlock) 的 ABAP 程序
- SAP ABAP Netweaver 服务器的规范登录形式解说
- SAP ABAP 关键字语法图和 ABAP 代码主动生成工具 Code Composer
- SAP ABAP SM50 的另类用处 – ABAP 工作过程对数据库表读取操作的检测
- 对于 SAP ABAP 字符变量和字符串变量字符个数的一个知识点,和一个血案
- SAP ABAP 一组关键字 IS BOUND, IS NOT INITIAL 和 IS ASSIGNED 的用法辨析
- SAP ABAP 和 Java 里的弱援用 (WeakReference) 和软援用(SoftReference)
- SAP AMDP 介绍 – ABAP 托管的 HANA 数据库过程
- 给你的 ABAP 对象打上标签(Tag)
- 历史上的明天:编程语言中 null 援用的十亿美元谬误
- ABAP Development Tool 代码模板和其余一些实用技巧汇总
- SAP ABAP Development Tool 进步开发效率的十个小技巧
- 如何在 SAP BTP 平台 ABAP 编程环境里生产基于 SOAP 的 Web Service
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: