SAP アダプターに関する運用上の問題のトラブルシューティング

このセクションでは、トラブルシューティング手法を使用して、Microsoft BizTalk Adapter for mySAP Business Suite を使用するときに発生する可能性がある操作エラーを解決する方法について説明します。

トレースを有効にする

SAP アダプターでのトレース サポートの詳細については、SAP アダプターの 診断トレースとメッセージ ログに関するページを参照してください。

バインドの読み込み中にエラーが発生しました

問題

アダプター サービス参照の追加 Visual Studio プラグインまたはアダプター サービス BizTalk プロジェクト アドインの使用を開始しようとすると、GUI で次のエラーが発生します。

There was an error loading the binding, <binding name>, from your system configuration.
ConfigurationErrorsException: Exception has been thrown by the target of an invocation.

原因

アダプター サービス参照の追加プラグインまたはアダプター サービスアドインの使用を開始すると、Windows Communication Foundation (WCF) によって、インストールされているすべてのアダプターのアダプター バインドが読み込まれます。 さらに、アダプター バインドは、エンタープライズ アプリケーションの特定のクライアント ソフトウェアに依存します。 この問題は、次のいずれかの理由で発生する可能性があります。

  • アダプターをインストールしたコンピューターには、必要な LOB クライアント ソフトウェアがインストールされていません。

  • BizTalk アダプター パックに含まれるすべてのアダプターをインストールするアダプターの一般的なインストールまたは完了インストールを行いました。 ただし、LOB クライアント ライブラリは、1 つのエンタープライズ アプリケーションに対してのみインストールできます。 その結果、GUI は他のアダプターのバインドの読み込みに失敗します。

    解決策

  • 必要なアダプターのみをインストールするには、必ずアダプターのカスタム インストールを行ってください。

  • BizTalk アダプター パックをインストールしたコンピューターに、必要な LOB クライアントバージョンがインストールされていることを確認します。 サポートされている LOB システム には、サポートされているバージョンが一覧表示されます。 BizTalk アダプター パックには、SAP システムとインターフェイスするための特定の DLL も必要です。 アダプターに必要な DLL の詳細については、「 SAP 用データ プロバイダー用のカスタム RFC のインストール」を参照してください。

BizTalk 管理コンソールに SAP アダプターがありません

問題

BizTalk アダプター パックに含まれる SAP アダプターは、BizTalk Server管理コンソールのアダプターの一覧に表示されません。

原因

SAP アダプターは WCF カスタム バインドです。 そのため、BizTalk Server管理コンソールには WCF-Custom アダプターが表示されますが、WCF カスタム バインドは表示されないため、WCF ベースの SAP アダプターは表示されません。

解決策

「SAP アダプターを管理コンソールに追加する」で説明されている手順に従って、BizTalk Server管理コンソールに SAP アダプター BizTalk Server明示的に追加できます。

DLL に SAP への接続を開くときにエラーが表示されない

問題

SAP アダプターを使用して SAP システムへの接続を開こうとすると、SAP システムにダイアログ ボックスが表示され、一部の DLL が見つからないことを通知します。

原因

SAP アダプターは、librfc32u.dll を使用して SAP システムとの接続を確立します。 librfc32u.dll では、一連の DLL が機能する必要があります。 これらのサポート DLL が、SAP アダプターがインストールされているコンピューターの PATH 変数に追加されていない場合、このエラーが発生します。

解決策

アダプター バインドの読み込み中のエラーに関する問題の解決策として提供されている表を参照してください。 次の表に、SAP アダプターを使用して SAP システムとインターフェイスするために必要なサポート DLL の一覧を示します。

65,536 ノードを超える XML を取得中にエラーが発生しました

問題

アダプターは、65,536 ノードを超える XML 出力を取得しているときに、次のエラーが発生します。

Maximum number of items that can be serialized or deserialized in an object graph is '65536'.
Change the object graph or increase the MaxItemsInObjectGraph quota.

原因

アダプターは、65,536 項目を超えるオブジェクトをシリアル化および逆シリアル化できません。

解像度

この問題を解決するには、 maxItemsInObjectGraph 次の 2 つの方法のいずれかで パラメーターを設定します。

  • このパラメーターを設定するには、サービス クラスの maxItemsInObjectGraph 属性の ServiceBehavior パラメーターを変更します。

  • アプリケーションの app.config ファイルに次を追加します。

    <behaviors>
      <endpointBehaviors>
        <behavior name="NewBehavior">
          <dataContractSerializer maxItemsInObjectGraph="65536000" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    

    サンプル app.config は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="NewBehavior">
         <dataContractSerializer maxItemsInObjectGraph="65536000" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <client>
      <endpoint   behaviorConfiguration="NewBehavior" binding="sapBinding"
       contract="IOutboundContract" name="sap_ICalculator" />
    </client>
  </system.serviceModel>
</configuration>

BizTalk Server で WCF-Custom ポートの接続 URI を入力中にエラーが発生しました

問題

BizTalk Server、SAP システムに接続する接続 URI を指定すると、次のエラーが発生します。

Error saving properties.
(System.ArgumentException) The specified address is invalid.
(System.ArgumentException) Invalid address;
"<connection URI>" is not a well-formed absolute uri.

原因

接続 URI が標準のエンコード形式に準拠していません。 たとえば、パラメーターの値にスペースが含まれている場合があります。

解像度

指定した接続 URI が標準のエンコード形式に準拠していることを確認します。 たとえば、空白を "%20" に置き換える必要があります。

SAP での操作の実行中に System.ArgumentNullException エラーが発生する

問題

このアダプターは、BizTalk Serverを使用して SAP システムで操作を実行すると、次のエラーが発生します。

System.ArgumentNullException: Value cannot be null.

原因

メッセージの WCF アクションが指定されていません。 WCF では、すべての操作に対して SOAP アクションを指定する必要があります。これにより、LOB アプリケーションで実行される操作についてアダプターに通知されます。

解像度

送信ポートで SOAP アクションを指定するか、BizTalk オーケストレーションのメッセージ コンテキスト プロパティとして指定します。 手順については、「 SAP システムの SOAP アクションを構成する」を参照してください。 各操作のアクションの一覧については、「 メッセージとメッセージ スキーマ 」を参照してください。

指定したアクションの操作名が正しくないため、XmlReaderParsingException

問題

BizTalk Server管理コンソールでは、SAP システムにメッセージを送信するときに次のエラーが表示されます。

Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: Invalid argument:
<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Operation Name="<operation_name>" Action="<action>" />
</BtsActionMapping>

原因

アダプター サービス BizTalk プロジェクト アドインを使用して作成したポート バインド ファイルをインポートして WCF-Custom ポートを構成する場合、ポート内のアクションは次の形式で指定されます。

<BtsActionMapping>
  <Operation Name="Op1" Action="http://MyService/Svc/Op1" />
</BtsActionMapping>

上記の形式では、操作名はスキーマの生成中に選択した操作によって制御されます。 たとえば、RFC_CUSTOMER_GETのスキーマを生成した場合、アクションの操作名は "RFC_CUSTOMER_GET" になります。 ただし、Visual Studio の BizTalk オーケストレーションで作成された論理ポートの操作名が異なる場合があります。

解決策

論理ポート (Visual Studio の BizTalk オーケストレーション内) と物理ポート (BizTalk Server管理コンソール) の両方の操作名が同じであることを確認します。

SAP への 100 を超える接続を開くときにエラーが発生しました

問題

SAP システムへの 100 を超える接続を開くと、アダプターは次の例外をスローします。

Microsoft.ServiceModel.Channels.Common.ConnectionException: ErrorCode=RFC_OK. ErrorGroup=RFC_ERROR_COMMUNICATION. SapErrorMessage=Connect to SAP gateway failed
Connect_PM  GWHOST=<gw_host>, GWSERV=<gw_serv>, SYSNR=<sys_number>
LOCATION    CPIC (TCP/IP) on local host with Unicode
ERROR       max no of 100 conversations exceeded

原因

既定では、SAP はシステムへの 100 を超える接続を有効にしません。

解決策

接続の最大数を増やすには、SAP クライアント ライブラリがインストールされているコンピューターに環境変数を作成し、数値に設定する必要があります。 この環境変数に指定する値は、SAP システムに対して行うことができる接続の最大数です。 次の詳細を含む環境変数を作成します。

  • 変数名: CPIC_MAX_CONV

  • 変数値: 任意の正の数値。 たとえば、SAP システムへの 200 接続を有効にするには、値を 200 として指定します。

    環境変数の詳細については、「Windows PowerShell: about_Environment_Variables」を参照してください。

IDOC のメタデータの生成または取得中にエラーが発生しました

問題

SAP システムで IDOC の 受信 操作のメタデータを生成する際に、SAP アダプターで次のエラーが発生します。

Error while retrieving or generating the WSDL.
Adapter message: Details: ErrorCode=RFC_EXCEPTION.
ErrorGroup=RFC_ERROR_APPLICATION_EXCEPTION. SapErrorMessage= OBJECT_UNKNOWN.
AdapterErrorMessage=Error returned by RfcCallReceiveEx while calling RFC: IDOCTYPE_READ_COMPLETE.

原因

SAP アダプターは、IDOCTYPE_READ_COMPLETE RFC を使用して、IDOC の Receive 操作のメタデータを取得します。 この RFC を呼び出す場合、SAP システムで特定のユーザー権限が必要です。 メタデータを生成するために、IDOCTYPE_READ_COMPLETE RFC を呼び出す権限のない資格情報を使用して SAP システムに接続している場合、SAP アダプターはエラーを返します。

解決策

アダプターに使用したのと同じ資格情報を使用して、SAP GUI にログインします。 トランザクション SE37 に移動し、IDOCTYPE_READ_COMPLETEとして実行する RFC の名前を入力します。

PI_IDOCTYPおよびPI_CIMTYP入力パラメーターには、カスタム IDoc に対応する値を入力します。 PI_VERSIONパラメーターとPI_RELEASEパラメーターについては、アダプター メタデータ UI で選択したのと同じ値を入力します。 そして、F8 キーを押して実行します。

アダプターが受け取るものと同じ例外が発生し、問題の詳細が表示されます。

それでも問題を解決できない場合は、Receive 操作ではなく ReceiveIdoc 操作のスキーマを生成します。 この場合、SAP アダプターはIDOCTYPE_READ_COMPLETEを使用せず、エラーもスローしません。

未リリースのセグメントがある IDOC の送受信中にエラーが発生しました

問題

SAP アダプターは、未リリースのセグメントを持つ IDOC ( Send 操作を使用) または受信 IDOC ( Receive 操作を使用) の送信中に XmlReaderParsingException を提供します。

原因

IDOC はセグメントで構成されます。 メタデータの生成中に、SAP アダプターは、SAP システムに存在するすべてのリリース済みセグメントを取得します。 ただし、アダプター クライアントがメタデータを使用して IDOC の受信などの操作を実行する場合、SAP アダプターは XmlReaderParsingException を提供します。 これは、IDOC を受信すると、SAP システムが未リリースのセグメント (アダプターによって生成されなかったメタデータ) も送信した可能性があるために発生します。

解決策

次のいずれかを実行します。

  • 未リリースのセグメントに適切なパッチを適用して、SAP システムをアップグレードします。

  • SendIdoc 操作または ReceiveIdoc 操作を使用して、IDOC をそれぞれ送受信します。 これらの操作の詳細については、「 SAP での IDOC に対する操作」を参照してください。

SAP FilePort を使用して受信した SAP にフラット ファイル IDOC を送信中にエラーが発生しました

問題

SAP FilePort を使用して生成された SAP システムにフラット ファイル IDOC を送信 ( 送信 操作を使用) しようとすると、BizTalk オーケストレーションのフラット ファイル パーサーはフラットファイルを XML 形式に変換できず、IDOD 送信 操作が失敗します。

原因

SAP システムは、FilePort を使用して IDOC を生成すると、セグメントの末尾にあるすべての空のスペースをトリミングします。 ただし、フラット ファイル パーサーは、フラット ファイルを XML に正常に変換するために、セグメント内の最後のフィールドのデータが存在することを想定しています。 セグメントには空のスペースがないため、フラット ファイル パーサーはフラット ファイルを XML に解析できません。

解決策

SAP FilePort を使用して生成されたこのようなフラット ファイル IDOC の場合は、代わりに SendIdoc 操作を使用します。 この操作の詳細については、「 SAP での IDOC に対する操作」を参照してください。

EnableBizTalkCompatibilityMode プロパティが true に設定されている場合、SAP から IDOC を受信中にエラーが発生する

問題

EnableBizTalkCompatibilityMode バインディング プロパティが true に設定された IDOC の受信中に、次の例外が発生します。

System.Exception: Loading property information list by namespace failed or property not found in the list. Verify that the schema is deployed properly.

原因

バインド プロパティ EnableBizTalkCompatibilityModetrue に設定されている場合は、BizTalk アプリケーション、つまりプロジェクトが展開されているアプリケーションのリソースとして、SAP アダプターの BizTalk プロパティ スキーマ DLL を追加する必要があります。

解像度

SAP アダプターの BizTalk プロパティ スキーマの名前は 、Microsoft.Adapters.SAP.BiztalkPropertySchema.dll。 これは、BizTalk アダプター パックのセットアップ <でインストール ドライブ>:\ Program Files\Microsoft BizTalk アダプター パック\bin にインストールされます。 このアセンブリをリソースとして BizTalk アプリケーションに追加するには、次のタスクを実行します。

BizTalk アプリケーションでアセンブリをリソースとして追加する

  1. BizTalk Server管理コンソールを起動します。

  2. コンソール ツリーで[ BizTalk グループ]、[ アプリケーション]、[BizTalk アセンブリを追加するアプリケーション] の順に展開します。

  3. [ アプリケーション] と BizTalk アセンブリを追加するアプリケーションを展開します。

  4. [ リソース] を右クリックし、[ 追加] をポイントして、[ BizTalk アセンブリ] をクリックします。

  5. [ 追加] をクリックし、BizTalk アセンブリ ファイルを含むフォルダーに移動し、BizTalk アセンブリ ファイルを選択して、[ 開く] をクリックします。

  6. [オプション] で、BizTalk アセンブリを GAC にインストールするためのオプションを指定し、[OK] をクリックします

SAP システムから IDOC を受信しているときに検証中にエラーが発生しました

問題

SAP システムから受信した IDOC は、次のようなエラーで検証に失敗します。

There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=<token>"
Source: "Pipeline " Receive Port: "ReceiveIdoc" URI: "<connection uri>"
Reason: The document failed to validate because of the following error:
"The 'http://Microsoft.LobServices.Sap/2007/03/Types/Idoc/3/CREMAS03//620:TAXBS' element has an invalid value according to its data type."

原因

IDOC を受信するために生成されたメタデータには、受信操作の一部として特定の列に対して受け取ることができる許容値が含まれています。 これらの値は、生成されたメタデータで列挙として公開されます。 ただし、IDOC が実際に受信されると、受信した値が列挙値と異なる場合があります。 そのため、値の検証中に受信操作が失敗します。 たとえば、上記のエラー メッセージでは、TAXBS 列の検証が失敗します。

解像度

スキーマ (BizTalk プロジェクトの場合) またはクライアント プロキシ (WCF サービス モデルを使用する .NET プロジェクトの場合) の列挙を手動で編集して、SAP システムから受け取った値を含める必要があります。

XML に変換する前と後のフラット ファイル IDOC は同一ではありません

問題

フラット ファイル パーサーを使用してスキーマを使用してフラット ファイル IDOC を XML に変換し、スキーマを使用してパイプラインを介して XML をフラット ファイル IDOC に変換する場合、2 つのフラット ファイル IDOC は同じではありません。

原因

フラット ファイル IDOC から XML を生成する場合、フラット ファイル パーサーは空の値を持つ XML ノードを生成しません。 この XML をフラット ファイルに変換すると、XML に存在しないノードはフラット ファイル IDOC に反映されません。 したがって、フラット ファイルの IDOC は同じではありません。

解像度

フラット ファイルを XML に変換するために使用されるスキーマ(またはその逆)で、"Send" ノード定義または "Receive" ノード定義内で、次の操作を行います。

  1. suppress_empty_nodes プロパティを false に設定し、generate_empty_nodes プロパティを true に設定します。 既定では、 suppress_empty_nodes プロパティは true に設定され、 generate_empty_nodes プロパティは false に設定されているため、空のノードはすべて XML に反映されません。

  2. フラット ファイルには、末尾に追加のキャリッジ リターンが含まれている場合があります。 この余分な復帰を回避するには、 suppress_trailing_delimiters プロパティを [はい ] に設定できます。 Visual Studio でスキーマを開くと、このプロパティは [ 末尾の区切り記号の非表示 ] プロパティとしても公開されます。

バインド ファイルを使用して作成する物理ポートを使用した不適切なアクション エラー

問題

アダプター サービス アドインを使用して SAP システム上の特定の操作のスキーマを生成すると、アドインによってポート バインド ファイルも作成されます。 BizTalk Server管理コンソールを使用して、このバインド ファイルをインポートして、BizTalk Serverに物理ポートを作成できます。 ただし、このようなポートを使用して SAP システムにメッセージを送信すると、アダプターはポートで指定されたアクションを理解できず、次のようなエラーが発生します。

Microsoft.ServiceModel.Channels.Common.UnsupportedOperationException: Incorrect Action
<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Operation Name="<op_name>" Action="<action>" />
</BtsActionMapping>. Correct the specified Action, or refer to the documentation on the allowed formats for the Actions.

原因

BizTalk オーケストレーションで論理ポートを作成する場合は、それらのポートに対する操作に特定の名前を指定するか、Operation_1、Operation_2などの既定の名前を使用します。ただし、アダプター サービスアドインの使用によって生成されるバインド ファイルでは、操作名はメタデータを生成する操作の名前と同じです。 たとえば、RFC_CUSTOMER_GETのメタデータを生成すると、アクションは次のように設定されます。

<Operation Name="RFC_CUSTOMER_GET" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/RFC_CUSTOMER_GET" />

バインド ファイルをインポートすると、物理ポートで同じアクションが設定されます。 そのため、論理ポート上の操作名 (Operation_1、Operation_2など) は、物理ポートのアクションで指定された操作名と一致しないため、エラーが発生します。

解像度

論理ポート内の操作名が、物理ポートのアクションの一部として指定された操作名と同じであることを確認します。 次のいずれかの操作を行います。

  • BizTalk オーケストレーションの論理ポートの操作名をOperation_1などから、メタデータを生成する操作 (RFC_CUSTOMER_GETなど) に変更します。

  • 物理ポートのアクションの操作名を論理ポートの操作名に変更します。 たとえば、物理ポートのアクションを次のように変更できます。

    <Operation Name="Operation_1" Action="http://Microsoft.LobServices.Sap/2007/03/Rfc/RFC_CUSTOMER_GET" />
    

SAP で実行された操作の応答メッセージに、テーブル パラメーターが含まれていません

原因

SAP アダプターを使用して、多数のテーブルを返す操作を SAP システムで実行し、各テーブルに多数のレコードがある場合は、SAP システムからの応答メッセージの一部として返される大量のデータセットに相当します。 そのため、既定では、SAP アダプターは応答メッセージの一部としてテーブル パラメーターを返しません。

解像度

応答の一部として SAP アダプターが返すテーブルを要求できます。 これを行うには、SAP システムに送信する要求メッセージの一部として空のテーブル パラメーターを指定します。 たとえば、「 <table_parameter_name /> 」のように入力します。

アダプター クライアントが SAP から応答を受信しない

問題

BizTalk Serverでアダプターを使用する場合、WCF カスタム送信ポートの資格情報が正しくない場合、要求メッセージは処理されません。 正しい資格情報を指定すると、メッセージが SAP システムに送信され、応答が受信されます。 ただし、応答メッセージは出力ポートでは使用できません。

解決策

BizTalk ホスト インスタンスを再起動します。

SAP サーバーからの受信メッセージの受信に関する接続の問題

問題

次のエラーは、SAP アダプターの受信ポートを使用して SAP サーバーから受信メッセージを受信 WCF-Custom 場合にのみ発生します。

The Messaging Engine failed to add a receive location "<location_name>" with URL "<connection URI>" to the adapter "WCF-Custom".
Reason: "Microsoft.Adapters.SAP.RFCException: Details: ErrorCode=RFC_OK. ErrorGroup=RFC_ERROR_COMMUNICATION. SapErrorMessage=Connect to SAP gateway failed
Connect_PM  TPNAME=<name>, GWHOST=<host>, GWSERV=<server>

ただし、WCF-Custom 送信ポートを使用して SAP システムにメッセージを送信できます。

解決策

アダプター クライアントを実行しているのと同じコンピューターに SAP GUI をインストールし、受信メッセージの受信を再試行します。 SAP GUI のインストール方法の詳細については、SAP ドキュメントを参照してください。

BizTalk プロジェクトの RootNode TypeName に関するエラー

問題

Visual Studio の BizTalk プロジェクトで、アダプター サービス アドインを使用して生成されたスキーマに RootNode TypeName プロパティの無効な文字または予約語が含まれている場合、プロジェクトのコンパイル中に次のエラーが発生します。

Node <node reference> - Specify a valid .NET type name for this root node.
The current .NET type name of this root node is invalid (it is a reserved BizTalk Keyword or is an invalid C# identifier).

解決策

  1. エラーで参照されている rood ノードを右クリックし、[プロパティ] を選択 します

  2. RootNode TypeName プロパティの場合は、無効な文字や予約語 (ドット (.) など) を削除します。

Visual Studio でアダプターを使用するときのバインディング警告が無効です

問題

アダプターを使用して Visual Studio でアプリケーションを作成し、アダプターによって生成された構成ファイル (app.config) を開くと、次のような警告が表示されます。

The element 'bindings' has invalid child element 'sapBinding'. List of possible elements expected: 'basicHttpBinding, customBinding, ...

原因

この警告は、 sapBindingSAP アダプター バインド () が Windows Communication Foundation (WCF) に付属する標準のバインドではないので表示されます。

解像度

この警告は無視してかまいません。

BizTalk Serverでの XLANG 例外

問題

BizTalk Serverは、複数のスキーマがメッセージの種類と一致したため、アプリケーションがドキュメント仕様を見つけることができないことを示す XLANG 例外または例外をスローします。

原因

これは、次のいずれかが原因で発生します。

  • BizTalk Server プロジェクトで汎用操作 (SendIdoc、ReceiveIdoc など) の複数のスキーマを生成し、それをBizTalk Server アプリケーションにデプロイした後、SAP システムでそれぞれの操作を実行するためにアプリケーションを実行しました。 スキーマは一般的であるため、BizTalk Server アプリケーションにデプロイされているスキーマ間で競合が発生します。

  • 複数のプロジェクトの場合は、各BizTalk Server プロジェクトの汎用操作スキーマを生成し、各プロジェクトを同じホスト上の個別のBizTalk Server アプリケーションにデプロイしてから、SAP システムでそれぞれの操作を実行するためにアプリケーションまたはアプリケーションを実行しました。 スキーマとアセンブリは、BizTalk Serverのアプリケーション全体でアクセスできるため、さまざまなBizTalk Serverアプリケーションとアセンブリの下に配置される共通スキーマ間で競合が発生します。

    解像度

    BizTalk Server アプリケーションには、1 つの汎用操作スキーマ ファイルを使用します。 同じホスト上の複数のBizTalk Server アプリケーションで汎用操作スキーマを使用する必要がある場合は、1 つの汎用操作スキーマを含むアプリケーションを作成し、BizTalk Server内の他のすべてのアプリケーションの汎用操作スキーマを使用します。

参照

SAP アダプターのトラブルシューティング