1. 程式人生 > >那些年我用過的SAP IDE

那些年我用過的SAP IDE

sap abap Android IDE Eclipse

在Google上根據關鍵字”程序員鄙視鏈”搜索,會得到68多萬條結果。

技術分享圖片

玲瑯滿目的搜索結果裏是眾多不同維度劃分的鄙視鏈。

其中有一個維度,就是編程工具的鄙視鏈,比如:

技術分享圖片

而我在SAP做的所有開發都用的是IDE而不是text editor,看來我也免不了處於鄙視鏈末端的結局了。

這篇文章我想介紹一些我用過的SAP IDE的周邊。希望您看了之後有些許收獲。而像Eclipse, Visual Studio這些IDE在SAP圈子外使用也更加廣泛,所以本文不再提及。

本文裏提到的所有IDE都是基於Windows版本的,這使得我又一次被鄙視了:使用Mac OS的程序猿鄙視使用Windows OS的程序猿。

我在SAP工作期間用過的IDE清單如下:(名稱不包含SAP則說明該IDE不是由SAP開發出來的)

  • SAPGUI
  • SAP ABAP Development Tools
  • SAP Cloud Application Studio
  • SAP WebIDE(codepen, jsbin)
  • Sublime Text(文本編輯器)
  • Android Studio(Cloud9)
  • VirtualBox + Putty

SAPGUI

SAPGUI是所有ABAPer養家糊口的工具,見證了SAP從只有5個員工的無名之輩走向企業管理軟件巔峰的輝煌之路。從嚴格意義上講,SAPGUI不僅僅是個IDE,也是很多使用SAP傳統管理軟件的業務人員們每天工作使用的工具。有個段子就是某同事去蘇寧買電器,在櫃臺結賬時,銷售小妹說,”您等等, 現在系統有問題,下不了單。” 該同事走上前去看了看屏幕說,”喲,出error啦?讓我F1看看錯誤明細,再看看/h能不能用。” 用過SAPGUI的讀者一定明白我在說什麽。

技術分享圖片

本文我盡量分享一些我的原創以及並非每位朋友都知道的一些小技巧。

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的細節可以參考我的另一篇公眾號文章:

Jerry的通過CDS view + Smart Template 開發Fiori應用的blog合集

技術分享圖片

如果只是寫一些小的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的原創技術文章,請關註公眾號"汪子熙"或者掃描下面二維碼:

技術分享圖片

技術分享圖片

那些年我用過的SAP IDE