調用外部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)輸入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連接