日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP云平台上的ABAP编程环境里如何消费第三方服务

發布時間:2023/12/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP云平台上的ABAP编程环境里如何消费第三方服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在ABAP On-Premises環境下,使用ABAP編程消費第三方服務,相信很多ABAP顧問都已經非常熟悉了,無非就是使用CL_HTTP_CLIENT或者CL_REST_HTTP_CLIENT來發送和接收HTTP請求。

下圖這短短的38行代碼,展示了如何使用ABAP工具類CL_HTTP_CLIENT去訪問百度首頁并拿到回復。

從百度返回的響應,通過方法GET_CDATA獲得,存儲于變量rv_data內:

當然如果我們是做正式的產品開發的話,一般不會把第三方服務的URL硬編碼在應用程序里,而是通過事務碼SM59創建的Destination管理第三方服務的endpoint,然后把Destination名稱存儲于配置表里,這樣使得第三方服務的URL同應用代碼解除耦合關系。

下圖是一個例子,我在SM59事務碼里維護了一個指向某C4C系統的Destination,取名為C4C:

然后在ABAP代碼里使用cl_http_client=>create_by_destination創建HTTP工具類的實例。后續操作同使用cl_http_client=>create_by_url構造實例的代碼一致,這里不再重復。

如果我們直接把On-Premises環境下的這些ABAP代碼搬到SAP Cloud Platform的ABAP環境里,會遇到很多語法錯誤:

原因在Jerry的第一篇介紹SAP云平臺ABAP編程環境的文章 在SAP云平臺ABAP編程環境上編寫第一段ABAP程序 里就已經提到,云端的ABAP編程模型支持的只是ABAP編程語言的一個子集,我們只能使用SAP開放的白名單里的資源,這個白名單即上圖左邊Released Objects里面包含的內容。

因為Jerry在On-Premises環境里使用過的CL_HTTP_CLIENT, CL_REST_HTTP_CLIENT, IF_HTTP_CLIENT等ABAP類和接口均不在白名單內,故無法在ABAP云端環境使用。

既然在云端了,我們就得使用云端的編程范式。

Jerry去年的文章使用Java+SAP云平臺+SAP Cloud Connector調用ABAP On-Premise系統里的函數 里曾經介紹過運行在云端的Java應用如何通過SAP云平臺上創建的Destination來調用ABAP On-Premises系統里的RFC函數。如今我們在云上運行的應用的編程語言從Java換成了ABAP,然而借助Destination進行第三方服務調用的思路仍然不變。

Jerry先把正確答案公布出來,在SAP Cloud Platform ABAP編程環境訪問第三方服務的代碼如下:

可以看到其思路就是通過CL_HTTP_DESTINATION_PROVIDER這個云端的Destination工廠類,拿到Destination實例,然后基于該實例創建云端上的ABAP HTTP客戶端實例。工廠類生產Destination實例需要兩個參數:

  • i_name
  • i_service_instance_name

根據這個方法的接口注釋,這兩個參數分別為Destination的名稱和Service instance的名稱。下面Jerry介紹如何獲得這兩個參數的值。

在SAP Cloud Platform Service Marketplace里創建一個新的Destination實例:

我們把新建的實例取名為DestService,然后再基于該實例創建一個Destination配置,這個配置就好比我們在ABAP On-Premises的SM59事務碼里創建的Destination:

Destination我取名為ZJERRY_API, 這就是前面提到的工廠方法里第一個參數i_name值的由來。

點擊Check Connection,確保該Destination指向的URL可以訪問:

然后點擊Open Dashboard,打開這個SAP Cloud Platform ABAP實例的Fiori界面:

點擊Launchpad tile,創建一個新的Communication Arrangements:

需要為新建的Communication Arrangement選擇一個Communication Scenario,這里我選擇SAP標準發布的專門用于CloudFoundry環境同第三方服務進行集成的場景,ID為SAP_COM_0276:

創建Communication Arrangement時還要維護Service Key信息:

這個Service Key的信息可以從Destination實例列表的Service Key維護界面獲得:

在創建好的Communication Arrangement里,維護Service Instance Name的值為jerry-service-instance, 這也就是ABAP代碼里傳給工廠方法的第二個參數。

執行這個ABAP類:

獲得期望的輸出:

感謝閱讀。

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

總結

以上是生活随笔為你收集整理的SAP云平台上的ABAP编程环境里如何消费第三方服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。