最详细的 SAP ABAP Web Service 创建和消费步骤讲解
本文原版發(fā)表于 SAP 官方社區(qū),當(dāng)時(shí)用的英文版寫作,標(biāo)題為:Step by step to create, consume and trace web service in ABAP system
https://blogs.sap.com/2014/05/20/step-by-step-to-create-consume-and-trace-web-service-in-abap-system/
總共閱讀量超過 18 萬。
How to create web service provider in ABAP system
如何在 SAP ABAP 系統(tǒng)創(chuàng)建 web service 提供者
本文主要思路就是創(chuàng)建一個(gè) ABAP function module,然后通過事物碼 SOAMANAGER 將其封裝成 web service.
下面這個(gè)函數(shù)在 SAP CRM 里創(chuàng)建,邏輯是簡單地根據(jù) SAP CRM 產(chǎn)品 ID,從數(shù)據(jù)庫表里讀取其描述信息并返回。
FUNCTION ZGET_PROD_DESCRIPTION. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(IV_PROD_ID) TYPE COMM_PRODUCT-PRODUCT_ID *" EXPORTING *" VALUE(RV_TEXT) TYPE STRING *"---------------------------------------------------------------------- SELECT SINGLE A~short_text INTO rv_text FROM COMM_PRSHTEXT AS AINNER JOIN comm_product AS B ON B~product_id = iv_prod_id AND B~product_guid = A~product_guid. ENDFUNCTION.需要用事物碼 SOAMANAGER 暴露成 Web Service 的函數(shù),必須標(biāo)注成 Remote enabled:
SE37 里,菜單 Utilities->More Utilities->Create Web Service->From the Function Module:
按照向?qū)б徊讲?Next 即可,按照自己的實(shí)際場景,選擇合適的 Web Service 調(diào)用安全認(rèn)證機(jī)制。
完成向?qū)Ш?#xff0c;應(yīng)該能得到如下的服務(wù)定義:
點(diǎn)擊上圖 ALV 面板的 “WSDL” 標(biāo)簽頁,瀏覽 Web Service 的 WSDL:
使用事物碼 SOAMANAGER, 創(chuàng)建 Web Service Configuration:
找到我們剛才通過向?qū)?chuàng)建好的服務(wù)定義:
點(diǎn)擊 Create Service 按鈕:
選擇合適的通信安全設(shè)置(Community Security):
點(diǎn)擊 Finish 按鈕:
現(xiàn)在這個(gè) web service 就可以消費(fèi)了。點(diǎn)擊這個(gè)圖標(biāo):Open Binding WSDL Generation:
把這個(gè)用于綁定的 WSDL 鏈接保存下來備用。
下面介紹 SAP ABAP Web Service 的消費(fèi)步驟。
事物碼 SE80,新建一個(gè) Service Consumer:
在 Generation Source 里,選擇 External WSDL / Schema:
把之前我們創(chuàng)建的 Service Definition 里創(chuàng)建好的 Service Definition WSDL Url,粘貼過來:
激活 Service Consumer,會自動生成一個(gè) ABAP 類,這個(gè)類用于消費(fèi) web service. 激活該類,記下其名字。
回到事物碼 SOAMANAGER, 找到之前創(chuàng)建的 Consumer Proxy:
創(chuàng)建一個(gè)新的 logical port:
將 Web Service 創(chuàng)建時(shí)保存的 url 填進(jìn)去。記住不能將 SE80 里 WSDL 標(biāo)簽頁里的 url 填入,否則會遇到下列錯(cuò)誤:
SRT Framework exception: Initial value “consumer context table” in method IF_SRT_WSP_CONFIG_REGISTRY~CREATE_CONTEXTS_FROM_WS of class CL_SRT_WSP_CONFIG_REGISTRY
從 SE80 Service Consumer 里,我們能觀察到這個(gè)代理類的輸入和輸出參數(shù)定義。
現(xiàn)在就可以在 ABAP 報(bào)表里,消費(fèi)這個(gè) proxy class 了。
完整的 ABAP 代碼:
data: lr_proxy TYPE REF TO CO_ZPRODUCTDESCRIPTION4, input TYPE ZGET_PROD_DESCRIPTION, output TYPE ZGET_PROD_DESCRIPTION_RESPONSE. input-iv_prod_id = 'ARNO_TEST004'. CREATE OBJECT lr_proxyEXPORTINGLOGICAL_PORT_NAME = 'ZLP_JERRY1'. CALL METHOD lr_proxy->ZGET_PROD_DESCRIPTIONEXPORTINGinput = inputIMPORTINGoutput = output.我們執(zhí)行這個(gè) ABAP 報(bào)表,通過 web service 調(diào)用的方式,根據(jù)產(chǎn)品 ID ARNO_TEST004,拿到了其描述信息:TEST FOR WORKSHOP dsf test 11 tesdgt12
這個(gè)描述信息,和我們在 WebClient UI 上觀察到的一致:
ABAP Web service 執(zhí)行的監(jiān)控和跟蹤
事物碼 SRT_UTIL, 為需要進(jìn)行 Web Service 執(zhí)行監(jiān)控的用戶,創(chuàng)建一個(gè)新的配置:
將 Functional Trace 下拉菜單項(xiàng)的值選擇成 High. 根據(jù)實(shí)際需要,也可以啟用 Performance Trace 和 Payload Trace,這些選項(xiàng)默認(rèn)都是關(guān)閉狀態(tài):Inactive.
最后別忘了點(diǎn)擊 ”Save Configuration“ 按鈕。
重新執(zhí)行會觸發(fā) Web Service 調(diào)用的操作。然后回到事物碼 SRT_UTIL,點(diǎn)擊 Functional Trace,點(diǎn)擊刷新按鈕,就看到了剛才 Web Service 調(diào)用的執(zhí)行明細(xì)。
其實(shí)用法和 SQL Trace 即事物碼 ST05 很類似。
雙擊類型為 ”Response“ 的某一行,能看到 Web service 調(diào)用返回的明細(xì),比如之前提到的,根據(jù)輸入產(chǎn)品 ID 去數(shù)據(jù)庫查詢,再返回的產(chǎn)品描述信息:TEST FOR WORKSHOP dsf test 11 tesdgt12
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的最详细的 SAP ABAP Web Service 创建和消费步骤讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抖音火山版访客记录怎么关闭
- 下一篇: SAP BTP Kyma Runtime