WCF クライアント クラスを生成したら、WCF クライアント (インスタンス) を作成し、そのメソッドを呼び出して、Microsoft BizTalk Adapter for mySAP Business Suite を使用できます。 SAP アダプターが公開する操作の WCF クライアント クラスとヘルパー コードを生成する方法については、「SAP ソリューション成果物の WCF クライアントまたは WCF サービス コントラクトを生成する」を参照してください。
WCF クライアントを作成するには、エンドポイント アドレスとバインドを指定する必要があります。 エンドポイント アドレスには有効な SAP 接続 URI が含まれている必要があり、バインドは SAP バインディング (SAPBinding) のインスタンスである必要があります。 SAP 接続 URI の詳細については、「 SAP システム接続 URI の作成」を参照してください。
SAP バインディングとエンドポイント アドレスは、コードまたは構成ファイルで指定できます。 Add Adapter Service Reference Visual Studio プラグインを使用して WCF クライアント クラスを生成すると、プロジェクト用の構成ファイル (app.config) も作成されます。 このファイルには、アダプター サービス参照プラグインを追加して SAP システムに接続したときに指定したバインディング プロパティと接続情報 (資格情報を除く) を反映する構成設定が含まれています。
コードでのバインドとエンドポイント アドレスの指定
次のコードは、コードでバインディングとエンドポイント アドレスを指定して WCF クライアントを作成する方法を示しています。 エンドポイント アドレスに指定された接続 URI ではなく、WCF クライアントの ClientCredentials プロパティを使用して SAP システム資格情報を指定することをお勧めします。
// A WCF client that targets an RFC is created
// by using a binding object and endpoint address
SAPBinding sapBinding = new SAPBinding();
EndpointAddress sapAddress = new EndpointAddress("sap://CLIENT=800;LANG=EN;@a/YourSAPHost/00");
RfcClient rfcClient = new RfcClient(sapBinding, sapAddress);
rfcClient.ClientCredentials.UserName.UserName = "YourUserName";
rfcClient.ClientCredentials.UserName.Password = "YourPassword";
rfcClient.Open();
構成ファイルでのバインディングとエンドポイント アドレスの指定
次のコードは、app.config ファイルでバインディングとエンドポイント アドレスを指定して WCF クライアントを作成する方法を示しています。
// A WCF client that targets an RFC is created
// by specifying the client endpoint information in app.config
RfcClient rfcClient = new RfcClient("SAPBinding_Rfc");
rfcClient.ClientCredentials.UserName.UserName = "YourUserName";
rfcClient.ClientCredentials.UserName.Password = "YourPassword";
rfcClient.Open();
次の XML は、アダプター サービス参照プラグインの追加によって EMP テーブル用に作成された構成ファイルを示しています。 このファイルには、前の例で参照されているクライアント エンドポイント構成が含まれています。
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.serviceModel>
<bindings>
<sapBinding>
<binding name="SAPBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" receiveIdocFormat="Typed"
generateFlatFileCompatibleIdocSchema="true" maxConnectionsPerSystem="50"
enableConnectionPooling="true" idleConnectionTimeout="00:15:00"
flatFileSegmentIndicator="SegmentDefinition" enablePerformanceCounters="false"
autoConfirmSentIdocs="false"
acceptCredentialsInUri="false" padReceivedIdocWithSpaces="false"
enableBizTalkCompatibilityMode="false" />
</sapBinding>
</bindings>
<client>
<endpoint address="sap://CLIENT=800;LANG=EN;@a/YourSAPHost/00?RfcSdkTrace=False&AbapDebug=False&UseSapGui=Without"
binding="sapBinding" bindingConfiguration="SAPBinding" contract="Rfc"
name="SAPBinding_Rfc" />
</client>
</system.serviceModel>
</configuration>
プロジェクトに複数の WCF クライアントがある場合は、構成ファイルに複数のクライアント エンドポイント エントリが定義されます。 各 WCF クライアント エントリには、そのバインド構成とターゲット SAP システム成果物 (Rfc や Trfc など) に基づいて一意の名前が付けられます。たとえば、"SAPBinding_Rfc" などです。 プロジェクトで WCF クライアントを作成するために複数回接続すると、接続ごとに 1 つずつ、複数のバインド構成エントリが作成されます。 これらのバインド構成エントリには、SAPBinding1、SAPBinding2 などの方法で名前が付けられます。 特定の接続中に作成された各クライアント エンドポイント エントリは、その接続中に作成されたバインド エントリを参照します。
Von Bedeutung
SAP アダプターは、同じ種類 (RFC、TRFC、IDOC など) の異なる SAP 成果物を、同じサービス コントラクトの異なる操作として表示します。 たとえば、RFC_EXAMPLE_AとRFC_EXAMPLE_Bの 2 つの異なる RFC は、どちらも同じサービス コントラクト ("Rfc") の下に表示されます。 これは、両方の RFC が同じ WCF クライアント クラス RfcClient によって呼び出され、両方の RFC のパラメーターが同じ名前空間で宣言されることを意味します。 そのため、ソリューションをビルドするときに名前空間の競合が発生しないように、同じアダプター サービス参照プラグイン セッション (接続) 中に両方の RFC の WCF クライアントを生成する必要があります。
こちらもご覧ください
WCF サービス モデルを使用して SAP アプリケーションを開発する
SAP ソリューション成果物の WCF クライアントまたは WCF サービス コントラクトを生成する
SAP システム接続 URI を作成する