首页 > SAP > ABAP > ABAP调用WEB服务
2021
04-11

ABAP调用WEB服务

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

ABAP调用WEB服务 - 第1张  | 优通SAP

RFC函数发布WEB服务

为什么不通过PO调用

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

ABAP调用WEB服务的前提条件:

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

实上在SAP中调用WEBService的方法很多:

1.我们可以直接把WEB服务当成一个REST,直接在代码中所这当成了个HTTP地址,直接POST报文,使用类lo_http_client,直接操作,并返回报文,再直接JSON,XML到SAP结构的转换就成,这种方法网上很多,比如这里

2.需求数据简单,还可以直接使用HTTP_POST,HTTP_GET,直接操作就行。

3.使用SAP标准的调用方法,配置相对应的SOPMANAGE,这好像是最标准的方式,这种方法,结构化,对象化更强,可操作性也强,但配置太麻烦了,所以总感觉得此方不好,项目中前两法都用,但此方法,好像只是在学习时使用过,在项目中以直没使用,此文主要记录的是就是此方法,细节请参看下面。

4.前久在做银企业直接的项目,项目中使用的是以EPIC为基础的一个框架做的银企直联。使用此框架后,在新增加一个银行功能(其实也就相当于是增加一个新POST的WEB服务接口)时,只要按银行给的接口文档,做一些配置,然后做增加一些少量的代码就能实现银企直联,并且有完整的日志记录等。在这其中我觉得这也是一个通用接口的好方法,所以等时间方便时,要把此框架整理一下,做成一个通用的接口方案。

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

ABAP调用WEB服务 - 第2张  | 优通SAP

1.创建企业服务

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

ABAP调用WEB服务 - 第3张  | 优通SAP

2.创建消费者代理

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

ABAP调用WEB服务 - 第4张  | 优通SAP

3.选择external WSDL

ABAP调用WEB服务 - 第5张  | 优通SAP

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

ABAP调用WEB服务 - 第6张  | 优通SAP

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

ABAP调用WEB服务 - 第7张  | 优通SAP

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

ABAP调用WEB服务 - 第8张  | 优通SAP

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

ABAP调用WEB服务 - 第9张  | 优通SAP

设置一个前缀 和开发类.

ABAP调用WEB服务 - 第10张  | 优通SAP

4.发布消费者代理

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

ABAP调用WEB服务 - 第11张  | 优通SAP

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

ABAP调用WEB服务 - 第12张  | 优通SAP

5.尝试测试一下

尝试测试对象. 系统会报错.原因是消费者代理尚未在当前服务器部署. (消费者代理传输到其它系统后,同样需要部署一下,类似于服务的发布需要在不同的服务器上部署)

ABAP调用WEB服务 - 第13张  | 优通SAP

6.部署服务

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

ABAP调用WEB服务 - 第14张  | 优通SAP

点击消费者代理.

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

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

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

ABAP调用WEB服务 - 第15张  | 优通SAP

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

ABAP调用WEB服务 - 第16张  | 优通SAP

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

ABAP调用WEB服务 - 第17张  | 优通SAP

查看一下

ABAP调用WEB服务 - 第18张  | 优通SAP

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

ABAP调用WEB服务 - 第19张  | 优通SAP

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

ABAP调用WEB服务 - 第20张  | 优通SAP
ABAP调用WEB服务 - 第21张  | 优通SAP
ABAP调用WEB服务 - 第22张  | 优通SAP
ABAP调用WEB服务 - 第23张  | 优通SAP

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

7.测试

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

ABAP调用WEB服务 - 第24张  | 优通SAP

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

ABAP调用WEB服务 - 第25张  | 优通SAP

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

ABAP调用WEB服务 - 第26张  | 优通SAP

修改并保存测试数据

ABAP调用WEB服务 - 第27张  | 优通SAP

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

ABAP调用WEB服务 - 第28张  | 优通SAP

8.
程序调用

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

ABAP调用WEB服务 - 第29张  | 优通SAP

代码调用DEMO程序

最后编辑:
作者:yangsen
本站为个人博客网站,全由我个人维护,我从事SAP开发13年,其它ERP开发7年,基本都是零售行业。本站记录工作学习的过程, 有SAP相关询问专、兼职工作可随时联系我。 有网站相关的问题可直接在文章下方留言,或者联系我。 邮件:yan252@163.com给我。 QQ:415402519

ABAP调用WEB服务》有 6 条评论

  1. 匿名说道:

    你好,请问有遇到过创建企业服务时报错

  2. 匿名说道:

    请问在输入wsdl的url的时候,报错:错误的值:实体 “<>”(58 /2834 )。end tag ‘span’ does not match begin tag ‘br’

    1. yangsen说道:

      这意思,应该是说,你的WSDL内容中,在span,br间有问题吧。你可以试试在这之间,是不是有 / br,或者是没有 /span,之类的,这两个标识符,应该是可以删除了的,应该不影响结果。如对方不能修改的话,直接下载WSDL,并修改,然后在SAP里引入这人文件就行。

  3. 匿名说道:

    您好,我做了个服务消费者,用SE80进入企业服务器后用新生成的类文件,在数据编辑模式中输入数据显示正常;可是我做的DEMO在显示时,返回的数据一直为空;请问我的问题在哪里

    1. yangsen说道:

      这问题太泛了,没办法回答。

yangsen的回复 取消回复

你的email不会被公开。