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
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值