• 20170326 ABAP调用外部webservice实例


    调用外部webservice 使用Tcode;

    SICF

    SPROXSET      设置创建proxy 的权限

    SE80

    SOAMANAGER

    一、目的:调用外部SRM系统的 webservice:
    http://10.4.64.19:8090/srm/service/IMatnrResourceService?wsdl

    :这个是我们这边测试系统的地址
    8090是端口号
    10.4.64.19是服务器地址 

     

    二、实施

    **前提:外部提供可用的web service,通常为链接

    步骤:
    1. SE80,创建web service proxy
    1)SE80,选择package,右击->create->Enterprise service
    2) Object Type, 选择Service Consumer,继续
    3)Select source,选择URL/HTTP Destination(有时只有URL),继续
    4)URL中输入网址,继续
    5)分配package和前缀(随意),完成
    6)保存,激活

     

    生产PROXY: ZTST_SRM_001CO_IMATNR_RESOURCE

     注意:保存,激活!

    +1,

    激活后可以F8 运行

    重点提前说:soamanage web服务配置时注意!!!

    这四项不要填错:

     
     
     



    2. LPCONFIG,创建逻辑端口(这个tcode 已弃用了->soamanager)

    1)输入proxy class(第1步中生成的proxy name)和logical port(随意,通常同 
    proxy class),选中Default port
    2)输入描述,选中message id 和 state management
    3)调用参数:URL输入去掉?WSDL的地址
    4)操作:右侧SOAP操作,输入xml文件中soapAction等号后的内容,包括引号

     代理类:ZTST_SRM_001CO_IMATNR_RESOURCE

    保存!激活!

     

    N二、SOAMANAGER 做web服务配置;

    一、 Soamanager 配置服务消费者

    输入事务代码跳转至网页:

    http://upd.changhong.com:8000/sap/bc/webdynpro/sap/appl_soap_management?sap-language=ZH

     

    Web服务配置

     

    搜索依据:消费者代理;搜索模式:ZCO_REQUEST_HANDLE_MLPURCHASE;执行

     

    选中消费者代理,点Apply Selection

     

    创建逻辑端口,注意配置类型:手动配置

     

    Transport Settings

    URL Access Path:

    /default/WP_SOA/APP_SRM_SERVICES/Proxy_Services/TA_SAP/handleMLPurchaseOrderService_PS?wsdl

    Computer Name of Access URL: 10.3.15.224(测试)  10.3.15.214(生产)

    User Name for Proxy Acess: sap

    Password of Proxy User: password1

    保存

    SAP调用PROXY

    ERP调用Proxy
    
    创建函数ZMLSCP1_FR0013 用于发送采购订单,传入参数订单抬头和订单行项。
    代码注意的几个点:
    1.	request_data 请求xml格式字符串的拼接(字符串拼接宏及转义字符的处理)
    2.	代理proxy的调用(异常的处理)
    3.	return_data  返回xml格式字符串消息的解析(strans转换的使用)
    

      


    3.abap调用web service

    例子:

    DATA:lo_clientproxy TYPE REF TO z_proxy. "proxy class
    DATA:lo_input TYPE z_input, "输入参数
    lo_output TYPE z_output. "输出参数
    
    lo_request = request.
    
    CREATE OBJECT lo_clientproxy.
    TRY.
    CALL METHOD lo_clientproxy->z_method "web service函数
    EXPORTING
    to_input = lo_input
    IMPORTING
    to_output = lo_output.
    
    * ***Write Out the Basic Information
    CATCH cx_ai_system_fault INTO g_sys_exception."捕获错误
    IF g_sys_exception IS NOT INITIAL.
    WRITE: 'Error:Communication Error'.
    ENDIF.
    CATCH cx_ai_application_fault INTO g_app_exception.
    IF g_app_exception IS NOT INITIAL.
    WRITE 'Error:Application Error'.
    ENDIF.
    ENDTRY.

     

     

    测试问题一:
    第一步时,遇到问题HTTP 404问题,但是链接直接可以浏览器打开

    解决方案:
    1. 将网址链接(JAVA发布的web service通常以?wsdl结尾),另存到本地,保存为
    xml文件
    2. 修改xml文件,删除下面内容,删除后保存
    <wsdl:binding ……> …… </wsdl:binding>
    <wsdl:port …….> …….</wsdl:port>
    3. SE80创建web service proxy时,就Select source,选择Local file,其他都一

    刚看一个链接里有介绍:http://hi.baidu.com/tktik/item/fcaf0e53e26cbe3a32e0a951

    测试问题二:
    连接总是不同,一直有cx_ai_system_fault异常
    解决方案:
    将逻辑端口中的域名改为ip地址

    **值得注意的是,实现该功能,不需要创建RFC连接

  • 相关阅读:
    组件
    Django
    面向对象
    异常处理
    模块1
    Java中权限设置
    java反射机制
    JavaScript提高篇之面向对象之单利模式工厂模型构造函数原型链模式
    JavaScript提高篇之预解释作用域以及this原理及其应用
    js-引用类型-Array
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6625563.html
Copyright © 2020-2023  润新知