在Google上根據關鍵字」程序員鄙視鏈」搜索,會獲得68多萬條結果。前端
玲琅滿目的搜索結果裏是衆多不一樣維度劃分的鄙視鏈。java
其中有一個維度,就是編程工具的鄙視鏈,好比:git
而我在SAP作的全部開發都用的是IDE而不是text editor,看來我也免不了處於鄙視鏈末端的結局了。程序員
這篇文章我想介紹一些我用過的SAP IDE的周邊。但願您看了以後有些許收穫。而像Eclipse, Visual Studio這些IDE在SAP圈子外使用也更加普遍,因此本文再也不說起。github
本文裏提到的全部IDE都是基於Windows版本的,這使得我又一次被鄙視了:使用Mac OS的程序猿鄙視使用Windows OS的程序猿。web
我在SAP工做期間用過的IDE清單以下:(名稱不包含SAP則說明該IDE不是由SAP開發出來的)數據庫
SAPGUI編程
SAPGUI是全部ABAPer養家餬口的工具,見證了SAP從只有5個員工的無名之輩走向企業管理軟件巔峯的輝煌之路。從嚴格意義上講,SAPGUI不只僅是個IDE,也是不少使用SAP傳統管理軟件的業務人員們天天工做使用的工具。有個段子就是某同事去蘇寧買電器,在櫃檯結帳時,銷售小妹說,」您等等, 如今系統有問題,下不了單。」 該同事走上前去看了看屏幕說,」喲,出error啦?讓我F1看看錯誤明細,再看看/h能不能用。」 用過SAPGUI的讀者必定明白我在說什麼。json
本文我儘可能分享一些個人原創以及並不是每位朋友都知道的一些小技巧。ubuntu
2013年的時候,我看到SAP社區上有些朋友在討論SAPGUI command line這些用過的事物碼列表是存儲在什麼地方的:
獲得的答案是,若是是Windows系統,則存儲在操做系統的註冊表裏:
具體討論見以下連接:
https://blogs.sap.com/2013/10/07/where-does-tcodes-on-command-line-gets-stored/
當時我以爲比較有意思,而後想知道有沒有一個通用且快速的辦法,找到SAPGUI裏任意一個設置,是存儲在註冊表裏具體哪一個位置的。
一樣是2013年,我寫過一篇博客:Six kinds of debugging tips to find the source code where the message is raised
需求就是在SAPGUI裏看到一條錯誤信息,怎樣用六種不一樣的辦法找到具體是哪一行ABAP代碼拋出的這條錯誤信息。最後一種使用ST05跟蹤的思路也適用於如今討論的如何查找SAPGUI的配置在Windows操做系統註冊表裏的具體存儲位置:
1. 在修改SAPGUI配置以前,將註冊表導出存爲A;
2. 修改SAPGUI配置,而後將註冊表導出存爲B;
3. 用工具比較A和B差別,便可得到該配置在註冊表裏存儲的位置。
我最先遇到須要將SAPGUI裏某段ABAP代碼導出成PDF格式時,老是先新建一個word文檔,在ABAP代碼上Ctrl C而後Ctrl V到word文檔,最後把word文檔轉換成PDF。
其實SAPGUI裏自帶一鍵將代碼導出成PDF的功能。只須要在下圖配置裏給導出PDF功能分配對應的快捷鍵:
而後就可一鍵保存成PDF:
值得一提的是,由於SAPGUI裏的全部事物碼也是經過ABAP開發的,包括用來作開發的事物碼SE80自己。所以這些事物碼自己也是能夠經過ABAP進行加強的。
好比我在SE80的開發對象類型裏,自定義了一種新的名稱爲」Jerry’s Product」的開發對象類型,可以像其餘全部開發對象同樣,經過右鍵菜單進行建立:
新建一個開發對象的實例,維護名稱:
實例建立成功以後,能在SE80裏繼續維護其餘明細:
再好比假若您對SAPGUI裏ABAP編輯器標準的ABAP語法檢查不太滿意,想對其作加強,這固然是能夠的。具體步驟參考個人博客:Implement Custom Syntax Check in SAPGUI
這種語法加強的一個應用例子,能夠參考我公衆號文章 Jerry的ABAP, Java和JavaScript亂燉 裏提到的博客:Covariance in Java and simulation in ABAP.
我寫這篇博客的背景是爲SAP成都研究院的一個內部技術培訓準備培訓材料。該文首先介紹了Covariance和Contravaariance的概念,而後描述了Covariance在Java裏的實現,最後給出了我在ABAP裏對於Covariance的一個模擬實現,以及如何加強ABAP編輯器的語法檢查使其可以自動檢測出違反了Covariance規範的代碼。
我記得在2011年的時候,WebIDE的概念比較火,WebIDE使得開發者只須要一個瀏覽器就能夠編寫代碼,並在WebIDE 提供的終端環境中運行。
當時我就以爲很囧, 由於相似WebIDE的概念,其實SAPGUI在很早很早以前就支持了。SAP Netweaver裏有個模塊叫SAP Internet Trasaction Server,能讓SAPGUI裏的流程運行於瀏覽器裏。關於這個模塊的詳細介紹,請參考SAP幫助文檔: SAP ITS in SAP NetWeaver Application Server
舉個例子:我能夠把SAPGUI裏的SE80放到Fiori的Launchpad裏,
點擊該Tile,能直接在瀏覽器裏使用SE80。以下圖所示:
只須要一些簡單的配置便可實現上述效果,具體步驟見我博客:Open your SAP GUI transaction in Fiori launchpad
原理介紹見個人另外一篇博客:How is old SAP GUI transaction embedded into Fiori launchpad
文內也提到S/4HANA裏有大量的Fiori tile使用到了這種技術,即經過ITS的方式,讓很古老的一些事務碼好比MM01繼續在瀏覽器裏運行。下面第一張圖是SAPGUI裏使用事務碼MM01打開的物料建立頁面,第二張圖是該事務碼經過ITS運行在瀏覽器裏的截圖。
能夠看出這兩個頁面的佈局徹底一致。
再回到IDE這個話題,直接經過個人上述博客提到的方式在瀏覽器裏運行SE80,其實不能算嚴格意義上的WebIDE,由於缺少語法高亮。
這種侷限在S/4HANA裏獲得了改善。S/4HANA裏有個應用叫作Custom Logic,能容許咱們直接在瀏覽器裏編輯ABAP代碼,支持語法高亮顯示,以下圖所示:
我不久前剛剛研究過ABAP的語法高亮顯示是怎麼在Chrome瀏覽器裏實現的。若是您對此技術細節感興趣,請參考個人博客:How ABAP syntax highlight is implemented in WebIDE launched via browser
SAP ABAP Development Tools
之前SAP內部喜歡把這個IDE稱爲ABAP in Eclipse。如今的官方叫法是ABAP Development Tools。實質上就是SAP在Eclipse上以插件(plugin)的方式作了一些擴展。
不少具備Java開發經驗的朋友們都喜歡用ABAP Development Tools進行ABAP開發。我在2014年時,曾經研究過ABAP Development Tool這個IDE的Java實現代碼,是如何經過RFC(Remote Function Call)調用到ABAP後臺的。
分析的關鍵是使用IDE裏這個log功能:
ABAP Development Tools的後臺實現細節請參考我博客: An example to help you understand how does ADT work
而IDE端的Java實現細節,能夠將安裝目錄的plugins文件夾下的.class文件反編譯出來自行學習:
SAP HANA Studio
和ABAP Development Tools同樣,HANA Studio也是基於Eclipse的IDE,只是其擁有的SAP自開發的plugin和ABAP Development Tools有所區別。由於須要在此IDE裏鏈接SAP HANA數據庫,所以大多plugin都以命名空間com.sap.ndb.studio開頭。這裏的ndb其實是HANA剛剛誕生時的SAP內部名稱: New DB的縮寫。
既然是基於Java實現的plugin去鏈接HANA數據庫,必然少不了JDBC。在HANA Studio裏的大多數操做都會使用到com.sap.ndb.studio.jdbc這個plugin:
其實現代碼也是能夠將plugin文件夾裏的.class文件反編譯出來查看。
SAP Cloud Application Studio
SAP Business by Design和SAP Cloud for Customer的Partners使用該IDE進行二次開發。
該IDE基於Visual Studio Shell開發,與後者的關係相似於SAP ABAP Development Tools / SAP HANA Studio和Eclipse的關係。我於2011年到2012年參與了該IDE的開發,使用的編程語言是C#。
Cloud Application Studio工做原理和ABAP Development Tools相似,在C#端經過RFC調用ABAP後臺暴露出的API。
例如在IDE裏選擇了右鍵菜單的Activate以後,
會執行下圖C#代碼中的ActivateContent函數進行ABAP後臺對應資源的激活處理。而圖中的C#代理類PDI_RI_CONTENT_ACTIVATE, 對應了ABAP後臺的同名函數。一旦圖中最後一行代碼jsonClient.callFunctionModule(proxy)執行,ABAP後臺函數PDI_RI_CONTENT_ACTIVATE就會被遠程調用。
SAP WebIDE
我2014年到2016年作Fiori產品開發用的就是這個IDE。更多關於這個WebIDE的細節能夠參考個人另外一篇公衆號文章:
若是隻是寫一些小的Web程序,我也喜歡用一些其餘的工具,好比CodePen https://codepen.io:
或者jsbin。這些工具都支持開發人員直接在瀏覽器裏編碼並運行,很是方便。
個人Cloud for Customer開發同事們也喜歡用Atom和WebStorm進行前端開發。
Sublime Text(文本編輯器)
該文本編輯器的一大特點是提供了很是簡易的方式讓編程人員自行開發能提高本身工做效率的插件。做爲一個例子,您能夠參考個人博客:Step by Step to develop your own Sublime Text plugin
Sublime Text另外一個我很喜歡的功能是它也具備支持ABAP語法高亮顯示的插件:您能夠經過這個連接得到.
Android Studio
用於SAP Cloud for Customer移動端Android平臺。做爲Android的腦殘粉,平時寫一些Android小程序,我不會打開相對比較笨重的Android Studio,而使用一些Android WebIDE,好比Cloud9:
VirtualBox + Putty
這個組合其實不能算IDE了,極大的提高了我平常工做的效率。VirtualBox裏安裝的ubuntu默認配置下的console模式存在一些讓我以爲使用起來不太方便的地方,好比不支持來自windows OS的複製粘貼,不支持自定義字體類型和大小等等,然後者對我來講相當重要。
因而,我會選擇先用VirtualBox啓動ubuntu實例,而後再用Putty遠程登陸上去,以後全部對ubuntu的操做都在Putty裏完成。而Putty裏是支持複製粘貼,自定義字體等等。
下圖是VirtualBox原生的ubuntu console截圖。
下圖是用Putty遠程登陸ubuntu以後的操做界面。
經過比較能發現,在Putty裏我將字體類型改爲了個人最愛Inconsolata,大小改爲了20。有的朋友可能以爲其實兩張圖看起來都差很少。好吧,做爲一個程序猿,天天看着這些界面的時間比對着老婆的時間還長,多花些心思把這些界面設置成本身看起來最順眼的樣子,有助於確保我始終帶着溫馨的心情去編程。
固然,SAP有着衆多的產品線,也就存在着形形色色的開發工具。一個程序員不可能接觸到全部的開發工具。本文僅僅列出了我工做中使用到的一些IDE,感謝閱讀。 要獲取更多Jerry的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼: