共計(jì) 4241 個(gè)字符,預(yù)計(jì)需要花費(fèi) 11 分鐘才能閱讀完成。
這篇文章主要講解了“怎么用 Eclipse 進(jìn)行 ABAP 開發(fā)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么用 Eclipse 進(jìn)行 ABAP 開發(fā)”吧!
ABAP Development Tools,最初在 SAP 內(nèi)部稱為 ABAP in Eclipse。這個(gè)工具 SAP 在很多場(chǎng)合簡(jiǎn)稱為 ADT,本文后續(xù)部分也使用這個(gè)簡(jiǎn)稱。
簡(jiǎn)單地說,SAP 對(duì) Eclipse 做了擴(kuò)展,開發(fā)了一些插件,使得開發(fā)人員能使用 Eclipse 完成部分以前在 SAP GUI 里進(jìn)行的 ABAP 開發(fā)工作。
本文不去重復(fù)網(wǎng)上和 SAP 幫助文檔里對(duì) ADT 的介紹,而是介紹一些 Jerry 的原創(chuàng)內(nèi)容。
Jerry 曾經(jīng)寫過一篇文章
那些年我用過的 SAP IDE
, 里面也提到了 ADT。本文對(duì)其做詳細(xì)介紹。
文章目錄
1. ADT 的工作原理
2. SAP GUI 和 ADT 的關(guān)系
3. ADT 相比 SAP GUI 具有的一些獨(dú)到之處
4. ADT 其他一些值得一提的小功能
下面是正文。
1. ADT 的工作原理
很多從 Eclipse 做 Java 開發(fā)的朋友轉(zhuǎn)到 ADT 后,最大的不習(xí)慣就是 ADT 沒辦法離線使用。即使是用 SAP 云平臺(tái) Neo 編程環(huán)境里的 SDK,開發(fā)人員也可以在本地完成開發(fā)后,使用命令行或者 Eclipse Run As 菜單將其發(fā)布到 SAP 云平臺(tái)上。然而這種用法對(duì)于 ADT 來說行不通,因?yàn)楹笳呷匀皇且粋€(gè) Client / Server 模式中的 Client 端。從本質(zhì)上講,和 SAP GUI 的區(qū)別,僅僅體現(xiàn)在對(duì) Netweaver 服務(wù)器上開發(fā)資源的展示和操作方式有所差異罷了。
正因?yàn)檫@種 CS 架構(gòu),每次我們?cè)?ADT 里操作 Netweaver 上的 ABAP 資源時(shí),比如編輯一個(gè) ABAP 類并保存,實(shí)際上都是通過消費(fèi) ABAP 后臺(tái)暴露出的 Restful API 來完成的。
這種 Restful API 的消費(fèi)行為可以通過打開 ADT 里的 ABAP Communication Log 視圖來觀察。點(diǎn)擊 Start logging 按鈕:
在源代碼里隨便做一些改動(dòng),比如增加一個(gè)空行,能觀察到這個(gè)修改動(dòng)作觸發(fā)了很多到 ABAP 后臺(tái)的 HTTP 請(qǐng)求:
如果想自己調(diào)試這些后臺(tái)操作的具體實(shí)現(xiàn),用 SAP GUI 登錄 ABAP 后臺(tái),使用事務(wù)碼 SICF 找到節(jié)點(diǎn) /sap/bc/adt:
在節(jié)點(diǎn)處理類的方法 HANDLE_REQUEST 里設(shè)置斷點(diǎn)即可調(diào)試:
HTTP 請(qǐng)求發(fā)送到后臺(tái)之后,上述方法會(huì)調(diào)用一個(gè)統(tǒng)一的入口函數(shù) SADT_REST_RFC_ENDPOINT, 該函數(shù)和 ADT 后臺(tái)框架其他處理邏輯的交互如下圖所示:
關(guān)于這些 HTTP 的請(qǐng)求和響應(yīng)明細(xì),請(qǐng)參考 Jerry 的博客:
An example to help you understand how does ADT work
https://blogs.sap.com/2014/08/12/an-example-to-help-you-understand-how-does-adt-work/
比如在 ADT 里對(duì) ABAP 源代碼做語法檢查,實(shí)際上就是把整段代碼做一個(gè) Base64 編碼,然后通過 HTTP Post 發(fā)送到后臺(tái),由后臺(tái)執(zhí)行對(duì)應(yīng)的檢查函數(shù),結(jié)果通過 HTTP 響應(yīng)返回給 ADT 前端。
相應(yīng)的,如果對(duì) ADT 的前臺(tái) Java 代碼感興趣,請(qǐng)移步 ADT 安裝目錄下的 plugins 文件夾,把里面的 jar 包反編譯出來閱讀源代碼即可。
2. SAP GUI 和 ADT 的關(guān)系
Jerry 的個(gè)人觀點(diǎn)是:二者互為補(bǔ)充。
一方面,對(duì)于 S /4HANA 很多新功能的開發(fā),比如 CDS view 和 AMDP(ABAP Managed Database Procedure), 開發(fā)人員沒有選擇的余地,必須使用 ADT,因?yàn)?SAP GUI 不支持這些新功能的開發(fā)。
比如在 SAP GUI 里即使想瀏覽 CDS view 的內(nèi)容也不行,會(huì)收到提示:
Please use the ADT Tools in Eclipse to process DDL sources.
而 AMDP,就是一個(gè)特殊的 ABAP 類,能夠在 ABAP 方法里執(zhí)行 HANA 的 SQLScript 或者存儲(chǔ)過程。
SAP GUI 里可以查看 AMDP 的源代碼,但是沒法做開發(fā)。試圖在 SAP GUI 里進(jìn)行編輯時(shí),會(huì)遇到上面的提示信息:
Class XX contains stored procedures which cannot be changed in SAP GUI
反之,SAP GUI 里一些比較傳統(tǒng)的開發(fā),ADT 也是不支持的。舉一些例子。
傳統(tǒng) Dynpro 程序的 Screen 開發(fā),雙擊 Screen number,就可以通過點(diǎn)擊 Layout 按鈕打開 Screen Painter,然后進(jìn)行所見即所得的 Screen 布局開發(fā):
然而如果在 ADT 里試圖編輯這個(gè) Screen 會(huì)發(fā)生什么事?
ADT 會(huì)打開一個(gè)新的標(biāo)簽頁(yè),里面顯示一個(gè)嵌入的 SAP GUI 窗口,像 Screen Painter 和其他一些傳統(tǒng)的 ABAP 開發(fā),均在這個(gè)嵌入的 SAP GUI 里進(jìn)行。
這就是 Jerry 在這一小節(jié)標(biāo)題里提到 SAP GUI 和 ADT 互為補(bǔ)充的含義:即便使用了 ADT,也不意味著能和 SAP GUI 說再見——很多傳統(tǒng)的 ABAP 開發(fā)仍然需要在 SAP GUI 里進(jìn)行,哪怕是作為一個(gè)窗口嵌入在 ADT 里。
使用 SAP GUI 做開發(fā)的 ABAP 顧問,應(yīng)該明白這三個(gè) session 的區(qū)別:
User Session
ABAP Session
Internal Session
我們每次用 SAP GUI 登錄一個(gè)系統(tǒng),都會(huì)產(chǎn)生一個(gè)新的 User Session,每個(gè) User Session 里用 / o 打開一個(gè)新的事務(wù)碼,則是在該 User Session 里開啟了一個(gè)新的 ABAP Session。一個(gè) User Session 默認(rèn)能打開最多 6 個(gè) ABAP Session,可以通過修改系統(tǒng)參數(shù)把最大數(shù)目擴(kuò)充為 16 個(gè)。
那么 ADT 里打開的嵌有 SAP GUI 窗口的標(biāo)簽頁(yè),背后啟動(dòng)的 Session 類型是什么?經(jīng)過 Jerry 測(cè)試,答案是 User Session。
下圖是 ADT 里打開的兩個(gè)標(biāo)簽和其對(duì)應(yīng)的兩個(gè) User Session,用不同顏色來區(qū)分。
3. ADT 和 SAP GUI 相比一些獨(dú)到之處
既然是一個(gè)基于 Eclipse 的 IDE,ADT 和 SAP GUI 相比還是存在一些獨(dú)到之處。
(1) 由于 ADT 是基于 Eclipse 這個(gè)較之 SAP GUI 來說更加現(xiàn)代的 IDE,從使用習(xí)慣上來說更貼近 Java/C++ 程序員。
以 ABAP 類為例,各個(gè)維度的信息在 ADT 里能在一個(gè)屏幕里同時(shí)顯示,在 SAP GUI 里一個(gè)屏幕顯示的信息維度很單一,如果想看其他維度信息,只有通過雙擊的方式跳轉(zhuǎn),查看完畢后通過回退鍵回到正在工作的界面。
又比如所有添加了關(guān)注的系統(tǒng)的 ST22 信息能在一個(gè)地方統(tǒng)一監(jiān)控了,Jerry 再也不需要自己開發(fā)工具實(shí)現(xiàn)了:
(2) ADT 提供了很多代碼重構(gòu)的向?qū)?(Assistant), Java 和 C ++ 的開發(fā)人員對(duì)這些類的重構(gòu)功能一定不會(huì)陌生。
Delete unused variables:
快速刪除一個(gè)方法里所有定義了但未使用的局部變量,這個(gè)功能很實(shí)用,SAP GUI 不支持。
**Extract Methods: ** 如果一段代碼反復(fù)出現(xiàn),可以考慮用重構(gòu)技術(shù)里的方法提取,將其封裝成一個(gè)方法。
當(dāng)然還在使用 SAP GUI 的開發(fā)人員要使用 ABAP 重構(gòu)向?qū)б彩强梢缘模鶕?jù) SAP GUI 版本的不同, 入口也稍有差異。
在 Jerry 的 SAP GUI 740 版本里,重構(gòu)向?qū)ㄟ^ Utilities 菜單進(jìn)入。
740 之前的版本,重構(gòu)向?qū)У拇蜷_方式大同小異:
(3) 對(duì) SAP GUI 一些常用功能的原生支持
所謂原生支持,指用 Eclipse 原生的頁(yè)面來提供以前在 SAP GUI 里實(shí)現(xiàn)的功能。
對(duì) ABAP 開發(fā)顧問來說,幾乎每天都要在 SAP GUI 進(jìn)行的操作就是 ABAP 類和報(bào)表的調(diào)試。
有的以前從事 Java 開發(fā)的朋友們轉(zhuǎn)到 SAP GUI 后,剛上手時(shí)使用 SAP GUI 的調(diào)試器總覺得很別扭。一旦使用 ADT 的調(diào)試器,熟悉的味道又回來了。在 ADT 里調(diào)試 ABAP 和 Eclipse 里調(diào)試 Java 程序的方式完全一致。
SAP GUI 里的單元測(cè)試和分支 / 語句執(zhí)行覆蓋率:
ADT 里也提供了單元測(cè)試和各種覆蓋率審查的原生支持:
SAP GUI 里的事務(wù)碼 SAT 在 ADT 里的原生支持:
使用方式和 SAP GUI 里的沒有差別。
(4) 方便的 SQL console 功能。
以前在 SAP GUI 里時(shí),有時(shí)出于測(cè)試目的想寫些簡(jiǎn)單的 SQL 語言做些驗(yàn)證,還得創(chuàng)建一個(gè)報(bào)表然后在報(bào)表里書寫。在 ADT 里,直接使用 SQL console 就可省去不必要的報(bào)表創(chuàng)建:
(5) 改進(jìn)的代碼版本比較功能
Jerry 之前的公眾號(hào)文章我用 ABAP 做過的那些無聊的事情
提到,有的朋友覺得 SAP GUI 里自帶的代碼比較工具不是很好用:
如今在 ADT 里,ABAP 開發(fā)人員終于可以像 Java 程序員一樣,享受 Eclipse 提供的便利的代碼版本比較功能了:
4. ADT 其他一些值得一提的小功能
(1) ADT Link
比如任何一個(gè)在 ADT 里能夠查看的資源,都有一個(gè)所謂的 ADT Link,通過菜單 Share Link 查看:
這種 Link 格式如下:
adt://AG3/sap/bc/adt/vit/wb/object_type/tabldt/object_name/ZORDER
通過 Open ADT Link 菜單,輸入上述 ADT Link,能直接打開對(duì)應(yīng)的資源,而不需要像 SAP GUI 那樣,需要先運(yùn)行正確的事務(wù)碼,進(jìn)入事務(wù)碼之后再打開資源。
(2) 自定義編輯器顏色
Jerry 和很多程序猿一樣,兩件 T 恤衫就能穿一個(gè)夏天:
然而對(duì)于自己每天都要使用八到十個(gè)小時(shí)的 IDE,其個(gè)性化裝扮是一點(diǎn)都不能含糊。
如何才能讓您的 IDE 和其他程序猿相比顯得與眾不同呢?一個(gè)辦法是個(gè)性化字體和背景色。比如 Jerry 的 SAP GUI 的個(gè)性化設(shè)置是這樣的,字體必須用程序猿專用的等寬開源字體 Inconsolata,這樣顯得比較專業(yè)。
SAP GUI 的顏色個(gè)性化設(shè)置稍顯麻煩,需要一項(xiàng)項(xiàng)手動(dòng)設(shè)置。而 ADT 因?yàn)槭腔?Eclipse,所以主題的個(gè)性化就容易多了。如果覺得下面的 dark 主題還不夠酷,
安裝一個(gè)名叫 Eclipse Color Theme 的插件,就可以使用這個(gè)插件預(yù)置好的幾十套主題,真正做到一年 54 周每周換一套了。程序猿衣著可以隨便,但 IDE 或者代碼編輯器決不能隨便。
感謝各位的閱讀,以上就是“怎么用 Eclipse 進(jìn)行 ABAP 開發(fā)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)怎么用 Eclipse 進(jìn)行 ABAP 開發(fā)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!