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,通常为链接
步骤:
. 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实例的更多相关文章
- 20170326 ABAP调用外部webservice 问题
1.SE80 创建企业服务: 代理生成:出现错误 库处理程序中出现例外 错误的值:未知类型参考ns1:ArrayOfMLMatnrResource 尝试: 一.测试本地文件:---无效 1. 将网址链 ...
- ABAP调用外部WebService
TCode:se80 选择 Package,输入我们自己的开发包,后回车 右击 开发包名称,选择菜单 出现创建向导窗体 选择"Service Consumer",点击 继续 选择& ...
- PI-webservice05-SAP调用外部webservice
在用webservice进行数据传输的过程中,SAP系统与.net开发的信息系统之间的数据调用.如何用SAP调用外部的.net系统发布的webservice程序来获取外部的数据,详情请见下文: 1,创 ...
- 在IIS上发布一个WebService,再发布一个网站调用这个WebService(实例)
首先描述一下先决条件:IIS可用,VS2005可用. 好,现在开始: 首先写一个WebService并把它发布到IIS上: 在IIS上的默认网站下新建一个“虚拟目录”,取名为“webservice1” ...
- 20170401 ABAP调用CIS webservice
问题: SAP abap SRM java 调webservice 不通, CIS java 这边的webservice 可以通, WHY? key:请求头,系统框架的问题, LF:因为请求头的 ...
- VS2010调用外部webservice
vs2010怎么调用web服务webservice方法,以vs2010为例.Vs的各个版本的此项功能操作基本一致. 工具/原料 vs2010 在“服务引用设置”对话框中,单击“添加 Web 引用”. ...
- Android之ksoap2-android详解与调用天气预报Webservice完整实例
Google为Android平台开发Web Service客户端提供了ksoap2-android项目,在这个网址下载开发包http://code.google.com/p/ksoap2-androi ...
- PHP调用Webservice实例
原文 PHP调用Webservice实例 NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService.它是一个开源软件,是完全采用PHP语言编写的.通过HTTP收发S ...
- JAVA 项目 调用外部的WebSerivce接口,入门实例 (一)
前言: 第一次接触WebService,工作需要,调用外部的WebService接口,所以暂时我这里不考虑发布,做个记录,待以后回来可以看看,只是最初级的,所以有何不好.不对的地方,欢迎看到的同僚给予 ...
随机推荐
- Zlib编译
转自原文 编译和使用zlib 由于要编译Cesium Terrain Build,其中不仅需要gdal,还用到了zlib,所以此时不得不总结一下Zlib的编译之道了. 在windows下用到zlib库 ...
- IOS 暂停和恢复CALayer上的动画(转)
coreAnimation的动画是存在于CALayer上面的,有些时候需要突然暂停某个组件的动画效果,同时保留当前动画的状态, 如果是用removeAnimation会显得很突兀,不够平滑,所以可以利 ...
- 【原创】Android View框架总结(三)View工作原理
测量/布局/绘制顺序 如何引起View的测量/布局/绘制? PerformTraversales() ViewRoot View工作基本流程 MeasureSpec SpecMode Measure ...
- dedecms调用新闻文章列表
效果如下: 代码如下: <div class="list"> <ul class="d6 ico4"> {dede:list pages ...
- 一张图,关于 Bayes error rate,贝叶斯错误率等的分析
造轮子是那帮搞研究的“科学家”干的事情(类似E&E里的explore),“工程师”的职责是利用已有的东西解决问题(类似E&E里的exploit). 其次,即使以工程师的角色解决业务问题 ...
- 2017.3.27 集成modeler后的一些主要路径(持续更新)
1.设计器访问路径 项目名:wfs_web edtor-app和modeler.html的存放位置:webapp/designer/editor-app app-cfg.js中根路径设置:'conte ...
- C#控件之ListView
1.添加一行 listView1.Items.Add(new ListViewItem(new string[] {str1, str2, str3 })); 2.鼠标悬停在listview某项时弹出 ...
- 两个网卡bond
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0TYPE=EthernetONBOOT=yesNM_CONTROLLED=yesBOO ...
- C 语言实例
C 语言实例 C 语言实例 - 输出 "Hello, World!" C 语言实例 - 输出整数 C 语言实例 - 两个数字相加 C 语言实例 - 两个浮点数相乘 C 语言实例 - ...
- vue2.X 组件通信($emit $on props)
1.index.html 子组件直接修改父组件的数据 组件通讯: vm.$emit(); vm.$on(); 父组件和子组件: 子组件想要拿到父组件数据: 通过 props 之前,子组件可以更改父组 ...