调用外部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,通常为链接

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

生产PROXY: ZTST_SRM_001CO_IMATNR_RESOURCE

 注意:保存,激活!

+1,

激活后可以F8 运行

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

这四项不要填错:

URL Access Path:  
URL Protocol Information:  
Computer Name of Access URL:  
Port Number of Access URL:



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连接

20170326 ABAP调用外部webservice实例的更多相关文章

  1. 20170326 ABAP调用外部webservice 问题

    1.SE80 创建企业服务: 代理生成:出现错误 库处理程序中出现例外 错误的值:未知类型参考ns1:ArrayOfMLMatnrResource 尝试: 一.测试本地文件:---无效 1. 将网址链 ...

  2. ABAP调用外部WebService

    TCode:se80 选择 Package,输入我们自己的开发包,后回车 右击 开发包名称,选择菜单 出现创建向导窗体 选择"Service Consumer",点击 继续 选择& ...

  3. PI-webservice05-SAP调用外部webservice

    在用webservice进行数据传输的过程中,SAP系统与.net开发的信息系统之间的数据调用.如何用SAP调用外部的.net系统发布的webservice程序来获取外部的数据,详情请见下文: 1,创 ...

  4. 在IIS上发布一个WebService,再发布一个网站调用这个WebService(实例)

    首先描述一下先决条件:IIS可用,VS2005可用. 好,现在开始: 首先写一个WebService并把它发布到IIS上: 在IIS上的默认网站下新建一个“虚拟目录”,取名为“webservice1” ...

  5. 20170401 ABAP调用CIS webservice

    问题: SAP  abap SRM java  调webservice 不通, CIS java  这边的webservice 可以通, WHY? key:请求头,系统框架的问题, LF:因为请求头的 ...

  6. VS2010调用外部webservice

    vs2010怎么调用web服务webservice方法,以vs2010为例.Vs的各个版本的此项功能操作基本一致. 工具/原料 vs2010 在“服务引用设置”对话框中,单击“添加 Web 引用”. ...

  7. Android之ksoap2-android详解与调用天气预报Webservice完整实例

    Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi ...

  8. PHP调用Webservice实例

    原文 PHP调用Webservice实例 NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService.它是一个开源软件,是完全采用PHP语言编写的.通过HTTP收发S ...

  9. JAVA 项目 调用外部的WebSerivce接口,入门实例 (一)

    前言: 第一次接触WebService,工作需要,调用外部的WebService接口,所以暂时我这里不考虑发布,做个记录,待以后回来可以看看,只是最初级的,所以有何不好.不对的地方,欢迎看到的同僚给予 ...

随机推荐

  1. Zlib编译

    转自原文 编译和使用zlib 由于要编译Cesium Terrain Build,其中不仅需要gdal,还用到了zlib,所以此时不得不总结一下Zlib的编译之道了. 在windows下用到zlib库 ...

  2. IOS 暂停和恢复CALayer上的动画(转)

    coreAnimation的动画是存在于CALayer上面的,有些时候需要突然暂停某个组件的动画效果,同时保留当前动画的状态, 如果是用removeAnimation会显得很突兀,不够平滑,所以可以利 ...

  3. 【原创】Android View框架总结(三)View工作原理

    测量/布局/绘制顺序 如何引起View的测量/布局/绘制? PerformTraversales() ViewRoot View工作基本流程  MeasureSpec SpecMode Measure ...

  4. dedecms调用新闻文章列表

    效果如下: 代码如下: <div class="list"> <ul class="d6 ico4"> {dede:list pages ...

  5. 一张图,关于 Bayes error rate,贝叶斯错误率等的分析

    造轮子是那帮搞研究的“科学家”干的事情(类似E&E里的explore),“工程师”的职责是利用已有的东西解决问题(类似E&E里的exploit). 其次,即使以工程师的角色解决业务问题 ...

  6. 2017.3.27 集成modeler后的一些主要路径(持续更新)

    1.设计器访问路径 项目名:wfs_web edtor-app和modeler.html的存放位置:webapp/designer/editor-app app-cfg.js中根路径设置:'conte ...

  7. C#控件之ListView

    1.添加一行 listView1.Items.Add(new ListViewItem(new string[] {str1, str2, str3 })); 2.鼠标悬停在listview某项时弹出 ...

  8. 两个网卡bond

    vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0TYPE=EthernetONBOOT=yesNM_CONTROLLED=yesBOO ...

  9. C 语言实例

    C 语言实例 C 语言实例 - 输出 "Hello, World!" C 语言实例 - 输出整数 C 语言实例 - 两个数字相加 C 语言实例 - 两个浮点数相乘 C 语言实例 - ...

  10. vue2.X 组件通信($emit $on props)

    1.index.html  子组件直接修改父组件的数据 组件通讯: vm.$emit(); vm.$on(); 父组件和子组件: 子组件想要拿到父组件数据: 通过 props 之前,子组件可以更改父组 ...