本文原版发表于 SAP 官网社区,过后用的英文版写作,题目为:Step by step to create, consume and trace web service in ABAP system
https://blogs.sap.com/2014/05…
总共浏览量超过 18 万。
How to create web service provider in ABAP system
如何在 SAP ABAP 零碎创立 web service 提供者
本文次要思路就是创立一个 ABAP function module,而后通过事物码 SOAMANAGER 将其封装成 web service.
上面这个函数在 SAP CRM 里创立,逻辑是简略地依据 SAP CRM 产品 ID,从数据库表里读取其形容信息并返回。
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 A
INNER JOIN comm_product AS B ON B~product_id = iv_prod_id AND B~product_guid = A~product_guid.
ENDFUNCTION.
须要用事物码 SOAMANAGER 裸露成 Web Service 的函数,必须标注成 Remote enabled:
SE37 里,菜单 Utilities->More Utilities->Create Web Service->From the Function Module:
依照向导一步步 Next 即可,依照本人的理论场景,抉择适合的 Web Service 调用平安认证机制。
实现向导后,应该能失去如下的服务定义:
点击上图 ALV 面板的“WSDL”标签页,浏览 Web Service 的 WSDL:
应用事物码 SOAMANAGER, 创立 Web Service Configuration:
找到咱们方才通过向导创立好的服务定义:
点击 Create Service 按钮:
抉择适合的通信安全设置 (Community Security):
点击 Finish 按钮:
当初这个 web service 就能够生产了。点击这个图标:Open Binding WSDL Generation:
把这个用于绑定的 WSDL 链接保留下来备用。
上面介绍 SAP ABAP Web Service 的生产步骤。
事物码 SE80,新建一个 Service Consumer:
在 Generation Source 里,抉择 External WSDL / Schema:
把之前咱们创立的 Service Definition 里创立好的 Service Definition WSDL Url,粘贴过去:
激活 Service Consumer,会主动生成一个 ABAP 类,这个类用于生产 web service. 激活该类,记下其名字。
回到事物码 SOAMANAGER, 找到之前创立的 Consumer Proxy:
创立一个新的 logical port:
将 Web Service 创立时保留的 url 填进去。记住不能将 SE80 里 WSDL 标签页里的 url 填入,否则会遇到下列谬误:
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 里,咱们能察看到这个代理类的输出和输入参数定义。
当初就能够在 ABAP 报表里,生产这个 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_proxy
EXPORTING
LOGICAL_PORT_NAME = 'ZLP_JERRY1'.
CALL METHOD lr_proxy->ZGET_PROD_DESCRIPTION
EXPORTING
input = input
IMPORTING
output = output.
咱们执行这个 ABAP 报表,通过 web service 调用的形式,依据产品 ID ARNO_TEST004,拿到了其形容信息:TEST FOR WORKSHOP dsf test 11 tesdgt12
这个形容信息,和咱们在 WebClient UI 上察看到的统一:
ABAP Web service 执行的监控和跟踪
事物码 SRT_UTIL, 为须要进行 Web Service 执行监控的用户,创立一个新的配置:
将 Functional Trace 下拉菜单项的值抉择成 High. 依据理论须要,也能够启用 Performance Trace 和 Payload Trace,这些选项默认都是敞开状态:Inactive.
最初别忘了点击”Save Configuration“按钮。
从新执行会触发 Web Service 调用的操作。而后回到事物码 SRT_UTIL,点击 Functional Trace,点击刷新按钮,就看到了方才 Web Service 调用的执行明细。
其实用法和 SQL Trace 即事物码 ST05 很相似。
双击类型为”Response“的某一行,能看到 Web service 调用返回的明细,比方之前提到的,依据输出产品 ID 去数据库查问,再返回的产品描述信息:TEST FOR WORKSHOP dsf test 11 tesdgt12
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: