使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

i042416發表於2018-05-18

最近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雲平臺。

架構圖如下所示。

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

下面是詳細步驟介紹。

1. Cloud Connector的安裝與配置

下載地址

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

安裝完成後啟動Cloud Connector,確保在作業系統的服務列表裡看到Cloud Connector對應的服務:


使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

Cloud Connector的登入介面:

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

新建一個Connector例項,我命名為Jerry_SCC。Region和Subaccount需要指定成需要連線的SAP雲平臺的對應欄位,這樣才能將該Connector例項同對應的SAP雲平臺建立關聯關係。

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

Connector例項建立並儲存後,如下圖所示。點選下圖左邊Jerry_SCC下面的選單"Cloud To On-Premise":


使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP 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例項被訪問。

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

至此Cloud Connector配置完成。

2. SAP雲平臺上的配置

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

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

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

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

點選按鈕Check Connection,確保該Destination工作正常。

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

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+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

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

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

在微信裡測試一下:

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

輸出:

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

在ABAP系統的STFC_CONNECTION函式體內設定斷點,在ABAP偵錯程式裡也能觀察到從微信傳進來的使用者輸入:

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

我在我的知乎專欄上寫了很多關於SAP雲平臺的文章,歡迎關注。

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

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

使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式
使用Java+SAP雲平臺+SAP Cloud Connector呼叫ABAP On-Premise系統裡的函式

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2154719/,如需轉載,請註明出處,否則將追究法律責任。

相關文章