使用abapGit在ABAP On-Premises系統和SAP雲平台ABAP環境之間進行程式碼傳輸
- 2019 年 10 月 8 日
- 筆記
SAP ABAP顧問朋友們,應該都使用過SAPLink這個工具。如果兩個ABAP Netweaver系統沒有建立起傳輸路徑時,我們無法使用標準的SE10事務碼創建傳輸請求的方式進行這兩個系統間的程式碼傳輸。此時,SAPLink就有了用武之地。

SAPLink簡單地說就是一個報表和一系列插件的集合。如果我們期望在系統A和B之間傳輸程式碼,步驟為:
(1) 在系統A和B上都安裝SAPLink,其實也就是手動創建報表,然後從SAPLink的github上把源程式碼拷貝過來,激活即可:
https://github.com/sapmentors/SAPlink
(2) 在系統A上執行SAPLink,把想傳輸的程式碼導出成一個本地文件。
(3) 在系統B上執行SAPLink,將前一步生成的本地文件導入。

SAPLink的介紹文章,網路上太多了,本文不再贅述。
到了雲時代之後,SAP雲平台ABAP編程環境的程式碼版本管理,選擇了基於abapGit這個開源項目的GIT來進行。

下面跟著Jerry一起,通過一個簡單的例子來了解怎麼做吧。
Jerry這個例子的場景是,我在ABAP On-Premises系統AG3里,開發了一些ABAP程式碼。我想通過abapGit,把這些On-Premises系統上的ABAP程式碼導入到SAP Cloud Platform ABAP環境里。
(1) 首先到這個Github倉庫里找到abapGit的源程式碼,拷貝到On-Premises系統里。

激活之後運行報表,介面如下:

(2) On-Premises系統上的ABAP程式碼是無法直接推送到SAP雲平台 ABAP環境的,需要一個中轉站,即github.com上的程式碼倉庫。為此,Jerry新建一個程式碼倉庫:test-sap-abap-cloud.

(3) 回到On-Premises系統的abapGit報表,點擊工具欄的Online超鏈接,同第二步創建的Github倉庫建立關聯。

上圖的意思是我在On-Premises系統里新創建的開發包,$ZJERRYPACKAGE裡面的程式碼,會和github.com的test-sap-abap-cloud這個倉庫建立關聯。
因為我的開發包里尚未創建任何程式碼,所以此時abapGit里除了包描述XML文件外,沒有顯示任何和ABAP程式碼相關的資源文件。

(4) 現在我在On-Premises系統里隨便創建一個Hello World的報表:

回到On-Premises系統的abapGit,刷新,此時就能看見我剛剛創建的ABAP報表了。

和大家使用Mac或者Windows版本的Git客戶端一樣,我首先用abapGit把On-Premises系統創建的這個Hello World報表推送到github.com:

隨便維護一個推送注釋,比如the first commit from Jerry's abapgit:

成功推送完畢,現在github上的倉庫已經能看到剛剛推送的來自On-Premises系統的報表程式碼和推送注釋了:the first commit from Jerry's abapgit
https://github.com/i042416/test-sap-abap-cloud

(5) 現在我們可以把github.com倉庫里的程式碼導入到SAP雲平台ABAP環境了。給ABAP Development Tools安裝abapGit插件,地址為:eclipse.abapgit.org/updatesite

安裝完畢後,打開abapGit視圖:

登錄SAP Cloud Platform ABAP編程環境,點擊Link按鈕:

輸入github.com的倉庫地址:https://github.com/i042416/test-sap-abap-cloud

指定SAP雲平台ABAP環境里ZJERRY這個包存放來自github.com的ABAP程式碼:

當我們在abapGit視圖裡看到標記為Imported狀態的條目時,說明導入成功。然而,在SAP雲平台ABAP環境的開發包ZJERRY里,我並沒有看到On-Premises系統里的Hello World報表,這是怎麼回事呢?

原來,在SAP Cloud Platform ABAP環境里,能允許開發人員編寫ABAP程式碼的載體就只有下列五種,不支援On-Premises環境里通過SE38創建的ABAP報表。如果我們在On-Premises系統里創建一個ABAP類,通過本文介紹的步驟,是能夠順利導入SAP雲平台ABAP環境並可以繼續在其上開發的。

在SAP雲平台ABAP編程環境里,我們如果想模擬On-Premises環境SE38里創建的報表,可以通過創建實現了介面IF_OO_ADT_CLASSRUN的ABAP類來完成。
右鍵單擊這種類,選擇Run As ABAP Application(Console)即可。

希望本文能加深大家對下圖中通過GIT來進行SAP Cloud Platform ABAP環境中程式碼管理這一概念的理解,感謝閱讀。
