1. 程式人生 > >使用Java+SAP雲平臺+SAP Cloud Connector調用ABAP On-Premise

使用Java+SAP雲平臺+SAP Cloud Connector調用ABAP On-Premise

sap sap雲平臺 cloudFoundry abap cloudConnector

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

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

為了確保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雲平臺。

架構圖如下所示。

技術分享圖片
下面是詳細步驟介紹。

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

技術分享圖片

技術分享圖片

使用Java+SAP雲平臺+SAP Cloud Connector調用ABAP On-Premise