因為先前開發商業本票(VB6→.NET→WebService)介接Sap借款資料,加上最近有聽到WebService設定問題所以測試了一下在SAP上WebService開發及設定功能,以下為測試畫面(不涉及太多細節,設定部份follow顧問),大家可以參考看看若各位同仁未來有需要在Sap上開發webService,希望以下資料有所幫助,謝謝。▼首先開發一個RFC的functionmoduler,主要將下圖的Remote-Enabledmodule勾選▼設定function使用到的參數(之後利用工具自動做service參數mapping,包含strcture及table皆可自動轉換)▼程式碼(傳入一wbsID傳回Wbs說明)▼點選下圖功能設定WebService▼輸入Service定義名稱及說明(可與functionmoduler名稱不同)▼Functionmoduler名稱▼這裡的profile顧問是選PRF_DT_IF_SEC_NO,也就是在此不做驗證(但會在後續的另一個功能設定)▼純測試,先選本端物件(代表Webservice應該也可以transport)▼設定完畢後,會出現相應的設定▼屬性內比較重要的是Endpoint(也就是呼叫的function)▼工具自動幫我們處理參數轉換▼組態,基本上顧問也都維持預設(上面驗證的設定會影響SecurityProfile的設定)▼自動生成WSDL(但還不是最終我們需要的WSDL,後面會提到)▼預設▼輸入交易代碼:SOAMANAGER(系統會自動跳出瀏覽器做後續的設定)▼依下圖選擇“SingleServiceAdministration”▼搜尋我們定義的Service▼按”applySelection”定義Service及Endpoint(這才是真正對外界的interface,系統會Bind上Soap資訊)▼輸入以下資訊▼設定驗證資訊(基本上勾選UserID/Password,則存取WebService時需要輸入特殊權限的一組Sap帳號密碼)▼也可勾選”NoAuthentication”不驗證並預先輸入有權限的Sap帳號密碼(但不建議這樣做),這樣client呼叫時就不需要身份驗證▼之後按存檔▼接著點選”DisplayselectedBinding’sWSDLURL”顯示Bind後的WSDL的URL▼利用.NET的WebService工具將WDSL轉換為ProxyClass,之後就可呼叫Sap的WebService,以下為呼叫畫面▼.NET搜尋畫面▼輸入WBS號碼▼按下搜尋▼回傳WBS說明Byklazid2011/6/15***************************************************************************************繼上次的SAPWebService開發及設定後,這次反過來,想和大家談談由SAP這端如何呼叫外部的WebService以下是測試畫面(這次採用外網一個查詢匯率的WebService),希望對大家有所幫助,謝謝。▼以下是此WebService的WSDL▼由於SAP工具在connect此URL時會有問題,所以我先將wsdl存成本地檔案(不是每個URL都會有這問題)▼接著利用以下選單建立代理程式▼選擇“ServiceConsumer”▼這邊有三個選擇,一般來說選擇URL/HTTP,但因上述問題,所以我選擇LocalFIle▼選擇wsdl檔案▼純測試,選擇”localObject”,另外填入自定的Prefix▼系統自動產生”ProxyClass”▼一樣,系統自動Gen出對應的參數及型態▼這裡一樣將Security設為”None”▼輸入T-code:SOAMANAGER(也可以按下圖右的圖示自動連結—要先ActiveServiceConsumerProxyClass)▼一樣,選擇”SingleServiceAdministration”▼注意Searchby為“ConsumerProxy“→”ApplySelectioin”▼建立LogicalPort▼輸入LogicalPort名稱及說明,一般來說選擇”WDSLBaseConfiguration”,系統會自動幫我們做一些後續設定但這個case,系統無法解析我的本地WSDL檔案,所以我選”ManualConfiguration”另外若WDSL需要認證的話,可填入帳號密碼▼認證方式▼將MessageIDProtocol改為”SupressIDTransfer”▼因為必須呼叫外網的WebService,所以要設定ProxyServer(對有利用PROXY控管連線的狀況)綠色部份若選擇”WDSLBaseConfiguration”,則會自動設定▼若選擇”WDSLBaseConfiguration”,則會自動設定▼以下為呼叫的ABAP程式▼以下為執行結果Byklazid2011/6/15