20170326 ABAP调用外部webservice实例
调用外部webservice 使用Tcode;
SICF
SPROXSET 设置创建proxy 的权限
SE80
SOAMANAGER
一、目的:调用外部SRM系统的 webservice:
http://10.4.64.19:8090/srm/service/IMatnrResourceService?wsdl
8090是端口号
二、实施
**前提:外部提供可用的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 2 3 4 5 | 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
1 2 3 4 5 6 | 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连接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决