ABAP调用外部WebService

有两种方式

一种就是网上流传的

下面转载内容

TCode:se80

选择 Package,输入我们自己的开发包,后回车

右击 开发包名称,选择菜

出现创建向导窗口

选择”Service Consumer”,点击 继续

选择”external WSDL”,点击继续

选择”URL”,点击继续

输入WebService的WSDL地址,就是WebService地址的后面加上?wsdl这个参数。点击继续

选择开发类和创建传输号,点击继续。

点击”Complete” ,出现WebServer代理类的创建窗口。

修改系统产生的代理类的名字,然后点保存,激活。到这一步,WebService代理就创建完成了。要想使用它,我们还要创建一个逻辑端口,事务码:lpconfig。

在 代理类中选择、输入上面创建的代理类,在逻辑端口中输入端口号,PS 端口号可以随便字母和数字组合。输入描述后,点创建。

在”URL”处,输入要访问的WebService的地址,全局设置中的”状态管理”要勾上。

选择 WebService中的函数,并输入函数的SoapAction,点保存。逻辑端口创建完成。接下来就该Coding了。

*&———————————————————————*
*& Report  ZWEBSERVICETEST
*&
*&———————————————————————*
*&
*&
*&———————————————————————*
REPORT  zwebservicetest.
DATA:helloworld(200) TYPE c.
DATA:webservice TYPE REF TO zco_web_service1soap.      “WebService代理类
DATA:gt_input TYPE zhello_world_soap_in,               “输入参数
gt_output TYPE zhello_world_soap_out.             “输出参数
DATA:lo_sys_exception   TYPE REF TO cx_ai_system_fault,
lo_app_exception   TYPE REF TO cx_ai_application_fault.
START-OF-SELECTION.
TRY.
CREATE OBJECT webservice
EXPORTING
logical_port_name  = ‘LZP101′ .                 “为此WebService创建的逻辑端口。
CATCH cx_ai_system_fault .
MESSAGE ‘出错了’ TYPE ‘S’.
ENDTRY.
TRY.
CALL METHOD webservice->hello_world
EXPORTING
input  = gt_input
IMPORTING
output = gt_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 gt_output-hello_world_result.

另一种测试

*&----------------------------------------------------------------------*
*&  Program  Name :  Z_TEST
*&  Author's  Name :
*&  Written   Date :
*&  Request  Number:
*&  Program Description:  sap 与 webservice 的连接测试
*&----------------------------------------------------------------------*
*  Changer           Changed Date         Request  NO.        Dec.
*&----------------------------------------------------------------------*

REPORT  z_test.

DATA:webservice TYPE REF TO zco_oa_workflow_service.

DATA:gw_zcreat_oa_workflow  TYPE zcreat_oa_workflow,
     gw_input  TYPE zcreat_oa_workflow1,
     gw_output TYPE zcreat_oa_workflow_response1.

DATA:lo_sys_exception   TYPE REF TO cx_ai_system_fault,
     lo_app_exception   TYPE REF TO cx_ai_application_fault.

DATA: p_str1   TYPE string,
      p_str2   TYPE string,
      p_str3   TYPE string.


START-OF-SELECTION.

  "XML数据
  p_str1 = '<fields><field><name>Title</name><value>交办测试</value></field><field><name>Urgency</name><value>紧急</value></field>'.
  p_str2 = '<field><name>YQDate</name><value>2013-09-24</value></field><field><name>Day_HF</name><value>3</value></field><field><name>XGXM</name><value>1</value></field>'.
  p_str3 = '<field><name>Name_KH</name></field><field><name>Content</name><value>任务安排111</value></field><field><name>Remarks</name><value>备注111</value></field></fields>'.

  TRY.
      CREATE OBJECT webservice
        EXPORTING
          logical_port_name = 'LZP01'.
      "为此webservice创建的逻辑端口。
    CATCH cx_ai_system_fault .
      MESSAGE '出错了' TYPE 'E'.
  ENDTRY.

  "写输入参数
  gw_zcreat_oa_workflow-arg0 = 'TW9QUQXPR74U95SS'.
  gw_zcreat_oa_workflow-arg1 = 'L_TYLC_GZJB'.
  gw_zcreat_oa_workflow-arg2 = ''呵呵.
  gw_zcreat_oa_workflow-arg3 = ''.
  gw_zcreat_oa_workflow-arg4 = 'admin'.
  gw_zcreat_oa_workflow-arg5 = |{ p_str1 }{ p_str2 }{ p_str3 }|.
  gw_input-parameters = gw_zcreat_oa_workflow.

  TRY.
      CALL METHOD webservice->creat_oa_workflow
        EXPORTING
          creat_oa_workflow          = gw_input
        IMPORTING
          creat_oa_workflow_response = gw_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 gw_output-parameters-return.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP是一种编程语言,用于SAP系统的开发,可以通过WebService(Web服务)与外部系统进行交互。 在ABAP调用外部WebService,需要通过调用SOAP(简单对象访问协议)或REST(表述性状态传递)协议来与WebService进行通信。 首先,需要在ABAP中创建一个代表外部WebService的客户端代理。可以使用SAP提供的工具例如SOAMANAGER或SE80等来创建代理。这些工具可以根据WebServiceWSDL文件自动生成代理代码。WSDL(Web服务描述语言)是一种描述WebService接口的XML文件。 在创建代理之后,可以使用ABAP代码调用外部WebService。根据WebService的具体接口定义,调用不同的方法,传递相应的参数。ABAP提供了一些函数模块或类来进行WebService调用,例如CALL FUNCTION或CREATE OBJECT等。 在调用WebService方法时,将传递参数并获取返回值。ABAP代码可以处理WebService返回的结果,根据需要进行后续的逻辑处理。 在调用过程中,还需要设置通信所需的协议和认证信息。ABAP提供了相关函数模块或类来设置和处理这些通信和认证信息,例如SET HANDLER或SET PROPERTY等。 在调用WebService之前,还需要确保网络连接的可用性,以及外部WebService的可访问性。可以通过网络配置或者与网络管理员进行沟通来解决相关问题。 总之,ABAP调用外部WebService的过程可以归纳为以下几个步骤:创建WebService客户端代理、调用WebService方法、处理返回结果、设置通信和认证信息、确保网络连接的可用性。这样,就可以在ABAP程序中方便地与外部系统进行数据交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值