使用Java+SAP雲平臺+SAP Cloud Connector調用ABAP On-Premise系統裏的函數

最近Jerry接到一個原型開發的任務,須要在微信裏調用ABAP On Premise系統(SAP CRM On-Premise)裏的某些函數。具體場景和我以前的公衆號文章 Cloud for Customer和微信集成系列教程 描述的場景相似。git

區別之處在於Cloud for Customer(C4C)是一個雲解決方案,其OData Service/Web Service可以直接被Internet網絡上的其餘應用消費。而我最近要作的原型開發,須要消費的函數位於部署在Corporate Network裏的ABAP On-Premise系統裏,沒法直接被Internet應用消費。github

爲了確保Internet應用可以訪問Corporate Network系統裏的服務,咱們須要用到SAP Cloud Connector, 做爲一個溝通橋樑。瀏覽器

這篇文章我假設的場景是:開發一個Java Web應用,部署在SAP Cloud Platform(雲平臺)上。用戶在手機微信裏訪問該應用,調用ABAP On-Premise系統裏的函數。微信

這個場景的主要實現步驟:網絡

  1. 下載安裝並配置Cloud Connector。Cloud Connector須要和ABAP On-Premise系統一樣位於Corporate Network。架構

  2. 在SAP雲平臺上完成必要配置,同Cloud Connector創建鏈接。函數

  3. 開發Java Web應用,部署到SAP雲平臺。測試

架構圖以下所示。url

下面是詳細步驟介紹。操作系統

1. Cloud Connector的安裝與配置

下載地址

安裝完成後啓動Cloud Connector,確保在操做系統的服務列表裏看到Cloud Connector對應的服務:

Cloud Connector的登陸界面:

新建一個Connector實例,我命名爲Jerry_SCC。Region和Subaccount須要指定成須要鏈接的SAP雲平臺的對應字段,這樣才能將該Connector實例同對應的SAP雲平臺創建關聯關係。

Connector實例建立並保存後,以下圖所示。點擊下圖左邊Jerry_SCC下面的菜單"Cloud To On-Premise":

在這個界面建立從虛擬系統(virtual system)到ABAP On-Premise系統的一個映射關係。我建立的虛擬系統名稱爲my-backend-system, 映射到一個SAP內部ABAP系統AG3。訪問協議(Protocol)指定爲RFC。點擊檢查按鈕,若是ABAP系統的信息維護無誤,該ABAP系統的狀態會被標記爲Reachable(可訪問)。

Function Name爲STFC,Naming Policy爲Prefix,意爲AG3系統裏全部以STFC開頭的函數均能經過該Connector實例被訪問。

至此Cloud Connector配置完成。

2. SAP雲平臺上的配置

前一步Cloud Connector配置完成後,在SAP雲平臺的Cloud Connectors標籤頁就能看到配置好的實例了。 這一步須要在SAP雲平臺上建立一個Destination以便Java程序使用。這個Destination和ABAP Netweaver事務碼SM59建立的Destination做用類似。

仿照下圖的設置建立一個Destination。個人Destination名稱爲my-backend-system-destination, 這個Destination會在下一步被Java應用消費。注意User和Password須要維護成ABAP On-Premise系統對應的用戶名和密碼。

點擊按鈕Check Connection,確保該Destination工做正常。

3. 開發Java應用,使用第2步建立的Destination

該Java應用的所有源代碼在個人github上:

這裏只講解核心代碼:

(1) 第28行根據Destination名稱拿到其實例,名稱在第2步SAP雲平臺的配置裏指定。 (2) 第31行,拿到ABAP函數STFC_CONNECTION的句柄。 (3) 第35行,拿到用戶從瀏覽器url裏傳進來的輸入值。 (4) 第38行,將從第35行拿到的用戶輸入賦給STFC_CONNECTION的輸入參數REQUTEXT。 (5) 第42行,執行ABAP函數。 (6) 第45, 46行,獲得ABAP函數執行結果。

將這個Java應用從Eclipse部署到SAP雲平臺。具體步驟參考個人知乎文章:

使用Eclipse開發Java應用並部署到SAP雲平臺

在微信裏測試一下:

輸出:

在ABAP系統的STFC_CONNECTION函數體內設置斷點,在ABAP調試器裏也能觀察到從微信傳進來的用戶輸入:

我在個人知乎專欄上寫了不少關於SAP雲平臺的文章,歡迎關注。

要獲取更多Jerry的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼:

相關文章
相關標籤/搜索