SAP调用外部web service
2016-06-16 09:19
357 查看
前提:外部提供可用的web service,通常为链接
1. SE80,创建web service proxy
1)SE80,选择package,右击->create->Enterprise service
2) Object Type, 选择Service Consumer,继续
3)Select source,选择URL/HTTP Destination,继续
4)URL中输入网址,继续
5)分配package和前缀(随意),完成
6)保存,激活
2. LPCONFIG,创建逻辑端口
1)输入proxy class(第1步中生成的proxy name)和logical port(随意,通常同proxy class),选中Default port
2)输入描述,选中message id 和 state management
3)调用参数:URL输入去掉?WSDL的地址
4)操作:右侧SOAP操作,输入xml文件中soapAction等号后的内容,包括引号
3. 程序调用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连接
1. SE80,创建web service proxy
1)SE80,选择package,右击->create->Enterprise service
2) Object Type, 选择Service Consumer,继续
3)Select source,选择URL/HTTP Destination,继续
4)URL中输入网址,继续
5)分配package和前缀(随意),完成
6)保存,激活
2. LPCONFIG,创建逻辑端口
1)输入proxy class(第1步中生成的proxy name)和logical port(随意,通常同proxy class),选中Default port
2)输入描述,选中message id 和 state management
3)调用参数:URL输入去掉?WSDL的地址
4)操作:右侧SOAP操作,输入xml文件中soapAction等号后的内容,包括引号
3. 程序调用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连接
相关文章推荐
- 第十一周项目3-警察和厨师(1)
- 每天一个Linux命令(49)traceroute命令
- iOS 制作自己的FrameWork遇到的一些问题 以及FrameWork通过包合并支持arm64 armv7 i386 架构
- 关于oracle启用实例,以及数据库重启
- 获取到剩余内存
- jira+Confluence+FishEye安装破解集成
- Android实战技巧:深入解析AsyncTask
- 环形缓冲区的设计与实现
- iii
- zabbix jmx监控
- 第十四周上机实践项目1(2):排序函数模板(选择法排序)
- 7. Reverse Integer
- Spring4.2.2 JUnit4 事物提交测试
- ASP.NET中GridView数据导出到Excel
- nagios安装配置
- scala console 用:paste 多行输入
- map关联容器
- 【OBJC类扩展之尺寸】UIView+Size
- 文件的创建与删除
- 好博文整理收藏