如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service
這是 Jerry 2021 年的第 47 篇文章,也是汪子熙公眾號總共第 324 篇原創文章。
Jerry 2014 年時,曾經在 SAP 社區上寫過一篇英文博客,介紹了如何在 ABAP On-Premises 系統里,創建和消費 Web Service:
Step by step to create, consume and trace web service in ABAP system
這篇文章的中文版,請移步這個鏈接:
最詳細的 SAP ABAP Web Service 創建和消費步驟講解
到了 SAP BTP 上的 ABAP 編程環境里,我們仍然可以沿用 On-Premises 系統里的 Destination 概念,在云上的 ABAP 代碼里,消費第三方的服務。區別在于 On-Premises 系統里的 Destination 通過事物碼 SM59 創建,而云上的 ABAP,則在 SAP BTP 控制臺里創建 Destination 實例。具體步驟請參考 Jerry 之前的文章:SAP云平臺上的ABAP編程環境里如何消費第三方服務。
本文介紹如何在 SAP BTP 平臺 ABAP 編程環境里消費基于 SOAP 的 Web Service. 如果閱讀過 Jerry 前面提到的兩篇文章,理解本文的內容不過是幾分鐘的事情。
登錄 SAP BTP 平臺的 ABAP 編程環境。具體步驟,可以參考 Jerry 之前翻譯的 OpenSAP Fiori Elements 公開課,第一周第四單元的視頻,里面包含了詳細步驟。
新建一個 Service Consumption Model.
Remote Consumption Mode 可以選擇 OData,RFC 或者 Web Service. Jerry 之前介紹 Fiori Elements 和 Restful ABAP Programming 模型時,曾經使用過 OData 模式。本文我們使用 Web Service 模式。
下一步我們需要為這個 Consumption Model 上傳一個 WSDL 文件。Jerry 的文章?深入理解 SAP Fiori Elements 工作原理系列之二:如何給 SAP Fiori Elements 應用添加自定義按鈕?曾經提到過 SAP ES5 系統,這是一個 Demo 系統,SAP 在上面發布了很多用于教學目的的 OData 服務和 Web Service.
本文我們使用一個簡單的 Product Web Service,能根據產品 ID 查詢到其價格。該 Web Service 的 WSDL 文件,可以在這個鏈接獲得。
上傳 WSDL 文件之后,給該 Consumption Model 維護一個前綴 ZJERRY,這樣接下來激活模型,生成的一系列開發資源,其名稱均帶有 ZJERRY 前綴,便于查詢。
激活 Consumption Model 后,在項目資源列表里,觀察到一系列自動生成的 ABAP 資源,包含運行時所需的數據類型定義,以及用于消費該 Web Service 的 ABAP Proxy 代理類。
同時,ADT 為我們自動生成了一段模板代碼,演示了如何消費自動生成的 ABAP 代理類來調用 Web Service. 點擊 Copy to Clipboard,把這段代碼粘貼到剪切板中,后續可以直接用。
下面我們創建一個 ABAP 類,把前一個步驟拷貝到剪切板里的 ABAP 代碼,粘貼到這個新創建的 ABAP 類里。
調用 Web Service 的核心代碼如下圖所示,待查詢價格的產品 ID,硬編碼成 JERRYPRODUCT.
其中第22行的 cl_soap_destination_provider=>create_by_url,輸入參數 i_url 的值,來自 WSDL 文件里 soap:address 節點的 location 屬性值。
直接運行這個 ABAP 類,在 console 上看到錯誤輸出。這個錯誤消息來自 ABAP Proxy 類的 get_price 方法時拋出的異常:zjerrycx_fault_msg_type:
Product not found. Try e.g. HT-1000
錯誤消息表明,這是一個應用程序層級的錯誤,因為我硬編碼的產品 JERRYPRODUCT,在 ES5 系統后臺不存在。
使用 ES5 系統上 SAP 發布的一個標準 OData 服務,查詢該系統后臺到底有哪些創建好的 Product 主數據,隨便選擇一條產品數據,ID 為 AR-FB-1000,其價格為 3.25:
https://sapes5.sapdevcenter.com/sap/opu/odata/sap/EPM_REF_APPS_PROD_MAN_SRV/Products
再次調用該 Web Service,這次在控制臺里看到了期望的輸出:
由此可見,SAP BTP 云平臺 ABAP 編程環境上消費 SOAP Web Service,步驟比 ABAP On-Premises 系統上還要簡捷一些。
Jerry 的 ABAP 專題
-
Jerry的ABAP, Java和JavaScript亂燉
-
ABAP開發人員未來應該學些什么
-
Jerry 2017年的五一小長假:8種經典排序算法的ABAP實現
-
Jerry的ABAP原創技術文章合集
-
300行ABAP代碼實現一個最簡單的區塊鏈原型
-
使用Java+SAP云平臺+SAP Cloud Connector調用ABAP On-Premise系統里的函數
-
在SAP云平臺的CloudFoundry環境下消費ABAP On-Premise OData服務
-
ABAP vs Java, 蛙泳 vs 自由泳
-
聊聊C語言和ABAP
-
動手使用ABAP Channel開發一些小工具,提升日常工作效率
-
我用ABAP做過的那些無聊的事情
-
不喜歡SAP GUI?那試試用Eclipse進行ABAP開發吧
-
使用Visual Studio Code編寫和激活ABAP代碼
-
你的ABAP程序給佛祖開過光么?來試試Jerry這個小技巧
-
在SAP云平臺ABAP編程環境上編寫第一段ABAP程序
-
SAP官方發布的ABAP編程規范
-
ABAP Code Inspector那些隱藏的功能,您都知道嗎?
-
還在用ABAP進行SAP產品的二次開發?來了解下這種全新的二次開發理念吧
-
ABAP Netweaver體內的那些寄生式編程語言
-
從SAP社區上的一篇博客開始,聊聊SAP產品命名背后的那份情懷
-
云端的ABAP Restful服務開發
-
如何在SAP云平臺ABAP編程環境里把CDS view暴露成OData服務
-
使用abapGit在ABAP On-Premises系統和SAP云平臺ABAP環境之間進行代碼傳輸
-
30分鐘用Restful ABAP Programming模型開發一個支持增刪改查的Fiori應用
-
Jerry帶您了解Restful ABAP Programming模型系列之二:Action和Validation的實現
-
Jerry帶您了解Restful ABAP Programming模型系列之三:云端ABAP應用調試
-
SAP云平臺上的ABAP編程環境里如何消費第三方服務
-
ABAP開發者上云的時候到了 - 現在大家可以免費使用SAP云平臺ABAP環境的試用版了
-
學而不思則罔 - SAP云平臺ABAP編程環境的由來和適用場景
-
SAP云平臺里的三叉戟應用
-
如何基于Restful ABAP Programming模型開發并部署一個支持增刪改查的Fiori應用
-
SAP 2019 TechEd Key Note解讀:云時代下SAP從業人員如何做二次開發?
-
有哪些ABAP關鍵字和語法,到了ABAP云環境上就沒辦法用了?
-
ABAP開發環境終于支持以駝峰命名法自動格式化ABAP變量名了
-
利用ABAP 740的新關鍵字REDUCE完成一個實際工作任務
-
一段讓人瑟瑟發抖的ABAP代碼
-
昨日萬圣節ABAP怪獸級代碼謎團,公布答案啦
-
介紹一種在ABAP內核態進行內表高效拷貝的方法
-
使用SAP Cloud Application Programming模型開發OData的一個實際例子
-
當ABAP遇見普羅米修斯
-
使用ABAP繪制可伸縮矢量圖
-
ABAP開發環境語法高亮的那些事兒
-
SAP錯誤消息調試之七種武器:讓所有的錯誤消息都能被定位
-
使用ABAP操作Excel的幾種方法
-
SAP GUI里的收藏夾事務碼管理工具
-
SAP GUI和Windows注冊表
-
有了Debug權限就能干壞事?小心了,你的一舉一動盡在系統監控中
-
ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX這些東東是什么鬼
-
實現ABAP條件斷點的三種方式
-
使用SAT跟蹤監控從瀏覽器打開的SAP應用的性能和調用棧
-
一個13年ABAP老兵的建議:了解這些基礎知識,對ABAP開發有百利而無一害
-
SAP ABAP Netweaver容器化, 不可能完成的任務嗎?
-
SAP產品增強技術回顧
-
SAP API開發方法大全
-
淺談Java和SAP ABAP的靜態代理和動態代理,以及ABAP面向切面編程的嘗試
-
SAP ABAP應用服務器的HTTP響應狀態碼(Status Code)
-
SAP ABAP里存在Java List這種集合工具類么?CL_OBJECT_COLLECTION了解一下
-
ABAP面試題系列:寫一組會出現死鎖(Deadlock)的ABAP程序
-
SAP ABAP Netweaver服務器的標準登錄方式講解
-
SAP ABAP關鍵字語法圖和ABAP代碼自動生成工具Code Composer
-
SAP ABAP SM50的另類用途 - ABAP工作進程對數據庫表讀取操作的檢測
-
關于SAP ABAP字符變量和字符串變量字符個數的一個知識點,和一個血案
-
SAP ABAP一組關鍵字 IS BOUND, IS NOT INITIAL和IS ASSIGNED的用法辨析
-
SAP ABAP和Java里的弱引用(WeakReference)和軟引用(SoftReference)
-
SAP AMDP介紹 - ABAP托管的HANA數據庫過程
-
給你的ABAP對象打上標簽(Tag)
-
歷史上的今天:編程語言中null引用的十億美元錯誤
-
ABAP Development Tool 代碼模板和其他一些實用技巧匯總
-
SAP ABAP Development Tool 提高開發效率的十個小技巧
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三连表情包有哪些 表情包汇总
- 下一篇: 如何为部署到 SAP BTP 平台上的