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

点击蓝字 关注我们

前言

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

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

SAP ERP软件发布WEB 服务

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

为什么不通过PO调用

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

STEP BY STEP

01

前提条件

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

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

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

02

创建企业服务

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

03

创建消费者代理

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

选择external WSDL

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

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

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

设置一个前缀 和开发类.

04

发布消费者代理

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

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

05

尝试测试一下

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

06

部署服务

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

点击消费者代理.

TIPS

SPRING

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

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

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

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

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

查看一下

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

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

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

07

测试

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

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

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

修改并保存测试数据

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

08

程序调用

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

代码调用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

约定

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

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值