使用abapGit在ABAP On-Premises系統和SAP雲平臺ABAP環境之間進行代碼傳輸

2021-02-20 汪子熙

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系統裡,開發了一些ABAP代碼。我想通過abapGit,把這些On-Premises系統上的ABAP代碼導入到SAP Cloud Platform ABAP環境裡。

(1) 首先到這個Github倉庫裡找到abapGit的原始碼,拷貝到On-Premises系統裡。

https://github.com/larshp/abapGit

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

(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環境中代碼管理這一概念的理解,感謝閱讀。

更多閱讀

相關焦點

  • ABAP-MYMARK-雲代碼庫
    面對程序在不同的系統之間的遷移,你是否也有這樣那樣的煩惱,saplink不能找到程序的關聯gitabap不夠靈活
  • Jerry的ABAP原創技術文章合集
    Jerry的ABAP, Java和JavaScript亂燉這篇文章包含我多年來在SAP成都研究院使用ABAP, Java和JavaScript工作過程中的一些感悟: 三種語言裡一些具體技術點的橫向比較。
  • SAP ABAP守護進程(ABAP Daemon)的實現方式
    Linux系統很多服務都通過守護進程實現,常見的守護進程有系統日誌進程syslogd,web伺服器httpd,郵件伺服器sendmail和資料庫伺服器mysqld等。當時Jerry上這門專業課時,《暗黑破壞神II》在國內各大高校的戰網上正進行得如火如荼,Jerry也和其他暗黑愛好者一樣,天天在戰網上KB,KC, 刷暴躁外皮。
  • 如何在 SAP BTP 平臺 ABAP 編程環境裡消費基於 SOAP 的 Web Service
    SAP BTP 上的 ABAP 編程環境裡,我們仍然可以沿用 On-Premises 系統裡的 Destination 概念,在雲上的 ABAP 代碼裡,消費第三方的服務。區別在於 On-Premises 系統裡的 Destination 通過事物碼 SM59 創建,而雲上的 ABAP,則在 SAP BTP 控制臺裡創建 Destination 實例。具體步驟請參考 Jerry 之前的文章:SAP雲平臺上的ABAP編程環境裡如何消費第三方服務。
  • 在SAP雲平臺的CloudFoundry環境下消費ABAP On-Premise OData服務
    雲平臺的Neo環境下如何通過SAP Cloud Connector消費ABAP On-Premise系統裡的函數。在那篇文章demo程序的Java代碼裡,我們實際是通過JCO(Java Connector)來遠程調用ABAP On-Premise系統裡的函數。今天我們換個環境,試試SAP雲平臺的CloudFoundry環境。同時我們也試試換一種方式來消費ABAP On-Premise系統的服務。
  • SAP SAPLINK安裝ABAP2XLSX
    使用SAPLINK導入開源項目ABAPXLSX第一步:安裝SAPLINK第二步:SE38運行ZSAPLINK程序第三步:選擇導入Pakeage Name,並建議勾選Overwrite Originals;然後點擊按鈕打開Nugg文件第四步:選擇abap2xlsx-7.1.0\build\ABAP2XLSX_V_7_0_6 - 2016-
  • SAP AMDP介紹 - ABAP託管的HANA資料庫過程
    使用ABAP Development Tool, 我們可以選擇兩種不同的方式來實現資料庫過程。第一種,即本文標題提及的AMDP, 第二種為資料庫過程代理(Database Procedure Proxy), 不在本文討論範圍之內。AMDP, 顧名思義,即在ABAP層進行HANA資料庫過程的實現和生命周期(lifecycle)的管理。
  • 使用ABAP操作Excel的幾種方法
    作為ABAP應用開發人員,我們通過調用OLE對象的方法CALL METHOD, GET PROPERTY,SET PROPERTY等來訪問微軟Word和Excel的automation接口,代碼看起來像這樣:
  • webservice篇2 ABAP調用外部webservice實例
    wsdl:這個是我們這邊測試系統的地址8090是埠號10.4.64.19是伺服器地址  二、實施**前提:外部提供可用的web service,通常為連結2)輸入描述,選中message id 和 state management3)調用參數:URL輸入去掉?
  • ABAP vs Java, 蛙泳 vs 自由式
    具體例子可以看我的博客:Functional Programming – Try Reduce in JavaScript and in ABAPhttps://blogs.sap.com/2017/02/27/functional-programming-try-reduce-in-javascript-and-in-abap/另一方面,我的很多同事戲稱
  • ABAP程序鎖
    SAP提供了兩個函數來解決程序運行時的同步鎖定問題:ENQUEUE_ES_PROG 和
  • 一個13年ABAP老兵的建議:了解這些基礎知識,對ABAP開發有百利而無一害
    在Jerry之前的圖片推送中,我提到了SAP社區上這樣一篇博客:Proof of Concept: Deploying ABAP in Kuberneteshttps://blogs.sap.com/2020/02/06/proof-of-concept-deploying-abap-in-kubernetes
  • ABAP中讀取EXCEL中不同的SHEET數據
    * Get TAB-sign for separation of fields  CLASS cl_abap_char_utilities DEFINITION LOAD.  ld_separator = cl_abap_char_utilities=>horizontal_tab.
  • 財務開發必備ABAP語法之 DO VARYING
    " 功能按鈕lr_functions = i_table->get_functions( ).lr_functions->set_all( abap_true )." 列自適應lr_columns = i_table->get_columns( ).lr_columns->set_optimize( 'X').
  • 不喜歡SAP GUI?那試試用Eclipse進行ABAP開發吧
    簡單地說,SAP對Eclipse做了擴展,開發了一些插件,使得開發人員能使用Eclipse完成部分以前在SAP GUI裡進行的ABAP開發工作。本文不去重複網上和SAP幫助文檔裡對ADT的介紹,而是介紹一些Jerry的原創內容。Jerry曾經寫過一篇文章 那些年我用過的SAP IDE, 裡面也提到了ADT。
  • SAP Fiori系統配置之權限角色
    /ui2/flp/index.html• https://<server>:<port>/sap/bc/ui2/flp/FioriLaunchpad.html配置SAP Fiori Launchpad登錄界面最後一步是配置 SAP Fiori Launchpad和SAP Fiori Launchpad
  • SAP ABAP和Salesforce APEX
    Salesforce 一創業,就是像一個電子商務網站一樣是公共訪問的,可以註冊試用,可以綁定信用卡購買(和亞馬遜電子商務購物一樣),可以多租戶使用(和亞馬遜電子商務購物一樣),可以BBS問答。Salesforce 一創業,用的技術就是最前沿的:Java開發語言、WebService API、Oracle資料庫。Salesforce 2004年上市。
  • 全網最稀缺 SAP MDG模塊 初識
    所以針對MDG的操作都是在web上進行操作,打開web的事務代碼為:NWBC,前提是需要進行激活,如下是最重要的配置頁推薦把所有的workflow task配置這個分配設置,不推薦傳輸該配置,應該去每個client和系統手動進行分配。推薦每天刷新工作流緩存,以防任何工作流配置發生了變化,T-Code為SWU_OBUF。
  • ABAP DEMO篇24 批量更改BOM組件
    DATA: ls_key TYPE wwwdatatab,lv_temp TYPE c,lv_file TYPE string VALUE '\ZP101.xlsx',lv_filepath TYPE rlgrap-filename,lv_result TYPE abap_bool,lv_path TYPE string,lv_msg TYPE