搭配 BizTalk Adapter for mySAP Business Suite 使用 ServiceModel 元數據公用程式工具
您可以使用 ServiceModel 元數據公用程式工具 (svcutil.exe) 來產生 WCF 用戶端類別或 WCF 服務合約 (介面) ,以供 Microsoft BizTalk Adapter for mySAP Business Suite 公開的作業使用。 執行 svcutil.exe 以產生 WCF 用戶端類別或 WCF 服務合約之後,您可以在程式代碼中包含產生的檔案,並建立產生的類別實例,或從產生的介面實作 WCF 服務,以在 SAP 系統上執行作業。
使用 svcutil.exe 會要求您提供包含認證的連線 URI。 因為根據預設,SAP 配接器會停用連線 URI 中的認證,所以您必須將 svcutil.exe 設定為使用 SAP 配接器的非預設系結。 您也可以在非預設系結中設定其他系結屬性;例如,若要建立BAPI作業的WCF用戶端,您必須將 EnableSafeTyping 系結屬性設定為 true。
下列各節說明如何設定 svcutil.exe,以及如何使用 svcutil.exe 來產生 WCF 用戶端程式代碼,或使用 SAP 配接器產生 WCF 服務合約。
設定SAP配接器的 svcutil.exe
若要將 svcutil.exe 設定為使用非預設系結,您必須建立 svcutil.exe 的本地副本,然後建立或修改 svcutil.exe.config 組態檔的本地副本。
建立資料夾,並將 svcutil.exe 複製到新的資料夾中。 您通常會在 Windows SDK 安裝位置找到 svcutil.exe,特別是 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin。
在新的資料夾中建立名為 svcutil.exe.config 的檔案。
將系結和用戶端端點新增至 svcutil.exe.config 檔案。 您必須從新資料夾執行 svcutil.exe,以確保使用正確的組態。
重要
用戶端端點的名稱屬性必須指定連接URI中使用的配置。 此值區分大小寫。
<configuration> <system.serviceModel> <client> <!-- the name should match the required scheme of the WS-Metadata Exchange endpoint and the contract should be "IMetadataExchange" --> <endpoint name="sap" binding="sapBinding" bindingConfiguration="SAPBinding" contract="IMetadataExchange" /> </client> <bindings> <sapBinding> <binding name="SAPBinding" acceptCredentialsInUri="true"/> </sapBinding> </bindings> </system.serviceModel> </configuration>
您可以在繫結組態中設定 SAP 配接器的任何系結屬性。 例如,您可以指定下列非預設系結,以使用 svcutil.exe 為BAPI作業產生 WCF 用戶端。
<bindings>
<sapBinding>
<binding name="SAPBinding" acceptCredentialsInUri="true"/>
</sapBinding>
</bindings>
如需為 svcutil.exe 設定非預設系結的詳細資訊,請參閱 自定義安全元數據端點。
使用 svcutil.exe 建立 WCF 用戶端類別或 WCF 服務合約
若要使用 svcutil.exe 為 SAP 配接器產生 WCF 用戶端程式代碼或 WCF 服務合約 (介面) ,您必須提供連線 URI 來指定 WS-Metadata Exchange (MEX) 端點,以及您想要 svcutil.exe 產生程式代碼的作業或作業。 您也必須在連線 URI 中指定 SAP 系統的連線認證。
注意
您必須先將它設定為使用非預設系結,才能搭配 SAP 配接器使用 svcutil.exe;如需如何執行這項操作的詳細資訊,請參閱 設定SAP配接器的 svcutil.exe。
您可以透過下列方式,在 SAP 配接器連線 URI 中指定 MEX 端點和目標作業:
您必須在查詢字串中包含 「wsdl」 參數。 如果它是查詢字串中的第一個參數,則會在問號 (?) 之後指定。 如果不是第一個參數,則應該前面加上 ampersand (&) 。
您必須遵循 「wsdl」 參數一或多個 「op」 參數。 每個 「op」 參數前面都會加上連字元 (&) ,並指定目標作業的節點標識符。
下列三個範例示範如何使用 svcutil.exe 以各種作業為目標。
此範例會建立RFC_CALCULATE_TAXES的 WCF 用戶端類別。
.\svcutil “sap://User=YourUserName;Passwd=YourPassword;Client=800;Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Rfc/RFC_CALCULATE_TAXES”
此範例會為 SALESORDER_CREATEFROMDAT201 和 SALESORDER_CREATEFROMDAT202 IDOC 建立 WCF 用戶端類別。
.\svcutil “sap://User=YourUserName;Passwd=YourPassword;Client=800;Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT201//620/Send&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT202//620/Send”
此範例會建立 WCF 服務合約,以從 SAP 系統接收SALESORDER_CREATEFROMDAT201 IDOC。 NODE 識別碼會指定接收作業。 由於此範例會處理擷取元數據,因此不需要在聯機 URI 的query_string中指定接聽程序參數。
.\svcutil “sap://User=YourUserName;Passwd=YourPassword;Client=800;Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT201//620/Receive”
重要
您必須在命令行上以引號括住連線 URI。 否則,svcutil.exe 嘗試擷取 SAP 配接器不支援之作業的元數據。 這類嘗試的結果未定義。
根據預設,svcutil.exe 會將產生的程序代碼放在output.cs檔案中;不過,您可以藉由設定命令行參數來變更輸出檔的名稱,以及 svcutil.exe 使用的其他許多選項。 如需 svcutil.exe 支援之選項的詳細資訊,請參閱 ServiceModel 元數據公用程式工具 (Svcutil.exe) 。
例如,Svcutil.exe 不提供使用通配符) 來搜尋作業 (的功能。 您必須明確指定您想要鎖定之特定作業的節點識別碼。 作業的節點識別碼相當於其訊息動作字串。 您無法指定只參考類別的節點識別碼。 如需 SAP 配接器呈現之節點識別碼的詳細資訊,請參閱 元數據節點識別碼。
新增配接器服務參考 Visual Studio 外掛程式提供進階流覽和搜尋功能,可大幅簡化產生 WCF 用戶端類別和 WCF 服務合約。 如需新增配接器服務參考外掛程式的詳細資訊,請參閱 產生SAP解決方案成品的 WCF 用戶端或 WCF 服務合約。