作为全球领先的企业应用软件解决方案提供商,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", 即 "通用报表编写处理器"。

apple Business Affiliations 填什么_ABAP

伴随着 SAP R/3 在企业管理软件领域大放异彩之后,ABAP 也就有了我们如今熟知的全称:Advanced Business Application Programming —— 高级业务应用程序编程。

SAP R/1:初出茅庐的 ABAP

1972 年,德国几位理想者因为一个伟大的想法聚在一起,立志为企业运营创造出一种革命性的单一集成软件解决方案。这几位才俊当时可能没有预料到,他们的想法,后来竟成就了一家世界一流的企业管理软件企业。

apple Business Affiliations 填什么_SAP_02

同年,这 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 的界面。

apple Business Affiliations 填什么_SAP_03

1980 年,SAP 的员工数增长到了 80 多名,搬到了新的 Walldorf 办公室。

apple Business Affiliations 填什么_ABAP_04

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 系列的软件发展到成熟期。

apple Business Affiliations 填什么_SAP_05

同时借着 Windows 操作系统发展的东风,SAP 引入了 SAPGUI 作为 SAP R/3 的用户界面。作为一款终端用户客户端和集成开发环境,SAPGUI 在软件开发布满惊涛骇浪的历史长河中始终占有一席之地,这充分体现了其优秀程度。

下图是使用 SAPGUI 呈现的 SAP R/3 操作界面: 

apple Business Affiliations 填什么_ABAP_06

ABAP 的语法

由于历史原因,ABAP 语法受同时代编程语言 COBOL (Common Business-Oriented Language) 影响很大。

COBOL 采用 300 多个英语单词作为保留字,以一种接近于英语书面语言的形式来描述数据特性和数据处理过程,便于理解和学习。

COBOL 是专门为企业管理而设计的高级编程语言,可用于统计报表、财务会计、计划编制、作业调度、情报检索和人事管理等方面。

apple Business Affiliations 填什么_abap_07

ABAP 的一些关键字,例如 MOVE、MOVE-CORRESPONDING、ADD、ADD-CORRESPONDING 等,在 COBOL 中均有确切的对应关系。

当然 ABAP 也绝不是一门固步自封,躺在过去辉煌功劳簿上停滞不前的编程语言,而是不断吸取其他现代编程语言的长处不断进化。在引入对面向对象编程特性的支持后,ABAP 中出现的 NEW 等关键字,从中也依稀能分辨出 C++/Java 等编程语言的身影。

apple Business Affiliations 填什么_ABAP_08

同时,ABAP 支持使用 OPEN SQL 的方式,在应用程序中直接对数据库内容进行读写操作,为开发人员屏蔽了数据库连接和数据库接口的细节,这一设计在同时代其他编程语言中并不常见,也大大提高了 SAP 应用程序的开发效率。

ALV

说到 ABAP,就不能不提 ALV.

ALV 最初称为 ABAP List Viewer,后来更名为 SAP List Viewer,可以说只要有 SAPGUI 报表需求的地方,就有 ALV 的身影。时至今日,作者所处的一些 SAP 开发技术群里,ALV 相关的编程讨论,仍然是一个热门的话题。用户和市场需求说明一切:ALV 能帮助 ABAP 开发人员根据客户数据,快速开发出其需要的各种维度的展现和分析报表。这个工具如此受开发人员和客户的欢迎,以至于每当 SAP 推出一种新的 UI 技术比如 Webdynpro, Fiori 或是新的数据建模方式后,SAP 开发生态圈总是大声疾呼,要求提供基于该编程技术的 ALV 实现方案。

apple Business Affiliations 填什么_ABAP_09

比如 SAP CDS view 问世之后,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 的另一创新,就是成功地跃入云端。

apple Business Affiliations 填什么_编程语言_10

SAP Business Technology Platform 是 SAP 向云端转型过程中,面向整个 SAP 生态体系,提供以业务为中心的统一开放式平台。而 ABAP 作为 SAP BTP 上和 Cloud Foundry,Kyma 并驾齐驱的三大开发环境之一,是用于 SAP 旗舰级产品 S/4HANA Cloud 扩展开发的官方推荐环境,其在 SAP 整个技术体系中的重要性不言而喻。

apple Business Affiliations 填什么_编程语言_11

另一方面,如今随着 ABAP 不断的进化,很多最新的开发特性,比如 CDS view,Restful ABAP Programming 开发对象诸如 Behavior Definitions, Service Bindings 等等均只能在 ABAP Development Tool 中创建和管理。这也预示着传统的 ABAP 开发人员,如果想紧跟 ABAP 演进的步伐,自身也需不断学习和提高。

作者

Jerry Wang|汪巍
SAP 开发专家