日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器

發布時間:2023/12/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于 Java 從業人員來說,無論是剛入門的新手還是專家,肯定都正在或者曾經使用過 Eclipse,這是一款優秀的編寫 Java 程序的 IDE.

然而可能大多數 Java 開發人員都沒有意識到,Eclipse 同時也能用來進行另一款在企業管理軟件開發領域大名鼎鼎的編程語言的開發工作,這門語言就是 ABAP.

在 2022 年 3 月最新的 TIOBE 編程語言排行榜上,Python, C 和 Java 分列前三甲,而 ABAP 位列第 42 名。

ABAP 之前的兩門語言,分別是同樣出自豪門微軟的 Powershell 和 TypeScript.

而 ABAP 這門編程語言,是企業管理軟件巨頭,德國最大的軟件公司 SAP 使用的開發語言,其旗艦級產品 S/4HANA 和曾經成為 ERP 軟件領域代名詞的 R/3,都基于 ABAP 開發而成。

在 SAP 公司創始之初,ABAP 程序的編寫工具是 SAP GUI,一個界面古樸的 IDE,如下圖所示:

SAPGUI 這款 IDE 的頁面布局設計,乍一看有點像現在的 Visual Studio Code,但 SAPGUI 誕生于 1992 年,可以說是 Visual Studio Code 的前輩了。

那么為什么 SAP 有了 SAPGUI 之后,還會選擇將 Eclipse 改造成 ABAP 的另一款開發工具呢?這就是本文要闡述的內容。

SAP 在 Eclipse 框架的基礎上,開發出了一系列專門用于 ABAP 開發的插件。這一經過改造后的 Eclipse,有了一個新的名稱:ABAP Development Tools for SAP Netweaver,在 SAP 官方文檔里經常簡寫為 ADT. 為了便于 Java 程序員閱讀,本文余下部分中提到的 Eclipse,如無特殊說明,均代表 ADT.

下圖是在 ADT 里點擊 Help -> About 之后彈出的該 Eclipse 的版本號。

本文余下的部分從下列幾個方面向大家介紹,經過 SAP 改造之后的 Eclipse(ADT),為何能成為企業管理軟件領域的 ABAP 應用開發利器。

1. ADT的工作原理

很多從 Eclipse 做 Java 開發的朋友轉到 ADT 后,最大的不習慣就是 ADT 沒辦法離線使用。即使是用 SAP 云平臺 Neo 編程環境里的 SDK,開發人員也可以在本地完成開發后,使用命令行或者 Eclipse Run As 菜單將其發布到 SAP 云平臺上。然而這種用法對于 ADT 來說行不通,因為后者仍然是一個 Client / Server模式中的 Client 端。從本質上講,在開發 ABAP 時,Eclipse 和 SAP GUI 的區別,僅僅體現在對 Netweaver 服務器上開發資源的展示和操作方式有所差異罷了。

正因為這種 C/S 架構,每次我們在 ADT 里操作 Netweaver 上的 ABAP 資源時,比如編輯一個 ABAP 類并保存,實際上都是通過消費 ABAP 后臺暴露出的 Restful API 來完成的。

這種 Restful API 的消費行為可以通過打開 ADT 里的 ABAP Communication Log 視圖來觀察。點擊 Start logging 按鈕:

在源代碼里隨便做一些改動,比如增加一個空行,能觀察到這個修改動作觸發了很多到 ABAP 后臺的 HTTP 請求:

如果想自己調試這些后臺操作的具體實現,用 SAP GUI 登錄 ABAP 后臺,使用事務碼SICF找到節點/sap/bc/adt:

在節點處理類的方法 HANDLE_REQUEST 里設置斷點即可調試:

HTTP 請求發送到后臺之后,上述方法會調用一個統一的入口函數 SADT_REST_RFC_ENDPOINT, 該函數和 ADT 后臺框架其他處理邏輯的交互如下圖所示:

在 ADT 里對 ABAP 源代碼做語法檢查,實際上就是把整段代碼做一個 Base64 編碼,然后通過 HTTP Post 發送到后臺,由后臺執行對應的檢查函數,結果通過 HTTP 響應返回給 ADT 前端。

相應的,如果對ADT的前臺 Java 代碼感興趣,請移步 ADT 安裝目錄下的 plugins 文件夾,把里面的 jar 包反編譯出來閱讀源代碼即可。

2. SAP GUI 和 ADT的 關系

一言以蔽之:二者互為補充。
一方面,對于S/4HANA很多新功能的開發,比如 CDS view 和 AMDP(ABAP Managed Database Procedure), 開發人員沒有選擇的余地,必須使用 ADT,因為 SAP GUI 不支持這些新功能的開發。

比如在 SAP GUI 里即使想瀏覽 CDS view 的內容也不行,會收到提示:
Please use the ADT Tools in Eclipse to process DDL sources.

而 AMDP,就是一個特殊的 ABAP 類,能夠在 ABAP 方法里執行 HANA 的SQLScript 或者存儲過程。

SAP GUI 里可以查看 AMDP 的源代碼,但是沒法做開發。試圖在 SAP GUI 里進行編輯時,會遇到上面的提示信息:

Class XX contains stored procedures which cannot be changed in SAP GUI

反之,SAP GUI 里一些比較傳統的開發,ADT 也是不支持的。舉一些例子。
傳統 Dynpro 程序的 Screen 開發,雙擊 Screen number,就可以通過點擊Layout 按鈕打開 Screen Painter,然后進行所見即所得的 Screen 布局開發:

然而如果在ADT里試圖編輯這個Screen會發生什么事?

ADT 會打開一個新的標簽頁,里面顯示一個嵌入的 SAP GUI 窗口,像 Screen Painter 和其他一些傳統的 ABAP 開發,均在這個嵌入的 SAP GUI 里進行。

使用 SAP GUI 做開發的 ABAP 顧問,應該明白這三個 session 的區別:

  • User Session
  • ABAP Session
  • Internal Session

我們每次用 SAP GUI 登錄一個系統,都會產生一個新的 User Session,每個User Session 里用 /o 打開一個新的事務碼,則是在該 User Session 里開啟了一個新的 ABAP Session.

一個 User Session 默認能打開最多 6 個 ABAP Session,可以通過修改系統參數把最大數目擴充為 16 個。

那么 ADT 里打開的嵌有 SAP GUI 窗口的標簽頁,背后啟動的 Session 類型是什么?答案是 User Session.

下圖是 ADT 里打開的兩個標簽和其對應的兩個 User Session,用不同顏色來區分。

3. ADT 和 SAP GUI 相比的一些獨到之處

既然是一個基于Eclipse的IDE,ADT 和 SAP GUI 相比還是存在一些獨到之處。

第一,由于 ADT 是基于 Eclipse 這個較之 SAP GUI 來說更加現代的 IDE,從使用習慣上來說更貼近 Java/C++ 程序員。

以 ABAP 類為例,各個維度的信息在 ADT 里能在一個屏幕里同時顯示,在 SAP GUI 里一個屏幕顯示的信息維度很單一。

如果想看其他維度信息,只有通過雙擊的方式跳轉,查看完畢后通過回退鍵回到正在工作的界面。

又比如所有添加了關注的系統的 ST22 信息能在一個地方統一監控了:

第二,ADT 提供了很多代碼重構的向導(Assistant), Java 和 C++ 的開發人員對這些類的重構功能一定不會陌生。

一些常用的代碼重構功能如下:

  • Delete unused variables:
    快速刪除一個方法里所有定義了但未使用的局部變量,這個功能很實用,SAP GUI 不支持。

  • Extract Methods: 如果一段代碼反復出現,可以考慮用重構技術里的方法提取,將其封裝成一個方法。

當然還在使用 SAP GUI 的開發人員要使用 ABAP 重構向導也是可以的, 根據SAP GUI 版本的不同, 入口也稍有差異。
在 SAP GUI 740 版本里,重構向導通過 Utilities 菜單進入。

740 之前的版本,重構向導的打開方式大同小異:

第三,對 SAP GUI 一些常用功能的原生支持。

所謂原生支持,指用 Eclipse 原生的頁面來提供以前在 SAP GUI 里實現的功能。
對 ABAP 開發顧問來說,幾乎每天都要在 SAP GUI 進行的操作就是 ABAP 類和報表的調試。

有的以前從事 Java 開發的朋友們轉到 SAP GUI 后,剛上手時使用 SAP GUI 的調試器總覺得很別扭。一旦使用 ADT 的調試器,熟悉的味道又回來了。在 ADT里調試 ABAP 和 Eclipse 里調試 Java 程序的方式完全一致。

SAP GUI 里的單元測試和分支/語句執行覆蓋率:

ADT 里也提供了單元測試和各種覆蓋率審查的原生支持:

SAP GUI 里的事務碼 SAT 在 ADT 里的原生支持:

使用方式和 SAP GUI 里的沒有差別。

第四,方便的SQL console功能。

以前在 SAP GUI 里時,有時出于測試目的想寫些簡單的 SQL 語言做些驗證,還得創建一個報表然后在報表里書寫。在 ADT 里,直接使用 SQL console 就可省去不必要的報表創建:


第五,改進的代碼版本比較功能。

有些朋友反映 SAP GUI 里自帶的代碼比較工具不是很好用:

如今在 ADT 里,ABAP 開發人員終于可以像 Java 程序員一樣,享受 Eclipse 提供的便利的代碼版本比較功能了:

4. ADT 其他一些值得一提的小功能

  • ADT Link

比如任何一個在 ADT 里能夠查看的資源,都有一個所謂的 ADT Link,通過菜單 Share Link 查看:

這種Link格式如下:
adt://AG3/sap/bc/adt/vit/wb/object_type/tabldt/object_name/ZORDER
通過 Open ADT Link 菜單,輸入上述 ADT Link,能直接打開對應的資源,而不需要像 SAP GUI 那樣,需要先運行正確的事務碼,進入事務碼之后再打開資源。

  • 自定義編輯器顏色

如何才能讓自己使用的 IDE 和其他程序猿相比顯得與眾不同呢?一個辦法是個性化字體和背景色。比如字體必須用程序猿專用的等寬開源字體 Inconsolata:

SAP GUI 的顏色個性化設置稍顯麻煩,需要一項項手動設置。而 ADT 因為是基于 Eclipse,所以主題的個性化就容易多了。如果覺得下面的 dark 主題還不夠酷,

安裝一個名叫 Eclipse Color Theme 的插件,就可以使用這個插件預置好的幾十套主題,真正做到一年 54 周每周換一套 Theme 了。

總結

作為一個擁有 14 年 ABAP 開發經驗的老程序員,在筆者心中 SAP GUI 和 Eclipse 都是優秀的 ABAP IDE,各有其長處和適應場合。本文通過逐一將 SAP GUI 和 ADT 提供的開發特性做橫向比較,希望能夠幫助開發人員感知到這些年的集成開發環境自身隨時代發展而持續演進,提高,不斷改善開發人員使用體驗的發展方向。

祝每一位 ABAP 開發人員都能愉快地使用 SAP GUI 和 ADT,做到得心應手。感謝閱讀。

總結

以上是生活随笔為你收集整理的Eclipse 不为人所知的另一面 - 企业管理软件领域 ABAP 编程语言开发利器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。