【版權聲明】本文為博主原創文章,轉載請在明顯位置注明出處。
1. 外部訪問SAP Webservice服務配置(Service Provider)
(3) 用SOAMANAGER生成WSDL(可供外部訪問的XML鏈接)
2. SAP訪問外部 Webservice配置(Service Consumer)
一、SAP Web Service簡介
SAP的web service是在Netweaver組件通過UDDI工具,采用SOAP和WSDL這兩種web服務技術,將SAP已有功能封裝成webservice對象,供其他系統調用或者調用其他系統的webservice,從而實現SAP與非SAP系統(如OA、PLM等)系統的集成。SAP Netweaver提供了可以發布、查找並調用 Web 服務的工具(UDDI),可支持 NetWeaver 作為 Web 服務的服務器(Service Provider)或者客戶端(Service Consumer),主要功能包括:
①提供webservice。它可以直接封裝SAP的RFC、Function Group、BAPI、XI Message Interface等系統功能,以WEB標准協議在Internet上被其他系統進行調用;
②消費webservice。Netweaver通過創建代理能夠通過Internet直接調用采用標准協議封裝的其他系統提供的webservice;
③提供AS ABAP和AS JAVA環境,允許開發者使用ABAP或者JAVA開發web服務。
本文相關專業術語解釋如下:
UDDI(Universal Description, Discovery, and Integration):在用戶能夠調用Web服務之前,必須確定這個服務內包含哪些屬性與方法,找到被調用的接口定義,而這些都需要服務提供者(Service Provider)通過標准的web服務協議來進行編制。 UDDI正是這樣一個工具,用戶通過web在UDDI中查找並定位那些他們需要的服務。UDDI利用SOAP消息機制(標准的XML/HTTP)來發布、編輯、瀏覽以及查找注冊信息。它采用XML格式來封裝各種不同類型的數據,並且發送到服務請求者或者由服務提供者返回需要的數據。
WSDL (Web Services Description Language):對於服務消費者(Service Consumer)來說,要找到一個自己需要使用的服務,他必須知道如何以及從哪調用。 WSDL 規范是一個描述接口、語義以及Web服務的XML文檔。給這個XML文檔配置上網絡地址后,就可以簡單而又快捷地被查找和定位。
SOAP(Simple Object Access Protocol):當商業用戶通過UDDI找到你的WSDL描述文檔后,它通過SOAP協議調用你建立的Web服務中的一個或多個對象。從技術角度來看,SOAP詳細指明了如何響應不同的請求以及如何對參數編碼。一個SOAP封裝了可選的頭信息和正文,並且通常使用HTTP POST方法來傳送到一個HTTP 服務器。SOAP同時支持消息傳送和遠程過程調用。
本文將主要介紹在SAP中配置webservice作為服務提供方(Service Provider),即將SAP方的RFC函數配置成webservice供其他系統調用。本文所用示例測試環境為S4HANA 1610,Netweaver 7.5.1,具體信息如下圖所示:
二、SAP Web Service配置准備工作
Webservice最終是以WSDL形式發布,即一個帶有URL的XML文件。既然是URL,就必然涉及到發布服務器的域名、端口、目錄等信息,因此SAP提供的webservice在能夠被正常調用之前,需要對服務器的域名進行DNS解析,並且WS要發布必須要通過SAP的SOA Manager進行服務的綁定,所以還需要對SOA Manager進行的一定的設置,讓其正常工作,才能進行下一步的服務綁定。具體步驟見下面章節。
1. 通過RZ10配置服務器名稱和其他參數
服務器的參數一般是由basis來配置完成的。這里主要用來查看服務器的Hostname,以幫助下一步的DNS解析操作。
在SAP客戶端首頁運行T-code:RZ10,即可進入服務器參數文件管理界面,如下圖:
點擊“參數文件”旁邊的搜索幫助按鈕,即可彈出服務器上已有的實例和默認的參數設置,這里我們只需選擇默認參數文件查看即可。選擇下面的“基本維護”選項,就可以快速查看服務器默認的Hostname以及默認集團號,如下圖所示:
如果想查看更多服務器信息,可以選擇參數維護概覽界面的“擴展維護”選項,就可以看到服務器的詳細信息,如下圖所示:
如果想修改系統的參數,建議找Basis修改,這里與webservice相關的幾個重要參數為:
v login/system_client 登錄時默認的Client號
v login/fails_to_user_lock 密碼輸錯多少次后鎖定
v rdisp/mshost 狀態欄中顯示的系統名稱
v Sapglobalhost SAP全局主機名,這個參數就是后面需要設置的被解析的對象
讀者如果對其他參數有興趣,可自行到互聯網上查找相關信息,這里不再贅述。
2. 配置服務器被DNS解析
如果SAP服務器本身沒有加入到所在工作環境的域控中,那么服務器的hostname默認是無法被解析到的,則需要進行服務器的host解析。常見的host解析辦法有兩種:集中解析和單機解析。各自的優缺點和辦法如下:
(1)集中解析
集中解析就是將host解析條目添加到服務器所在網絡的DNS服務中,一般需要聯系網絡管理員來添加這個解析條目。集中解析的優點就是處於該網絡環境中的所有客戶端主機,只要使用的默認DNS服務器,就可以直接訪問發布后的webservice,而不需要在本機上做出任何操作。
(2)單機解析
單機解析就是在客戶端電腦上,直接修改本地的host文件,具體操作如下:
依次瀏覽到這個目錄下:<系統盤盤符>:\Windows\System32\drivers\etc,找到下面的一個名為“hosts”不帶文件類型后綴的文件,右擊這個文件,選擇以記事本方式打開該文件,然后在下面的空白區域添加這樣一條解析:
<SAP服務器的IP地址><SAP的hostname>
例如: 192.168.1.10 erpdev01。這里的hostname就是我們上一步通過RZ10查看到的SAPGlobalhost中名稱,添加完成后保存該文件即可正常解析了。要檢驗配置是否成功,只需要在命令提示符中使用PING命令即可以檢測。
3.啟用SOAMANAGER服務
前面已經介紹過SAP是通過SOAMANAGER來對外發布指定服務器的,SOAMANAGER本身其實也是一個基於Netweaver的Web Dynpro程序,當你在SAP GUI客戶端執行T-Code:SOAMANAGER的時候,就會默認調用IE來打開這個WDA程序,從而實現對webservice的發布的管理。但是根據SAP官方Note1124553的說法,出於安全方面的考慮,SAP Netweaver組件安裝后,默認是不激活WDA程序顯示服務以及SOAMANAGER服務的,因此,需要手工通過T-Code:SICF來先激活WAD程序顯示相關服務以及SOAMANAGER服務,具體需要激活的服務如下:
①與顯示WDA程序相關的服務
/default_host/sap/bc/webdynpro
(注意:這里只需要激活webdynpro這個服務,不需要激活其下面的子服務。當你右鍵激活這個服務的時候,其子節點的服務並不會被激活,這點與我們常見的激活邏輯有區別)
/default_host/sap/public/myssocntl
/default_host/sap/public/bc
(注意:如果你激活bc下面的子服務,這里的bc服務就會自動激活,不需要再手動激活了,因此這里可以跳過這個服務,直接激活其下面的子節點服務即可)
- /default_host/sap/public/bc/ur
- /default_host/sap/public/bc/icons
- /default_host/sap/public/bc/icons_rtl
- /default_host/sap/public/bc/webicons
- /default_host/sap/public/bc/pictograms
- /default_host/sap/public/bc/webdynpro/* (ssr, mimes等所有子節點服務)
②與SOAMANAGER相關的服務
- /default_host/sap/bc/soap
- /default_host/sap/bc/srt
- /default_host/sap/bc/srt/rfc/sap
- /default_host/sap/bc/webdynpro/sap
- /default_host/sap/bc/webdynpro/sap/appl_soap_management.
具體操作步驟如下:
在SAP首頁執行T-code:SICF,打開服務定義選擇界面,在“層次結構類型”中輸入“Service”或者通過F4選擇出這個值,然后執行,就可以進入服務管理界面,如下圖所示:
在服務管理界面,可以看到上半部分為一個服務查詢的界面,可以供用戶快速定位到需要的管理的服務上;下半部分為一個樹形結構的服務目錄,可以通過逐級展開Default host\sap\bc等等,進行服務的查找,如下圖所示:
上半部分通過查找可以快速定位到所需服務,在服務名稱里面輸入服務的名稱,點擊“應用”按鈕,即可快速定位相應的服務,也可以在下半部分逐級展開目錄來定位到相應的服務,如下圖所示:
在這里可以看到被激活過的服務或者目錄顏色比較深,而處於待激活狀態的服務或者目錄呈現灰色。被激活過的對象無法被再激活,只能取消激活。這里我們選擇相應的待激活的服務或者子目錄(呈現灰色狀態),右擊-》激活服務-》選擇“是”,即可以激活相應的服務或者目錄。如下圖所示:
按照上面的步驟依次激活本節開始所列舉的那些服務,應該就能順利打開SOAMANAGER了,如果還不能打開,可以根據彈出的瀏覽器中提示的錯誤來找到相應的服務進行激活即可。配置成功后可以在SAP GUI中運行T-code: SOAMANAGER來進行測試。
在SAP首頁運行T-code: SOAMANAGER,回車,會彈出IE瀏覽器窗口,如果成功的話,會先彈出認證框(與某些電腦的安全設置相關,也有可能先彈出IE安全站點提示信息,這時候只需要展開“詳細信息”-》轉到網頁(不推薦)繼續訪問即可),輸入登錄信息后,就可以進入到SOA管理界面了。如下3圖所示:
如果配置失敗,一般會在瀏覽器提示相應的錯誤信息。如果顯示為:“無法訪問此頁面”或者類似的完全打不開的提示信息,請回頭檢查自己的網絡鏈接是否正常,或者是前面步驟中DNS的解析是否添加成功。
如果提示403錯誤,則表示某些服務沒有啟動,則可以通過顯示該頁面的URL,從URL中找到相應的服務,然后再按照上面激活服務的辦法去激活相應的服務即可。服務沒啟動時,會報出403錯誤,如下圖所示:
在該頁面空白處右擊-》屬性,即可以打開該頁面的屬性,在屬性的地址中,找到URL中問號“?”前的最后一個子節點,即相應的服務。
三、SAP Web Service配置步驟和方法
1. 外部訪問SAP Webservice服務配置(Service Provider)
要讓外部應用能夠訪問SAP的Web Service(以下簡稱為WS),那么必須配置SAP的webservice作為服務提供者(Service Provider),則需要先后按照以下步驟進行操作:
①創建RFC函數
②給RFC函數配置WS(webservice)
③使用SOAMANAGER生成WSDL(可供外部訪問的XML鏈接)
(1) 創建RFC函數
使用T-code:SE37或者SE80,創建函數,函數組設置與編程過程這里不作詳細描述。將函數屬性頁簽中的處理類型設置為“遠程啟用的模塊”,然后激活程序即可。
(2)給RFC函數配置WS(webservice)
RFC函數編寫和設置完成后,可以在SE37或者SE80下通過不同的方式進入創建WS向導界面,這里將介紹三種方法(任選一種即可),具體方法如下:
①通過SE37菜單中的實用程序創建
在SE37界面下,依次展開菜單欄上的以下菜單:實用程序-》更多實用程序-》創建WEB服務-》來自函數模塊。如果WS基於函數組的話,則最后一步選擇“來自函數組”即可。之后系統會進入創建WS向導。
②使用SE80的函數組下的函數模塊直接創建
在SE80界面下,依次展開左側的資源瀏覽器,函數組-》函數組名-》功能模塊,選擇需要用來創建WS的遠程函數名,右擊-》創建-》企業服務,即可進入WS創建向導。
②使用SE80的包進行創建
在SE80界面下,依次展開左側的資源瀏覽器,包-》輸入包名-》回車,如果包存在,則會打開,不存在則會彈出創建提示,點是進行創建,過程中可能會要求請求號,根據需要選擇。在包名上右擊-》創建-》企業服務,一樣可以進入創建WS向導。
通過以上三種方法中的任意一種,均可進入WS向導創建界面,這里以方法3觸發向導為例,因為這樣可以看到更多的配置界面。按照以下圖示進行配置即可。
這里的配置文件(Profile)是用來設置服務的安全策略的,這里建議選擇第四個,第四個就是簡單地使用SAP提供的接口用戶名和密碼進行訪問。
向導完成后,我們在左側的服務目錄中並不能看到我們剛剛創建的WS,這時候需要點擊菜單欄上的保存按鈕,才會顯示出來。顯示出來的WS對象名稱為藍色的,有ABAP編程經驗的應該知道,這個藍色的表示沒有激活,所以,選中新建的WS,然后點擊工具欄中的激活按鈕進行激活,即完成WS的創建。
(3) 用SOAMANAGER生成WSDL(可供外部訪問的XML鏈接)
WS創建完成后,並不代表webservice配置完成,還需要使用SOAMANAGER來進行綁定WSDL才能被其他系統通過web方式進行訪問和調用。具體操作步驟如下:
在SAP首頁輸入T-Code:SOAMANAGER,回車執行,可調用IE瀏覽器彈出SOA的WEB管理界面,前面可能彈出IE安全提示以及SAP Webservice登錄認證信息,前面已經講過,這里不再贅述。其后步驟請按照以下圖示進行配置。
這里進行WS的安全設置,與前面創建WS時的Profile的選擇有關系,將窗口下拉到“傳輸通道驗證”板塊,選擇“用戶標識和密碼”,然后回到頂部點擊“下一步”。
在SOAP協議設置界面,保持默認,直接下一步,然后完成WSDL的生成。
點擊執行按鈕后,可能會彈出用戶認證信息,輸入用戶信息后,即可以打開XML文件了。
至此,SAP作為webservice的提供者(Service Provider)已經配置完成。外部系統可以通過上面生成WSDL的鏈接與SAP系統進行交互了。
2.SAP訪問外部 Webservice配置(Service Consumer)
SAP要實現與其他系統的交互或者集成,除了作為webservice的提供者,被動被調用外,也可以作為webservice的使用者,主動調用第三方系統的WS,從而實現交互。這里的配置由於本人並沒有業務應用場景,就不做詳細描述。關鍵點在於給函數創建企業服務的向導中,在對象類型里面選擇“Service Consumer”,即WS使用者,相當於早期版本中的代理對象(Proxy Object),然后根據向導逐步完成創建過程,並在SOAMANAGER中做相應的配置,之后就可以通過web來調用第三方系統的WSDL,根據一定的語法原則,轉換為abap編程對象,進行SAP的相關編程從而實現與地方系統的集成。