您的位置:首页 > 其它

SAP调用外部web service

2015-01-15 10:04 309 查看
前提:外部提供可用的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连接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: