天天看點

ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來

這是 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”, 即 “通用報表編寫處理器”。

ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來

同年,這 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,隻是被用來簡單地根據客戶的主資料和事務資料建立展現報表,就像初出茅廬,尚未通過火燒博望坡和火燒新野而嶄露頭角的諸葛孔明一樣,還沒有向業界展示出自己真正的潛力。

ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來

同時,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 實作方案。

ABAP 真的會過時嗎?聊聊 ABAP 的過去,現在和未來

比如 SAP CDS view 問世之後,SAP 也迅速推出了支援 CDS view 資料展現的 ALV 工具。詳情參考 Jerry 的文章:一行代碼将 SAP CDS view 資料以 ALV 的方式輸出。

現代 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 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
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 真的會過時嗎?聊聊 ABAP 的過去,現在和未來
ABAP 真的會過時嗎?聊聊 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