SAP 操作手册之 ABAP 调用 WEB 服务

作者:ABAP技巧与实战 约 8 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, SD, WM, 仓库管理, 开发, 数据工程, 销售分销

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

前言

因为工作的原因,需要从SAP

ERP软件中调用外围系统提供的WEBSERVICE服务(后面简称WEB服务).整理了一下ABAP调用WEB服务的步骤.希望对你能有所帮助

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

关于SAP ERP软件发布WEB服务的操作, 请查看链接

> SAP ERP软件发布WEB 服务

>

> 无峰,公众号:ABAP 技巧与实战 [ SAP操作手册之 RFC函数发布WEB服务

> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485235&idx=1&sn=970673a9c7fe3122dd9f4b436c58d8db&chksm=cf5dda05f82a53132b2794b3bbcb54096cab9c166cbf863659dd45a1ce2f9c39335249e64685#rd)

**为什么不通过PO调用**

个人觉得,异步接口可以通过PO.同步接口还是直接在ECC调用会好一些.避免一些无用的环节影响同步接口的响应.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

**STEP BY STEP**

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

_**01** _

**前提条件**

ABAP调用WEB服务的前提条件

你需要一个WEB服务的WSDL定义的地址链接. _后面的演示用了之前用RFC函数发布的WEB服务的WSDL定义._

下图是百度百科关于WSDL的解释. 有兴趣的自行百度一下

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

_**02** _

**创建企业服务**

进入TCODE: SE80. 选择一个开发类,右键点击开发类,创建一个企业服务,进入创建向导

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

_**03** _

**创建消费者代理**

进入向导后,选择 service consumer(消费者代理).

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

选择external WSDL

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

选择URL 创建 你也可以用浏览器打开wsdl 下载为本地文件后, 选择local File创建

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

输入之前准备好的WSDL的url地址

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

因为演示的服务是SAP提供的WEB服务 . 所以系统会弹框输入SAP的登录信息, 如果是其它系统提供的, 可能就没有这弹框了.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

设置一个前缀 和开发类.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

_**04** _

**发布消费者代理**

完成后. 系统会生成一个service consumer Z_IF_SD216,( 这个服务的名称来自WSDL中的定义) 及对应的类.

ZTS_CO_Z_IF_SD216.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

修改 release status 为发布状态. 激活一下.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

_**05** _

**尝试测试一下**

尝试测试对象. 系统会报错.原因是消费者代理尚未在当前服务器部署.

(消费者代理传输到其它系统后,同样需要部署一下,类似于服务的发布需要在不同的服务器上部署)

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

_**06** _

**部署服务**

执行TCODE : SOAMANAGER . 进入浏览器界面. 找到之前创建好的消费者代理.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

点击消费者代理.

**TIPS**

**SPRING**

服务定义是SAP发布的WEB服务.

消费者代理是调用其它系统的WEB服务.

基于WSDL完成配置. 进入配置向导.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

**输入一个逻辑端口名称. 后面测试及程序中会用到这个端口.**

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

输入一下wsdl 地址. 可能需要输入用户 /密码(依赖于WEB服务)

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

查看一下

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

因为之前创建的服务使用了基本验证. 所以这里需要输入基本验证的用户/密码(依赖于WEB服务的定义)

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

选择一下登录语言(估计SAP发布的WEBSERVICE才会有这个选项)

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

点击完成后, 系统会创建并激活一个逻辑端口.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

_**07** _

**测试**

回到SE80找到之前创建的企业服务 service consumers ZTS_CO_Z_IF_SD216

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

重新测试时.输入创建的逻辑端口 ZTS_PORT.点击执行

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

点击按钮 进入数据编辑模式

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

修改并保存测试数据

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

执行后可以看到返回的信息

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

_**08** _

**程序调用**

双击类 查看生成的类的输入,输出参数, 写代码时会用到这些参数的定义.

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

代码调用DEMO程序

*&---------------------------------------------------------------------**& Report ZTS_CALL_WEBSERVICE*&---------------------------------------------------------------------**& DEMO程序,调用WEBSERVICE*&---------------------------------------------------------------------*REPORT zts_call_webservice.

TABLES: kna1.PARAMETERS: p_kunnr LIKE kna1-kunnr DEFAULT '1000098', p_vkorg LIKE knvv-vkorg default '6121'.

START-OF-SELECTION.

PERFORM frm_call.*&---------------------------------------------------------------------**& Form FRM_CALL*&---------------------------------------------------------------------**& text*&---------------------------------------------------------------------**& --> p1 text*& <-- p2 text*&---------------------------------------------------------------------*FORM frm_call . DATA:lc_web TYPE REF TO zts_co_z_if_sd216. "WebService代理类 DATA:ls_input TYPE zts_z_if_sd216, "输入参数 ls_output TYPE zts_z_if_sd216response. "输出参数 DATA:lo_sys_exception TYPE REF TO cx_ai_system_fault, lo_app_exception TYPE REF TO cx_ai_application_fault.

TRY. CREATE OBJECT lc_web EXPORTING logical_port_name = 'ZTS_PORT'. "为此WebService创建的逻辑端口。 CATCH cx_ai_system_fault . MESSAGE '出错了' TYPE 'E'. ENDTRY.*传递传入参数 ls_input-is_stru-kunnr = p_kunnr. ls_input-is_stru-vkorg = p_vkorg. TRY. CALL METHOD lc_web->z_if_sd216 EXPORTING input = ls_input IMPORTING output = ls_output. CATCH cx_ai_system_fault INTO lo_sys_exception . "message ‘出错了 systemai’ type ‘S’. WRITE lo_sys_exception->errortext. CATCH cx_ai_application_fault INTO lo_app_exception . WRITE / . WRITE lo_app_exception->textid. ENDTRY. WRITE: ls_output-es_stru-kwert. ENDFORM.

** THE **

** END **

**约定**

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群

SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
SAP 操作手册之 ABAP 调用 WEB 服务 - 封面图
ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAP操作手册之ABAP调用WEB服务.md」整理生成,仅用于内部技术分享与学习交流。