您可以使用 ServiceModel 元數據公用程式工具(svcutil.exe)來產生 WCF 用戶端類別或 WCF 服務合約(介面),以用於 mySAP Business Suite Microsoft BizTalk Adapter 所公開的作業。 執行 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」 參數前面都會加上 ampersand (&), 並指定目標作業的節點識別碼。
下列三個範例示範如何以 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。 節點 ID 指定了一個接收操作。 由於此範例會處理擷取元數據,因此不需要在聯機 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 不提供搜尋作業的功能(例如,使用通配符)。 您必須明確指定您想要鎖定之特定作業的節點識別碼。 作業的節點識別碼相當於其訊息動作字串。 您不能指定只涉及類別的節點 ID。 如需 SAP 配接器呈現之節點識別碼的詳細資訊,請參閱 元數據節點識別碼。
新增配接器服務參考 Visual Studio 外掛程式提供進階流覽和搜尋功能,可大幅簡化產生 WCF 用戶端類別和 WCF 服務合約。 如需有關新增配接器服務參考外掛程式的詳細資訊,請參閱 產生適用於 SAP 解決方案成品的 WCF 用戶端或 WCF 服務合約。