不喜歡SAP GUI?那試試用Eclipse進行ABAP開發吧
Jerry和SAP成都研究院一些新同事聊天時,談到ABAP和SAP GUI這個話題。很多新同事在加入SAP成都之前,是做Java和C++開發的,習慣了Eclipse/IntelliJ IDEA/Visual Studio這些現代IDE,對於SAP GUI這個比較”復古“的IDE不太適應。
其實還有一個選擇:ABAP Development Tools,最初在SAP內部稱為ABAP in Eclipse。這個工具SAP在很多場合簡稱為ADT,本文後續部分也使用這個簡稱。
簡單地說,SAP對Eclipse做了擴充套件,開發了一些外掛,使得開發人員能使用Eclipse完成 部分 以前在SAP GUI裡進行的ABAP開發工作。
本文不去重複網上和SAP幫助文件裡對ADT的介紹,而是介紹一些Jerry的原創內容。
Jerry曾經寫過一篇文章 那些年我用過的SAP IDE , 裡面也提到了ADT。本文對其做詳細介紹。
文章目錄
1. ADT的工作原理
2. SAP GUI和ADT的關係
3. ADT相比SAP GUI具有的一些獨到之處
4. ADT其他一些值得一提的小功能
下面是正文。
1. ADT的工作原理
很多從Eclipse做Java開發的朋友轉到ADT後,最大的不習慣就是ADT沒辦法離線使用。即使是用SAP雲平臺Neo程式設計環境裡的SDK,開發人員也可以在本地完成開發後,使用命令列或者Eclipse Run As選單將其釋出到SAP雲平臺上。然而這種用法對於ADT來說行不通,因為後者仍然是一個 Client / Server 模式中的Client端。從本質上講,和SAP GUI的區別,僅僅體現在對Netweaver伺服器上開發資源的展示和操作方式有所差異罷了。
正因為這種 CS 架構,每次我們在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後臺框架其他處理邏輯的互動如下圖所示:
關於這些HTTP的請求和響應明細,請參考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裡對ABAP原始碼做語法檢查,實際上就是把整段程式碼做一個Base64編碼,然後透過HTTP Post傳送到後臺,由後臺執行對應的檢查函式,結果透過HTTP響應返回給ADT前端。
相應的,如果對ADT的前臺Java程式碼感興趣,請移步ADT安裝目錄下的plugins資料夾,把裡面的jar包反編譯出來閱讀原始碼即可。
2. SAP GUI和ADT的關係
Jerry的個人觀點是: 二者互為補充 。
一方面,對於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裡進行。
這就是Jerry在這一小節標題裡提到 SAP GUI和ADT互為補充 的含義:即便使用了ADT,也不意味著能和SAP GUI說再見——很多傳統的ABAP開發仍然需要在SAP GUI裡進行,哪怕是作為一個視窗嵌入在ADT裡。
使用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型別是什麼?經過Jerry測試,答案是 User Session 。
下圖是ADT裡開啟的兩個標籤和其對應的兩個User Session,用不同顏色來區分。
3. ADT和SAP GUI相比一些獨到之處
既然是一個基於Eclipse的IDE,ADT和SAP GUI相比還是存在一些獨到之處。
(1) 由於ADT是基於Eclipse這個較之SAP GUI來說更加現代的IDE,從使用習慣上來說更貼近Java/C++程式設計師。
以ABAP類為例,各個維度的資訊在ADT裡能在一個螢幕裡同時顯示,在SAP GUI裡一個螢幕顯示的資訊維度很單一,如果想看其他維度資訊,只有透過雙擊的方式跳轉,檢視完畢後透過回退鍵回到正在工作的介面。
又比如所有新增了關注的系統的ST22資訊能在一個地方統一監控了,Jerry再也不需要自己開發工具實現了:
(2) ADT提供了很多程式碼重構的嚮導(Assistant), Java和C++的開發人員對這些類的重構功能一定不會陌生。
Delete unused variables:
快速刪除一個方法裡所有定義了但未使用的區域性變數,這個功能很實用,SAP GUI不支援。
**Extract Methods: **如果一段程式碼反覆出現,可以考慮用重構技術裡的方法提取,將其封裝成一個方法。
當然還在使用SAP GUI的開發人員要使用ABAP重構嚮導也是可以的, 根據SAP GUI版本的不同, 入口也稍有差異。
在Jerry的SAP GUI 740版本里,重構嚮導透過Utilities選單進入。
740之前的版本,重構嚮導的開啟方式大同小異:
(3) 對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裡的沒有差別。
(4) 方便的SQL console功能。
以前在SAP GUI裡時,有時出於測試目的想寫些簡單的SQL語言做些驗證,還得建立一個報表然後在報表裡書寫。在ADT裡,直接使用SQL console就可省去不必要的報表建立:
(5) 改進的程式碼版本比較功能
Jerry之前的公眾號文章 我用ABAP做過的那些無聊的事情 提到,有的朋友覺得SAP GUI裡自帶的程式碼比較工具不是很好用:
如今在ADT裡,ABAP開發人員終於可以像Java程式設計師一樣,享受Eclipse提供的便利的程式碼版本比較功能了:
4. ADT其他一些值得一提的小功能
(1) 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那樣,需要先執行正確的事務碼,進入事務碼之後再開啟資源。
(2) 自定義編輯器顏色
Jerry和很多程式猿一樣,兩件T恤衫就能穿一個夏天:
然而對於自己每天都要使用八到十個小時的IDE,其個性化裝扮是一點都不能含糊。
如何才能讓您的IDE和其他程式猿相比顯得與眾不同呢?一個辦法是個性化字型和背景色。比如Jerry的SAP GUI的個性化設定是這樣的,字型必須用程式猿專用的等寬開源字型 Inconsolata ,這樣顯得比較專業。
SAP GUI的顏色個性化設定稍顯麻煩,需要一項項手動設定。而ADT因為是基於Eclipse,所以主題的個性化就容易多了。如果覺得下面的dark主題還不夠酷,
安裝一個名叫 Eclipse Color Theme 的外掛,就可以使用這個外掛預置好的幾十套主題,真正做到一年54周每週換一套了。 程式猿衣著可以隨便,但IDE或者程式碼編輯器決不能隨便 。
總結
說了這麼多,Jerry並不是在推銷ADT,在我心中SAP GUI和ADT都是優秀的IDE,各有優缺點。我覺得網上流傳的程式猿IDE和工具的鄙視鏈很無聊,與其有時間去鄙視別人,不如把這時間用來深入研究自己每天用的IDE,進一步提高自己單位時間內的工作效率。
祝大家都能愉快地使用SAP GUI和ADT,做到得心應手。感謝閱讀。
更多閱讀
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2216848/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 不喜歡 IDE?試試看 grepgitviIDEGit
- Amica:調查顯示男人不喜歡用洗衣機 女人不喜歡用iPhoneiPhone
- Taro UI開發小程式實現左滑喜歡右滑不喜歡效果UI
- 採用測試驅動開發理念(Test Driven Development)進行 SAP UI5 應用的功能開發(一)devUI
- 採用測試驅動開發理念(Test Driven Development)進行 SAP UI5 應用的功能開發(二)devUI
- 在 SAP ABAP 系統對事物碼 SEGW 建立的 OData 服務進行配置並測試試讀版
- 還在用ABAP進行SAP產品的二次開發?來了解下這種全新的二次開發理念吧
- 使用QTP進行非GUI的自動化測試QTGUI
- 大家平時都喜歡使用哪套cms來進行開發呢?
- 使用SAP API portal進行SAP SuccessFactors的API測試API
- 試用環境開發環境不發郵件開發環境
- 我不喜歡的行為之工作版
- 如何把本地開發的 SAP UI5 應用部署到 ABAP 伺服器上試讀版UI伺服器
- 使用eclipse 進行 Cesium 開發Eclipse
- Windows終端好難用?試試gitbash吧!WindowsGit
- 【星雲測試】開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 開發者測試(2)-採用精準測試工具對J2EE Guns開發框架進行測試框架
- 還是更喜歡 java 和 eclipseJavaEclipse
- SAP ABAP 系統進行資料庫表查詢的幾種常用方法的試讀版資料庫
- 是否使用TDD(測試驅動開發)進行UI開發UI
- 使用 SAP ABAP Memory Inspector 對應用程式消耗記憶體進行檢測時常犯的錯誤試讀版記憶體
- 使用jMeter對基於SAP ID service進行Authentication的Restful API進行併發測試JMeterRESTAPI
- 使用 Postman 工具高效管理和測試 SAP ABAP OData 服務試讀版Postman
- 為什麼客戶不喜歡我們開發的軟體
- 測試前奏 之 Robotium使用Eclipse和ADT對apk進行黑盒測試EclipseAPK
- 做程式設計師喜歡的測試人員程式設計師
- 程式設計師不喜歡開放式辦公室程式設計師
- 利用Jscrīpt進行簡單的GUI自動化測試JSGUI
- 用Flutter實現一個仿“探探”的左右滑動選擇喜歡/不喜歡的效果Flutter
- 谷歌不喜歡 Node.js ? 聽聽開發團隊怎麼說谷歌Node.js
- 你確定你能記住那麼多的git命令嗎?快試試Sourcetree吧Git
- 採用 OPA5 進行 SAP UI5 整合測試(Integration Test)的一個例子試讀版UI
- 【星雲測試】開發者測試-採用精準測試工具對Spring Boot應用進行測試Spring Boot
- 【星雲測試】開發者測試-採用精準測試工具對SpringBoot應用進行測試Spring Boot
- 原來Oracle也不喜歡“蜀黍”Oracle
- 我為什麼不喜歡框架框架
- 開發者測試-採用精準測試工具對Spring Boot應用進行測試Spring Boot
- 在 [slim] 中偽造 Request 來進行你的 HTTP 測試吧HTTP