SAP调用外部web service
生活随笔
收集整理的這篇文章主要介紹了
SAP调用外部web service
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前提:外部提供可用的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連接
總結
以上是生活随笔為你收集整理的SAP调用外部web service的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [abap] 通过动态参数获取字段数据
- 下一篇: SAP供应商编码范围