Azure Logic Apps で一般的な SAP 統合シナリオのワークフローを作成する

適用対象: Azure Logic Apps (従量課金 + Standard)

この攻略ガイドでは、Azure Logic Apps と SAP コネクタを使用して、一般的な SAP 統合シナリオのサンプル ロジック アプリ ワークフローを作成する方法を示します。

Standard と従量課金の両方のロジック アプリ ワークフローで、マルチテナント Azure でホストおよび実行される SAP "マネージド" コネクタが提供されています。 標準ワークフローでは、シングルテナントの Azure Logic Apps でホストおよび実行される SAP 組み込みサービス プロバイダー コネクタも提供されます。 統合サービス環境 (ISE) で従量課金ワークフローを作成してホストする場合は、SAP コネクタの ISE ネイティブ バージョンを使用することもできます。 詳細については、コネクタの技術リファレンスを参照してください。

前提条件

開始する前に、ご自身の特定のシナリオの SAP コネクタの要件を確認し、満たしていることを確認してください。

SAP からメッセージを受信する

次のロジック アプリ ワークフローの例は、ワークフローの SAP トリガーが SAP サーバーからメッセージを受信したときにトリガーされます。

SAP トリガーを追加する

マルチテナント Azure Logic Apps の従量課金ワークフローであるか、シングルテナント Azure Logic Apps の Standard ワークフローであるかに基づいて、以下の対応する手順に従ってください。

  1. Azure portal で、従量課金ロジック アプリと空のワークフローをデザイナーで開きます。

  2. デザイナーで、ことらの一般的な手順に従って、[When a message is received] (メッセージの受信時) という名前の SAP マネージド コネクタ トリガーを追加します。

  3. ダイアログが表示されたら、オンプレミスの SAP サーバーに関する以下の接続情報を指定します。 完了したら [作成] を選択します。 それ以外の場合は、次のステップに進み、SAP トリガーを設定します。

    パラメーター 必須 説明
    接続名 はい 接続名を入力します。
    データ ゲートウェイ Yes 1. [サブスクリプション] で、データ ゲートウェイのインストールのために Azure portal で作成したデータ ゲートウェイ リソースの Azure サブスクリプションを選択します。

    2. [接続ゲートウェイ] で、Azure のデータ ゲートウェイ リソースを選択します。
    Client Yes SAP サーバーへの接続に使用する SAP クライアント ID
    認証の種類 はい 接続に使用する認証の種類。[基本] (ユーザー名とパスワード) にする必要があります。 SNC 接続を作成するには、「Secure Network Communications (SNC) を有効にする」を参照してください。
    SAP ユーザー名 はい SAP サーバーのユーザー名
    SAP パスワード Yes SAP サーバーのパスワード
    ログオンの種類 はい アプリケーション サーバーまたはグループ (メッセージ サーバー) のいずれかを選択し、必要に応じて対応するパラメーターを構成します(省略可能)。

    アプリケーション サーバー:
    - AS ホスト: SAP アプリケーション サーバーのホスト名
    - AS サービス: SAP アプリケーション サーバーのサービス名またはポート番号
    - AS システム番号: SAP サーバーのシステム番号 (00 から 99 の範囲)

    グループ:
    - MS サーバー ホスト: SAP メッセージ サーバーのホスト名
    - MS サービス名またはポート番号: SAP メッセージ サーバーのサービス名またはポート番号
    - MS システム ID: SAP サーバーのシステム ID
    - MS ログオン グループ: SAP サーバーのログオン グループ。 SAP サーバーで、[CCMS: ログオン グループの管理] (T-Code SMLG) ダイアログ ボックスを開くと、ログオン グループの値を検索または編集できます。 詳細については、「SAP Note 26317 - 自動負荷分散のための LOGON グループの設定」を参照してください。
    安全な型指定 いいえ このオプションは、下位互換性のために用意されており、文字列の長さのみをチェックします。 既定では、厳密な型指定は、スキーマに照らした XML 検証を実行することによって無効な値をチェックするために使用します。 この動作により、問題を初期段階で検出できます。 詳しくは、安全な型指定の設定に関する記事をご覧ください。
    SNC を使用する いいえ SNC 接続を作成するには、「Secure Network Communications (SNC) を有効にする」を参照してください。

    その他の使用可能なオプションの接続パラメーターについては、既定の接続情報に関するセクションを参照してください。

    Azure Logic Apps が接続を設定してテストすると、トリガー情報ボックスが表示されます。 発生する可能性がある接続の問題の詳細については、「接続のトラブルシューティング」を参照してください。

  4. SAP サーバーの構成とシナリオに基づいて、[When a message is received] (メッセージ受信時) トリガーに必要なパラメーター値を指定し、シナリオで使用するその他の使用可能なトリガー パラメーターを追加します。

    注意

    この SAP トリガーは、ポーリング トリガーではなく Webhook ベースのトリガーであり、ポーリング スケジュールを指定するオプションはありません。 たとえば、オンプレミス データ ゲートウェイでマネージド SAP コネクタを使用する場合、トリガーはメッセージが到着したときにのみデータ ゲートウェイから呼び出されるため、ポーリングは必要ありません。

    パラメーター 必須 説明
    GatewayHost Yes SAP RFC サーバーの登録ゲートウェイ ホスト
    GatewayService Yes SAP RFC サーバーの登録ゲートウェイ サービス
    ProgramId Yes SAP RFC サーバーの登録ゲートウェイ プログラム ID

    : この値は、大文字と小文字が区別されます。 ロジック アプリ ワークフローと SAP サーバーを構成するときに、プログラム ID 値に同じ大文字と小文字の形式を一貫して使用していることを確認してください。 そうしないと、IDoc を SAP に送信しようとすると、tRFC モニター (T-Code SM58) に次のエラーが表示されることがあります (リンクには SAP ログインが必要です)。

    - 関数 IDOC_INBOUND_ASYNCHRONOUS が見つかりません (2399329)
    - 非 ABAP RFC クライアント (パートナー タイプ) はサポートされていません (353597)
    DegreeOfParallelism いいえ 並列で処理する呼び出しの数。 このパラメーターを追加して値を変更するには、[新しいパラメーターの追加] の一覧から [DegreeOfParallelism] を選択し、新しい値を入力します。
    SapActions いいえ SAP アクションのリストに基づいて、SAP サーバーから受信するメッセージをフィルター処理します。 このパラメーターを追加するには、[新しいパラメーターの追加] の一覧から [SapActions] を選択します。 新しい [SapActions] セクションの SapActions - 1 パラメーターで、ファイル ピッカーを使用して SAP アクションを選択するか、アクションを手動で指定します。 SAP アクションの詳細については、「IDoc 操作のメッセージ スキーマ」を参照してください。
    IDoc Format いいえ IDoc の受信に使用する形式。 このパラメーターを追加するには、[新しいパラメーターの追加] の一覧から [IDoc Format] を選択します。

    - IDoc を SAP プレーン XML として受け取る場合は、[IDoc Format] の一覧から [SapPlainXml] を選択します。

    - IDoc をフラット ファイルとして受け取る場合は、[IDoc Format] の一覧から [FlatFile] を選択します。

    - : ワークフローで [Flat File Decode] (フラット ファイルのデコード) アクションも使用する場合、フラット ファイル スキーマでは、early_terminate_optional_fields プロパティを使用し、値を true に設定する必要があります。 この要件が必要なのは、tRFC 呼び出し IDOC_INBOUND_ASYNCHRONOUS で SAP によって送信されるフラット ファイル IDoc データ レコードが、SDATA のフィールド長全体までパディングされないためです。 Azure Logic Apps では、SAP から受信したままの、パディングされていないフラット ファイル IDoc の元のデータが提供されます。 また、この SAP トリガーをフラット ファイル デコード アクションと組み合わせる場合、アクションで提供されるスキーマと一致する必要があります。
    Receive IDOCS with unreleased segments (未リリースのセグメントを含む IDOCS を受信する) いいえ 未リリースのセグメントの有無にかかわらず IDoc を受け取ります。 このパラメーターを追加して値を変更するには、新しいパラメーターの追加 の一覧から Receive IDOCS with unreleased segments (未リリースのセグメントを含む IDOCS を受信する を選択し、Yes (はい) または いいえ (いいえ) を選択します。
    SncPartnerNames いいえ SAP クライアント ライブラリ レベルでトリガーを呼び出すアクセス許可を持つ SNC パートナーのリスト。 リストされているパートナーのみが、SAP サーバーの SNC 接続によって承認されています。 このパラメーターを追加するには、[新しいパラメーターの追加] の一覧から [SncPartnerNames] を選択します。 各名前を縦棒 (|) で区切って入力してください。

    次の例は、従量課金ワークフローで基本的に構成された SAP マネージド トリガーを示しています。

    Screenshot shows basically configured SAP managed connector trigger in Consumption workflow.

    次の例は、SAP アクションを選択してメッセージをフィルター処理できる SAP マネージド トリガーを示しています。

    Screenshot shows selecting an SAP action to filter messages in a Consumption workflow.

    または、アクションを手動で指定します。

    Screenshot shows manually entering the SAP action to filter messages in a Consumption workflow.

    次の例は、複数のメッセージを受信するようにトリガーを設定したときにアクションがどのように表示されるかを示しています。

    Screenshot shows example trigger that receives multiple messages in a Consumption workflow.

  5. SAP サーバーからメッセージの受信を開始できるように、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。

    これで、ワークフローは SAP サーバーからメッセージを受信できるようになりました。

  6. トリガーが起動してワークフローが実行されたら、ワークフローのトリガー履歴を確認して、トリガーの登録が成功したことを確認します。

SAP から IDoc パケットを受信する

IDoc のバッチまたはグループである IDoc パケットを受信するために、SAP トリガーに追加の構成は必要ありません。 ただし、トリガーでパケットを受信した後に IDoc パケット内の各項目を処理するには、パケットで IDoc を 送信するように SAP を設定して、パケットを個々の IDoc に分割する追加のステップをいくつか実装する必要があります。

次のワークフロー例は、xpath() 関数を使用してパケットから個々の IDoc を抽出する方法を示しています。

  1. 始める前に、SAP トリガーを使用する従量課金または Standard のロジック アプリ ワークフローが必要です。 ワークフローがこのトリガーでまだ開始されていない場合は、このガイドの前の手順に従って、メッセージを受信できる SAP トリガーをワークフローに追加してください。

  2. SAP 要求の状態を使用して SAP サーバーにすぐに応答するには、SAP マネージド トリガーと SAP 組み込みトリガーのどちらを使用するかに基づいて、次の応答アクションを追加します。

    • SAP マネージド トリガー: このトリガーの場合は、ワークフローに応答アクションを追加します

      [応答] アクションで、次のいずれかの状態コード (statusCode) を使用します。

      状態コード 説明
      202 Accepted 要求は処理のために受け入れられましたが、処理はまだ完了していません。
      204 No Content サーバーで要求が正常に処理され、応答ペイロードの本文で送信する追加のコンテンツがありません。
      200 OK サーバーで長さゼロのペイロード本文が生成された場合でも、この状態コードには常にペイロードが含まれます。
    • SAP 組み込みトリガー: このトリガーの場合は、ワークフローに [Respond to SAP server] (SAP サーバーへの応答) アクションを追加します。

    Note

    SAP サーバーとの通信チャネルを解放するために、この応答アクションはトリガーの直後に追加することをお勧めします。

  3. ワークフローで SAP から受け取る XML IDoc からルート名前空間を取得します。

    1. XML ドキュメントからこの名前空間を抽出し、名前空間をローカル文字列変数に格納するには、[Initialize variable] (変数の初期化) アクションを追加します。

    2. アクションのタイトルの名前を、「Get namespace for root node in received IDoc」に変更します。

    3. 変数の名前を指定し、型を String に設定します。

    4. アクションの [値] パラメーターで、編集ボックス内を選択し、式または関数エディターを開き、xpath() 関数を使用して次の式を作成します。

      xpath(xml(triggerBody()?['Content']), 'namespace-uri(/*)')

      従量課金ワークフロー

      Screenshot shows the expression to get the root node namespace from received IDoc for a Consumption workflow.

      Standard ワークフロー

      Screenshot shows the expression to get the root node namespace from received IDoc for a Standard workflow.

      完了すると、式が解決され、次の形式で表示されます。

      Screenshot shows the resolved expression that gets the root node namespace from received IDoc.

  4. IDoc コレクションをローカル配列変数に格納して個々の IDoc を抽出するには、次の手順に従います。

    1. 別の [Initialize variable] (変数の初期化) アクションを追加します。

    2. アクションのタイトルの名前を、「Get array with IDoc data elements」に変更します。

    3. 変数の名前を指定し、型を Array に設定します。

      配列変数を使用すると、コレクションを列挙することによって、各 IDoc をワークフローで個別に処理できるようになります。

    4. アクションの [値] パラメーターで、編集ボックス内を選択し、式または関数エディターを開き、次の xpath() 式を作成します。

      xpath(xml(triggerBody()?['Content']), '/*[local-name()="Receive"]/*[local-name()="idocData"]')

      完了すると、式が解決され、次の形式で表示されます。

      従量課金ワークフロー

      Screenshot shows the expression to get an array of IDocs for a Consumption workflow.

      この例では、次のワークフローは、For each という制御アクションと Create file という名前の SFTP-SSH アクションを使用して、各 IDoc を SFTP サーバーに転送します。 各 IDoc にはルート名前空間が含まれている必要があります。これは、IDoc をダウンストリーム アプリ (この例では SFTP サーバー) に送信する前に、ファイルの内容がルート名前空間と共に <Receive></Receive> 要素内にラップされる理由です。

      Screenshot shows sending an IDoc to an SFTP server from a Consumption workflow.

      Note

      従量課金ワークフローの場合、このパターンはクイック スタート テンプレートとして使用できます。これは、従量課金ロジック アプリ リソースと空のワークフローを作成するときにテンプレート ギャラリーから選択できます。 または、ワークフロー デザイナーが開いているときに、デザイナー ツール バーで [テンプレート] を選択します。

      Screenshot that shows selecting the template for getting an IDoc batch.

      Standard ワークフロー

      Screenshot shows the expression to get an array of IDocs for a Standard workflow.

      この例では、次のワークフローは、For each という制御アクションと Create file という名前の SFTP-SSH アクションを使用して、各 IDoc を SFTP サーバーに転送します。 各 IDoc にはルート名前空間が含まれている必要があります。これは、IDoc をダウンストリーム アプリ (この例では SFTP サーバー) に送信する前に、ファイルの内容がルート名前空間と共に <Receive></Receive> 要素内にラップされる理由です。

      Screenshot shows sending an IDoc to an SFTP server from a Standard workflow.


受信したメッセージを SAP アクションを使用してフィルター処理する

SAP マネージド コネクタまたは ISE バージョン管理された SAP コネクタを使用する場合は、ワークフローのトリガーで、受信した XML ペイロードのルート ノード名前空間に基づいて、SAP サーバーからの不要なアクションを明示的に除外する方法を設定します。 1 つまたは複数の SAP アクションを含むリスト (配列) を指定できます。 既定では、この配列は空です。つまり、ワークフローは、フィルター処理なしで SAP サーバーからすべてのメッセージを受信します。 配列フィルターを設定すると、トリガーは指定された SAP アクションの種類からのメッセージのみを受信し、SAP サーバーからの他のすべてのメッセージを拒否します。 ただし、このフィルターは、受信したペイロードの型指定が厳密かそうでないかには影響しません。 SAP アクションによるフィルター処理はすべて、オンプレミス データ ゲートウェイ用の SAP アダプターのレベルで実行されます。 詳細については、SAP から Logic Apps への IDoc 送信をテストする方法に関するセクションを参照してください。

トリガーで非同期の要求 - 応答パターンを設定する

SAP マネージド コネクタでは、Azure Logic Apps トリガー用の Azure の非同期要求 - 応答パターンがサポートされています。 このパターンを使用すると、既定の同期要求 - 応答パターンであれば失敗していた要求を成功させることができます。

注意

複数の応答アクションを持つワークフローでは、すべての応答アクションで同じ要求 - 応答パターンを使用する必要があります。 たとえば、ワークフローで複数の応答アクションが可能なスイッチ コントロールを使用している場合は、すべての応答アクションで同じ要求 - 応答パターン (同期または非同期) を使用するように構成する必要があります。

応答アクションに対して非同期応答を有効にすると、ワークフローは、処理要求を受け入れるた後に 202 Accepted の応答を返すことができます。 この応答には、要求の最終状態を取得するために使用できる場所ヘッダーが含まれています。

SAP コネクタを使用してワークフローの非同期要求 - 応答パターンを構成するには、次の手順を実行します。

  1. デザイナーで、ロジック アプリ ワークフローを開きます。 ワークフローが SAP トリガーで開始されていることを確認します。

  2. ワークフローで [応答] アクションを見つけて、そのアクションの [設定] を開きます。

  3. 従量課金と Standard のどちらのワークフローを使用しているかに基づいて、対応する手順に従ってください。

    • 従量課金: [Asynchronous Response] (非同期応答) で、設定を [オフ] から [オン] に切り替え、[完了] を選択します。
    • Standard: [ネットワーク] を展開し、[Asynchronous Response] (非同期応答) で設定を [オフ] から [オン] に切り替えます。
  4. ワークフローを保存します。

SAP に IDOC を送信する

IDoc を SAP サーバーに送信し、応答を返すロジック アプリ ワークフローを作成するには、以下の例に従ってください。

  1. HTTP 要求によってトリガーされるロジック アプリ ワークフローを作成します。
  2. IDoc を SAP に送信するための SAP アクションをワークフローに追加します。
  3. ワークフローに応答アクションを追加します。
  4. RFC を使用して SAP ABAP からの応答を受信している場合は、リモート関数呼び出し (RFC) の要求 - 応答パターンを作成します。
  5. ワークフローをテストします。

要求トリガーを追加する

ワークフローで、XML HTTP を使用して SAP から IDoc を受信するには、要求組み込みトリガーを使用できます。 このトリガーは、SAP サーバーが HTTP POST 要求をワークフローに送信できる URL を持つエンドポイントを作成します。 ワークフローがこれらの要求を受信すると、トリガーが作動してワークフロー内の次のステップが実行されます。

共通プログラミング インターフェイス通信 (CPIC) を使用して IDoc をプレーン XML またはフラット ファイルとして受信するには、「SAP からのメッセージの受信」セクションを確認してください。

マルチテナント Azure Logic Apps の従量課金ワークフローであるか、シングルテナント Azure Logic Apps の Standard ワークフローであるかに基づいて、以下の対応する手順に従ってください。

  1. Azure portal で、従量課金ロジック アプリ リソースと空のワークフローをデザイナーで作成します。

  2. デザイナーで、こちらの一般的な手順に従って、[When a HTTP request is received] (HTTP 要求を受信したとき) という名前の組み込み要求トリガーを見つけて追加します

    Screenshot shows the Request trigger for a Consumption workflow.

  3. ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。

    このステップでは、次のように、トリガーが SAP サーバーから要求を受信できるエンドポイント URL が生成されます。

    Screenshot shows the Request trigger's generated endpoint URL for receiving requests in a Consumption workflow.

IDoc を送信する SAP アクションを追加する

次に、ワークフローの要求トリガーが起動したときに IDoc を SAP に送信するアクションを作成します。 マルチテナント Azure Logic Apps の従量課金ワークフローであるか、シングルテナント Azure Logic Apps の Standard ワークフローであるかに基づいて、以下の対応する手順に従ってください。

  1. ワークフロー デザイナーの要求トリガーで、[新しいステップ] を選択します。

  2. デザイナーで、こちらの一般的な手順に従って、[Send message to SAP] (SAP にメッセージを送信) という名前の SAP マネージド アクションを見つけて追加します

  3. ダイアログが表示されたら、オンプレミスの SAP サーバーに関する以下の接続情報を指定します。 完了したら [作成] を選択します。 それ以外の場合は、次のステップに進み、SAP アクションを設定します。

    パラメーター 必須 説明
    接続名 はい 接続名を入力します。
    データ ゲートウェイ Yes 1. [サブスクリプション] で、データ ゲートウェイのインストールのために Azure portal で作成したデータ ゲートウェイ リソースの Azure サブスクリプションを選択します。

    2. [接続ゲートウェイ] で、Azure のデータ ゲートウェイ リソースを選択します。
    Client Yes SAP サーバーへの接続に使用する SAP クライアント ID
    認証の種類 はい 接続に使用する認証の種類。[基本] (ユーザー名とパスワード) にする必要があります。 SNC 接続を作成するには、「Secure Network Communications (SNC) を有効にする」を参照してください。
    SAP ユーザー名 はい SAP サーバーのユーザー名
    SAP パスワード Yes SAP サーバーのパスワード
    ログオンの種類 はい アプリケーション サーバーまたはグループ (メッセージ サーバー) のいずれかを選択し、必要に応じて対応するパラメーターを構成します(省略可能)。

    アプリケーション サーバー:
    - AS ホスト: SAP アプリケーション サーバーのホスト名
    - AS サービス: SAP アプリケーション サーバーのサービス名またはポート番号
    - AS システム番号: SAP サーバーのシステム番号 (00 から 99 の範囲)

    グループ:
    - MS サーバー ホスト: SAP メッセージ サーバーのホスト名
    - MS サービス名またはポート番号: SAP メッセージ サーバーのサービス名またはポート番号
    - MS システム ID: SAP サーバーのシステム ID
    - MS ログオン グループ: SAP サーバーのログオン グループ。 SAP サーバーで、[CCMS: ログオン グループの管理] (T-Code SMLG) ダイアログ ボックスを開くと、ログオン グループの値を検索または編集できます。 詳細については、「SAP Note 26317 - 自動負荷分散のための LOGON グループの設定」を参照してください。
    安全な型指定 いいえ このオプションは、下位互換性のために用意されており、文字列の長さのみをチェックします。 既定では、厳密な型指定は、スキーマに照らした XML 検証を実行することによって無効な値をチェックするために使用します。 この動作により、問題を初期段階で検出できます。 詳しくは、安全な型指定の設定に関する記事をご覧ください。
    SNC を使用する いいえ SNC 接続を作成するには、「Secure Network Communications (SNC) を有効にする」を参照してください。

    その他の使用可能なオプションの接続パラメーターについては、既定の接続情報に関するセクションを参照してください。

    Azure Logic Apps が接続を設定してテストすると、SAP アクション情報ボックスが表示されます。 発生する可能性がある接続の問題の詳細については、「接続のトラブルシューティング」を参照してください。

    Screenshot shows a Consumption workflow with the SAP managed action named Send message to SAP.

  4. [Send message to SAP] (SAP にメッセージを送信) アクションで、IDoc を送信する SAP サーバーで使用可能な SAP アクションを見つけて選択します。

    [Send message to SAP] (SAP にメッセージを送信) アクションは汎用であり、BAPI、IDoc、RFC、または tRFC のメッセージを送信できますが、最初に使用するメッセージ型と SAP アクションを選択する必要があります。

    1. SAP Action パラメーターの編集ボックスで、フォルダー アイコンを選択します。 開いたリストから [BAPI][ IDOC][RFC]、または [TRFC] を選択します。 この例では [IDOC] が選択されています。 別の種類を選択した場合、選択内容に応じて使用可能な SAP アクションが変化します。

      Note

      Bad Gateway (500) エラーまたは Bad request (400) エラーが発生した場合は、「500 Bad Gateway または 400 Bad Request エラー」を参照してください。

      Screenshot shows selecting IDOC for a Consumption workflow.

    2. 矢印を使用して SAP アクションの種類のフォルダーを参照し、使用する SAP アクションを見つけて選択します。

      この例では、[ORDERS]>[ORDERS05]>[720]>[Send] を選択しています。

      Screenshot shows finding an Orders action for a Consumption workflow.

      目的のアクションが見つからない場合は、パスを手動で入力してください。その例を次に示します。

      Screenshot shows manually entering a path to an Orders action type for a Consumption workflow.

      ヒント

      SAP Action パラメーターでは、式エディターを使用してパラメーター値を指定できます。 これにより、異なる種類のメッセージに対して同じ SAP アクションを使用できます。

      IDoc メッセージの詳細については、「IDoc 操作のメッセージ スキーマ」を参照してください。

    3. [Send message to SAP] (SAP にメッセージを送信) アクションに、要求トリガーからの本文の出力を含めます。

      1. [入力メッセージ] パラメーターで、編集ボックス内を選択して動的コンテンツ リストを開きます。

      2. 動的コンテンツ リストの [When a HTTP request is received] (HTTP 要求の受信時) で、[本文] を選択します。 [本文] フィールドには、要求トリガーからの本文出力が含まれています。

        注意

        リストに [本文] フィールドが表示されない場合は、[When a HTTP request is received] (HTTP 要求の受信時) ラベルの横にある [表示数を増やす] を選択します。

      Screenshot shows selecting the Request trigger's output named Body for Consumption workflow.

      [Send message to SAP] (SAP にメッセージを送信) アクションに、要求トリガーからの本文の内容が含まれるようになり、その出力が SAP サーバーに送信されるようになりました。次に例を示します。

      Screenshot shows completed SAP action for Consumption workflow.

  5. ワークフローを保存します。

フラット ファイル IDoc を SAP サーバーに送信する (マネージド コネクタのみ)

SAP マネージド コネクタの使用時にフラット ファイル スキーマを使用して IDoc を送信するには、IDoc を XML エンベロープでラップし、一般的な手順に従って IDoc を送信する SAP アクションを追加しますが、次の変更点があります。

Note

SAP 組み込みコネクタを使用している場合は、フラット ファイル IDoc を XML エンベロープでラップしないようにしてください。

IDoc を XML エンベロープでラップする

  1. メッセージの送信に使用する SAP アクションで、次の URI を使用します。

    http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc

  2. XML エンベロープを使用して入力メッセージの書式を設定します。

次の例は、サンプルの XML ペイロードを示しています。

<SendIdoc xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/">
  <idocData>EDI_DC 3000000001017945375750 30INVOIC011BTSVLINV30KUABCABCFPPC LDCA X004010810 4 SAPMSX LSEDI ABCABCFPPC 000d3ae4-723e-1edb-9ca4-cc017365c9fd 20210217054521INVOICINVOIC01ZINVOIC2RE 20210217054520
E2EDK010013000000001017945375000001E2EDK01001000000010 ABCABC1.00000 0060 INVO9988298128 298.000 298.000 LB Z4LR EN 0005065828 L
E2EDKA1 3000000001017945375000002E2EDKA1 000000020 RS ABCABCFPPC 0005065828 ABCABCABC ABCABC Inc. Limited Risk Distributor ABCABC 1950 ABCABCABCA Blvd ABCABAABCAB L5N8L9 CA ABCABC E ON V-ABCABC LDCA
E2EDKA1 3000000001017945375000003E2EDKA1 000000020 AG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000004E2EDKA1 000000020 RE 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000005E2EDKA1 000000020 RG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000006E2EDKA1 000000020 WE 0005001847 41 ABCABC ABCABC INC (ABCABC) DC A. ABCABCAB 88 ABCABC CRESCENT ABCABAABCAB L5R 4A2 CA ABCABC 111-111-1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000007E2EDKA1 000000020 Z3 0005533050 ABCABCABC ABCABC Inc. ABCA Bank Swift Code -ABCABCABCAB Sort Code - 1950 ABCABCABCA Blvd. Acc No -1111111111 ABCABAABCAB L5N8L9 CA ABCABC E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000008E2EDKA1 000000020 BK 1075 ABCABCABC ABCABC Inc 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDKA1 3000000001017945375000009E2EDKA1 000000020 CR 1075 CONTACT ABCABCABC 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDK02 3000000001017945375000010E2EDK02 000000020 0099988298128 20210217
E2EDK02 3000000001017945375000011E2EDK02 000000020 00140-N6260-S 20210205
E2EDK02 3000000001017945375000012E2EDK02 000000020 0026336270425 20210217
E2EDK02 3000000001017945375000013E2EDK02 000000020 0128026580537 20210224
E2EDK02 3000000001017945375000014E2EDK02 000000020 01740-N6260-S
E2EDK02 3000000001017945375000015E2EDK02 000000020 900IAC
E2EDK02 3000000001017945375000016E2EDK02 000000020 901ZSH
E2EDK02 3000000001017945375000017E2EDK02 000000020 9078026580537 20210217
E2EDK03 3000000001017945375000018E2EDK03 000000020 02620210217
E2EDK03 3000000001017945375000019E2EDK03 000000020 00120210224
E2EDK03 3000000001017945375000020E2EDK03 000000020 02220210205
E2EDK03 3000000001017945375000021E2EDK03 000000020 01220210217
E2EDK03 3000000001017945375000022E2EDK03 000000020 01120210217
E2EDK03 3000000001017945375000023E2EDK03 000000020 02420210217
E2EDK03 3000000001017945375000024E2EDK03 000000020 02820210418
E2EDK03 3000000001017945375000025E2EDK03 000000020 04820210217
E2EDK17 3000000001017945375000026E2EDK17 000000020 001DDPDelivered Duty Paid
E2EDK17 3000000001017945375000027E2EDK17 000000020 002DDPdestination
E2EDK18 3000000001017945375000028E2EDK18 000000020 00160 0 Up to 04/18/2021 without deduction
E2EDK28 3000000001017945375000029E2EDK28 000000020 CA BOFACATT Bank of ABCABAB ABCABC ABCABAB 50127217 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000030E2EDK28 000000020 CA 026000082 ABCAbank ABCABC ABCABAB 201456700OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000031E2EDK28 000000020 GB ABCAGB2L ABCAbank N.A ABCABA E14, 5LB GB63ABCA18500803115593 ABCABCABC ABCABC Inc. GB63ABCA18500803115593
E2EDK28 3000000001017945375000032E2EDK28 000000020 CA 020012328 ABCABANK ABCABC ABCABAB ON M5J 2M3 2014567007 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000033E2EDK28 000000020 CA 03722010 ABCABABC ABCABABC Bank of Commerce ABCABAABCAB 64-04812 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000034E2EDK28 000000020 IE IHCC In-House Cash Center IHCC1075 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000035E2EDK28 000000020 CA 000300002 ABCAB Bank of ABCABC ABCABAB 0021520584OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000036E2EDK28 000000020 US USCC US Cash Center (IHC) city USCC1075 ABCABCABC ABCABC Inc.
E2EDK29 3000000001017945375000037E2EDK29 000000020 0064848944US A CAD CA ABCABC CA United States US CA A Air Air
E2EDKT1 3000000001017945375000038E2EDKT1 000000020 ZJ32E EN
E2EDKT2 3000000001017945375000039E2EDKT2 000038030 GST/HST877845941RT0001 *
E2EDKT2 3000000001017945375000040E2EDKT2 000038030 QST1021036966TQ0001 *
E2EDKT1 3000000001017945375000041E2EDKT1 000000020 Z4VL
E2EDKT2 3000000001017945375000042E2EDKT2 000041030 0.000 *
E2EDKT1 3000000001017945375000043E2EDKT1 000000020 Z4VH
E2EDKT2 3000000001017945375000044E2EDKT2 000043030 *
E2EDK14 3000000001017945375000045E2EDK14 000000020 008LDCA
E2EDK14 3000000001017945375000046E2EDK14 000000020 00710
E2EDK14 3000000001017945375000047E2EDK14 000000020 00610
E2EDK14 3000000001017945375000048E2EDK14 000000020 015Z4F2
E2EDK14 3000000001017945375000049E2EDK14 000000020 0031075
E2EDK14 3000000001017945375000050E2EDK14 000000020 021M
E2EDK14 3000000001017945375000051E2EDK14 000000020 0161075
E2EDK14 3000000001017945375000052E2EDK14 000000020 962M
E2EDP010013000000001017945375000053E2EDP01001000000020 000011 2980.000 EA 298.000 LB MOUSE 298.000 Z4TN 4260
E2EDP02 3000000001017945375000054E2EDP02 000053030 00140-N6260-S 00000120210205 DFUE
E2EDP02 3000000001017945375000055E2EDP02 000053030 0026336270425 00001120210217
E2EDP02 3000000001017945375000056E2EDP02 000053030 0168026580537 00001020210224
E2EDP02 3000000001017945375000057E2EDP02 000053030 9100000 00000120210205 DFUE
E2EDP02 3000000001017945375000058E2EDP02 000053030 911A 00000120210205 DFUE
E2EDP02 3000000001017945375000059E2EDP02 000053030 912PP 00000120210205 DFUE
E2EDP02 3000000001017945375000060E2EDP02 000053030 91300 00000120210205 DFUE
E2EDP02 3000000001017945375000061E2EDP02 000053030 914CONTACT ABCABCABC 00000120210205 DFUE
E2EDP02 3000000001017945375000062E2EDP02 000053030 963 00000120210205 DFUE
E2EDP02 3000000001017945375000063E2EDP02 000053030 965 00000120210205 DFUE
E2EDP02 3000000001017945375000064E2EDP02 000053030 9666336270425 00000120210205 DFUE
E2EDP02 3000000001017945375000065E2EDP02 000053030 9078026580537 00001020210205 DFUE
E2EDP03 3000000001017945375000066E2EDP03 000053030 02920210217
E2EDP03 3000000001017945375000067E2EDP03 000053030 00120210224
E2EDP03 3000000001017945375000068E2EDP03 000053030 01120210217
E2EDP03 3000000001017945375000069E2EDP03 000053030 02520210217
E2EDP03 3000000001017945375000070E2EDP03 000053030 02720210217
E2EDP03 3000000001017945375000071E2EDP03 000053030 02320210217
E2EDP03 3000000001017945375000072E2EDP03 000053030 02220210205
E2EDP19 3000000001017945375000073E2EDP19 000053030 001418VVZ
E2EDP19 3000000001017945375000074E2EDP19 000053030 002RJR-00001 AB ABCABCABC Mouse FORBUS BLUETOOTH
E2EDP19 3000000001017945375000075E2EDP19 000053030 0078471609000
E2EDP19 3000000001017945375000076E2EDP19 000053030 003889842532685
E2EDP19 3000000001017945375000077E2EDP19 000053030 011CN
E2EDP26 3000000001017945375000078E2EDP26 000053030 00459064.20
E2EDP26 3000000001017945375000079E2EDP26 000053030 00352269.20
E2EDP26 3000000001017945375000080E2EDP26 000053030 01052269.20
E2EDP26 3000000001017945375000081E2EDP26 000053030 01152269.20
E2EDP26 3000000001017945375000082E2EDP26 000053030 0126795.00
E2EDP26 3000000001017945375000083E2EDP26 000053030 01552269.20
E2EDP26 3000000001017945375000084E2EDP26 000053030 00117.54
E2EDP26 3000000001017945375000085E2EDP26 000053030 00252269.20
E2EDP26 3000000001017945375000086E2EDP26 000053030 940 2980.000
E2EDP26 3000000001017945375000087E2EDP26 000053030 939 2980.000
E2EDP05 3000000001017945375000088E2EDP05 000053030 + Z400MS List Price 52269.20 17.54 1 EA CAD 2980
E2EDP05 3000000001017945375000089E2EDP05 000053030 + XR1 Tax Jur Code Level 6795.00 13.000 52269.20
E2EDP05 3000000001017945375000090E2EDP05 000053030 + Tax Subtotal1 6795.00 2.28 1 EA CAD 2980
E2EDP05 3000000001017945375000091E2EDP05 000053030 + Taxable Amount + TaxSubtotal1 59064.20 19.82 1 EA CAD 2980
E2EDP04 3000000001017945375000092E2EDP04 000053030 CX 13.000 6795.00 7000000000
E2EDP04 3000000001017945375000093E2EDP04 000053030 CX 0 0 7001500000
E2EDP04 3000000001017945375000094E2EDP04 000053030 CX 0 0 7001505690
E2EDP28 3000000001017945375000095E2EDP28 000053030 00648489440000108471609000 CN CN ABCAB ZZ 298.000 298.000 LB US 400 United Stat KY
E2EDPT1 3000000001017945375000096E2EDPT1 000053030 0001E EN
E2EDPT2 3000000001017945375000097E2EDPT2 000096040 AB ABCABCABC Mouse forBus Bluetooth EN/XC/XD/XX Hdwr Black For Bsnss *
E2EDS01 3000000001017945375000098E2EDS01 000000020 0011
E2EDS01 3000000001017945375000099E2EDS01 000000020 01259064.20 CAD
E2EDS01 3000000001017945375000100E2EDS01 000000020 0056795.00 CAD
E2EDS01 3000000001017945375000101E2EDS01 000000020 01159064.20 CAD
E2EDS01 3000000001017945375000102E2EDS01 000000020 01052269.20 CAD
E2EDS01 3000000001017945375000103E2EDS01 000000020 94200000 CAD
E2EDS01 3000000001017945375000104E2EDS01 000000020 9440.00 CAD
E2EDS01 3000000001017945375000105E2EDS01 000000020 9450.00 CAD
E2EDS01 3000000001017945375000106E2EDS01 000000020 94659064.20 CAD
E2EDS01 3000000001017945375000107E2EDS01 000000020 94752269.20 CAD
E2EDS01 3000000001017945375000108E2EDS01 000000020 EXT
Z2XSK010003000000001017945375000109Z2XSK01000000108030 Z400 52269.20
Z2XSK010003000000001017945375000110Z2XSK01000000108030 XR1 13.000 6795.00 CX
</idocData>
</SendIdoc>

応答アクションを追加する

次に、SAP サーバーから元の要求元に結果を返すようにワークフローを設定します。 このタスクを実行するには、次の手順に従います。

  1. ワークフロー デザイナーで、SAP アクションの下に表示される [New step (新しいステップ)] を選択します。

  2. デザイナーで、こちらの一般的な手順に従って、[応答] という名前の要求組み込みアクションを見つけて追加します

  3. [応答] アクションの [本文] パラメーターで、編集ボックス内を選択して動的コンテンツ リストを開きます。

  4. 動的コンテンツ リストの [Send message to SAP] (SAP にメッセージを送信) で、[本文] を選択します。 [本文] フィールドには、SAP アクションからの本文出力が含まれています。

    Screenshot shows selecting SAP action output named Body for Consumption workflow.

  5. ワークフローを保存します。

リモート関数呼び出し (RFC) の要求 - 応答パターンを作成する

SAP マネージド コネクタと ISE バージョン管理 SAP コネクタを使用する従量課金ワークフローで、SAP ABAP から Azure Logic Apps へのリモート関数呼び出し (RFC) を使用して応答を受信する必要がある場合は、要求 - 応答パターンを実装する必要があります。 要求トリガーを使用するときにワークフローで IDoc を受信するには、ワークフローの最初のアクションが、コンテンツなしで 200 OK 状態コードを使用する応答アクションである必要があります。 この推奨される手順では、tRFC 経由での SAP Logical Unit of Work (LUW) の非同期転送が直ちに実行され、SAP CPIC の会話が再び使用可能になります。 その後、後続の転送をブロックすることなく、受信した IDoc を処理するためのアクションをワークフローに追加できます。

Note

SAP トリガーは tRFC 経由で IDoc を受信します。これは、仕様上応答パラメーターがありません。

要求と応答のパターンを実装するには、最初に、generate schema コマンドを使用して RFC スキーマを検出する必要があります。 生成されるスキーマには、2 つのルート ノードが存在する可能性があります。

  • 要求ノード。これは SAP から受信する呼び出しです。
  • 応答ノード。これは SAP に戻す応答です。

次の例では、STFC_CONNECTION RFC モジュールによって要求 - 応答パターンが生成されます。 要求の XML が解析されて、SAP が <ECHOTEXT> を要求するノード値が抽出されます。 応答により、現在のタイムスタンプが動的な値として挿入されます。 ロジック アプリ ワークフローから SAP に STFC_CONNECTION RFC を送信すると、同様の応答を受け取ります。

<STFC_CONNECTIONResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <ECHOTEXT>@{first(xpath(xml(triggerBody()?['Content']), '/*[local-name()="STFC_CONNECTION"]/*[local-name()="REQUTEXT"]/text()'))}</ECHOTEXT>
  <RESPTEXT>Azure Logic Apps @{utcNow()}</RESPTEXT>
</STFC_CONNECTIONResponse>

ワークフローのテスト

  1. 従量課金ロジック アプリ リソースがまだ有効でない場合は、ロジック アプリのメニューで [概要] を選択します。 ツールバーで、 [Enable](有効化) を選択します。

  2. デザイナーのツール バーの [トリガーの実行]>[実行] を選択してワークフローを手動で開始します。

  3. Webhook トリガー ペイロードをシミュレートするには、ワークフローの要求トリガーで指定されたエンドポイント URL に HTTP POST 要求を送信します。 必ず要求にメッセージ コンテンツを追加してください。 要求を送信するには、Postman API クライアントなどのツールを使用します。

    この例では、HTTP POST 要求により IDoc ファイルが送信されます。これは XML 形式で、選択した SAP アクションの名前空間を含んでいる必要があります。例を次に示します。

    <?xml version="1.0" encoding="UTF-8" ?>
    <Send xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/2/ORDERS05//720/Send">
      <idocData>
        <...>
      </idocData>
    </Send>
    
  4. HTTP 要求を送信したら、ワークフローからの応答を待機します。

    Note

    応答に必要なすべてのステップが要求タイムアウト制限内に完了しない場合、ワークフローがタイムアウトする可能性があります。 この状況に陥ると、要求がブロック状態になります。 問題の診断については、ロジック アプリ ワークフローをチェックおよび監視する方法に関するページを参照してください。

これで、SAP サーバーとやり取りすることのできるワークフローが完成しました。 ワークフローのための SAP 接続を設定したので、BAPI や RFC を使用して実験してみることができす。

安全な型指定

既定では、SAP マネージド操作用の接続を作成するときに、スキーマに照らした XML 検証を実行することによって無効な値をチェックする厳密な型指定が使用されます。 この動作により、問題を初期段階で検出できます。 [安全な型指定] オプションは、旧バージョンとの互換性のために使用でき、文字列の長さのみをチェックします。 [安全な型指定] を選択すると、SAP の DATS 型と TIMS 型は、対応する XML の xs:datexs:time (xmlns:xs="http://www.w3.org/2001/XMLSchema") ではなく、文字列として扱われます。 安全な型指定は、すべてのスキーマ生成、"送信済み" ペイロードと "受信済み" 応答の両方のメッセージ送信、およびトリガーの動作に影響します。

厳密な型指定を使用すると ( [安全な型指定] が有効になっていない場合)、スキーマにより DATS 型と TIMS 型がよりわかりやすい XML 型にマップされます。

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true" type="xs:time"/>

厳密な型指定を使用してメッセージを送信する場合、DATS と TIMS 応答は一致する XML 型の形式に準拠します。

<DATE>9999-12-31</DATE>
<TIME>23:59:59</TIME>

[安全な型指定] が有効になっている場合は、スキーマにより、DATS 型と TIMS 型は、長さだけ制限された XML 文字列フィールドにマップされます。次に例を示します。

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="8" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="6" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

[安全な型指定] が有効になっている状態でメッセージを送信した場合、DATS と TIMS の応答は次の例のようになります。

<DATE>99991231</DATE>
<TIME>235959</TIME>

高度なシナリオ

SAP にデータを送信するための言語ヘッダーを変更する

Azure Logic Apps から SAP に接続する場合、SAP サーバーにデータを送信するために SAP 接続で使用される既定の言語は英語です。 ただし、SAP マネージド コネクタと SAP 組み込みコネクタでは、さまざまな方法で使用される言語の変更と保存が処理されます。

  • SAP 組み込みコネクタを使用して接続を作成する場合、接続パラメーターを使用して、言語パラメーター値を SAP 接続パラメーターの一部として指定して保存できます。

  • SAP マネージド コネクタを使用して接続を作成する場合、接続パラメーターには言語パラメーターがありません。 そのため、この場合、SAP サーバーへのデータの送信に使用する言語を指定することはできません。 代わりに、ワークフローのデザイン時と実行時の両方で、コネクタはサーバーに送信される各要求の Web ブラウザーのローカル言語を使用します。 たとえば、ブラウザーがポルトガル語に設定されている場合、Azure Logic Apps はポルトガル語で SAP 接続を作成してテストしますが、その言語で接続は保存されません。

    ただし、受信要求で標準 HTTP ヘッダーの Accept-Language を使用して、接続の言語を設定できます。 ほとんどの Web ブラウザーでは、ユーザーのロケール設定に基づいて Accept-Language ヘッダーが追加されます。 ワークフロー デザイナーで新しい SAP 接続を作成すると、Web ブラウザーによってこのヘッダーが適用されます。 そのため、Web ブラウザーの設定を更新して、好みの言語を使用するか、ワークフロー デザイナーではなく Azure Resource Manager を使用して SAP 接続を作成することができます。

    たとえば、[When a HTTP request is received] (HTTP 要求の受信時) という要求トリガーを使用して、Accept-Language ヘッダーを含む要求をロジック アプリ ワークフローに送信できます。 ワークフローのすべてのアクションがこのヘッダーを受け取ります。 次に、SAP では、BAPI エラー メッセージなどのシステム メッセージで指定された言語が使用されます。 実行時に Accept-Language ヘッダーを渡さない場合、既定では英語が使用されます。

    Accept-Language ヘッダーを使用すると、次のエラーが発生する場合があります。"Please check your account info and/or permissions and try again" (お使いのアカウントの情報やアクセス許可を確認し、もう一度お試しください)。この場合、代わりに SAP コンポーネントのエラー ログを確認してください。 エラーは、実際にはこのヘッダーを使用する SAP コンポーネントで発生するため、これらのいずれかのエラー メッセージが表示される可能性があります。

    • "SAP.Middleware.Connector.RfcLogonException: インストールされている言語のいずれかを選択してください"

    • "SAP.Middleware.Connector.RfcAbapMessageException: インストールされている言語のいずれかを選択してください"

トランザクションを個別に明示的に確認する

Azure Logic Apps から SAP にトランザクションを送信する場合、この交換は SAP ドキュメントの「Transactional RFC Server Programs」 (トランザクション RFC サーバー プログラム) で説明されている 2 つの手順で行われます。

既定では、[Send message to SAP] (SAP にメッセージを送信) という名前の SAP マネージド コネクタ アクションが、関数を転送し、トランザクションを確認する両方のステップを 1 回の呼び出しで処理します。 これらのステップを切り離すオプションもあります。 転送と確認のステップを切り離す機能は、SAP でトランザクションを複製したくないシナリオで役立ちます。 このようなシナリオには、ネットワークの問題などの原因によって発生する失敗が含まれます。

[[IDOC] Send document to SAP] ([IDOC] ドキュメントを SAP に送信) という名前の SAP マネージド コネクタ アクションを使用して、トランザクションを自動的に確認せずに IDoc を送信できます。 その後、[[IDOC - RFC] Confirm transaction Id] ([IDOC - RFC] トランザクション ID の確認) という名前の SAP マネージド コネクタ アクションを使用して、トランザクションを明示的に確認できます。ワークフローが別のステップでトランザクションを個別に確認する場合、SAP システムはトランザクションを 1 回だけ完了します。

Standard ワークフローの SAP 組み込みコネクタには、転送と確認のステップを個別に処理するアクションもあります。具体的には、[[IDoc] Send document to SAP] ([IDoc] ドキュメントを SAP に送信)[[IDOC - RFC] Confirm transaction Id] ([IDOC - RFC] トランザクション ID の確認) です。

次のサンプル ワークフローは、このパターンを示しています。

  1. デザイナーで空のワークフローを含む従量課金または Standard のロジック アプリを作成して開きます。 [要求] トリガーを追加します。

  2. 重複する IDoc を SAP に送信しないようにするために、こちらの別の手順に従って、SAP アクションで IDoc トランザクション ID を作成して使用します

  3. [[IDOC] Send document to SAP] ([IDOC] ドキュメントを SAP に送信) という名前の SAP アクションをワークフローに追加します。 SAP システムに送信する IDoc の情報と、次の値を指定します。

    パラメーター 価値 説明
    Confirm TID (TID の確認) いいえ トランザクション ID を自動的に確認しません。これは、別のステップで明示的に実行されます。
    Transaction Id GUID (トランザクション ID GUID) <IDoc-transaction-ID> このパラメーターが自動的に表示されない場合は、[新しいパラメーターの追加] リストを開き、パラメーターを選択します。

    この値を手動で指定することも、[IDOC] Send document to SAP] ([IDOC] SAP にドキュメントを送信) アクションからの出力として、コネクタでこの GUID を自動的に生成することもできます。 この例では、GUID を自動的に生成するために、このパラメーターを空のままにします。

    従量課金ワークフロー

    Screenshot shows Consumption workflow with the action named IDOC Send document to SAP.

    Standard ワークフロー

    Screenshot shows Standard workflow with the action named IDOC Send document to SAP.

  4. [[IDOC] Send document to SAP] ([IDOC] SAP にドキュメントを送信) という名前の SAP アクションで、[設定] を開いて再試行ポリシーを確認します。

    [既定] オプションが推奨されるポリシーですが、特定のニーズに合わせてカスタム ポリシーを選択できます。 カスタム ポリシーを使用する場合は、一時的なネットワーク障害に対応するために、少なくとも 1 回の再試行を設定してください。

  5. 次に、[[IDOC - RFC] Confirm transaction Id] ([IDOC - RFC] トランザクション ID の確認) という名前の SAP アクションを追加します。

    1. [トランザクション ID] パラメーターで、編集ボックス内を選択して動的コンテンツ リストを開きます。

    2. リストの [[IDOC] Send document to SAP] ([IDOC] SAP にドキュメントを送信) で、[トランザクション ID] の値を選択します。これは、前の SAP アクションからの出力です。

      従量課金ワークフロー

      Screenshot shows Consumption workflow with action named Confirm transaction ID, which includes GUID output from previous action.

      Standard ワークフロー

      Screenshot shows Standard workflow with action named Confirm transaction ID, which includes GUID output from previous action.

    この手順が行われた後、現在のトランザクションは、SAP コネクタ側と SAP システム側の両端で完了としてマークされます。

トランザクション ID 変数を使用して重複する IDoc を送信しないようにする

ワークフローで重複する IDoc が SAP に送信されるという問題が発生する場合、IDoc トランザクション識別子として機能する文字列変数を作成できます。 その後、この識別子を使用して、一時的な停止、ネットワークの問題、失われた受信確認などの状況で重複するネットワーク転送を防ぐことができます。

  1. デザイナーで要求トリガーを追加した後、[[IDOC] Send document to SAP] ([IDOC] SAP にドキュメントを送信) という名前の SAP アクションを追加する前に、[Initialize variable] (変数の初期化) というアクションをワークフローに追加します。

  2. アクションの名前を 「Create IDoc transaction ID」に変更します。

  3. アクションの情報ボックスに、以下のパラメーター値を指定します。

    パラメーター 価値 内容
    名前 <variable-name> 変数の名前 (IDocTransactionID など)
    Type String 変数の型
    Value guid() 編集ボックス内を選択し、式または関数エディターを開き、「guid()」と入力します。 変更を保存します。

    [値] パラメーターが、GUID を生成する guid() 関数に設定されます。

    従量課金ワークフロー

    Screenshot shows Consumption workflow with the action named Create transaction ID.

    Standard ワークフロー

    Screenshot shows Standard workflow with the action named Create transaction ID.

    Note

    SAP システムでは、指定された時間 (既定では 24 時間) が経過すると、トランザクション識別子がわからなくなります。 その結果、ID または GUID が不明の場合、SAP はトランザクション識別子を確認できません。 トランザクション ID の確認が失敗する場合、このエラーは、SAP が確認を応答する前に SAP システムとの通信が失敗したことを示します。

  4. [[IDOC] Send document to SAP] ([IDOC] ドキュメントを SAP に送信) という名前の SAP アクションをワークフローに追加します。 SAP システムに送信する IDoc の情報と、次の値を指定します。

    パラメーター 価値 説明
    Confirm TID (TID の確認) いいえ トランザクション ID を自動的に確認しません。これは、別のステップで明示的に実行されます。
    Transaction Id GUID (トランザクション ID GUID) <IDoc-transaction-ID> このパラメーターが自動的に表示されない場合は、[新しいパラメーターの追加] リストを開き、パラメーターを選択します。 作成したトランザクション ID 変数を選択するには、次の手順に従います。

    1. [Transaction Id GUID] (トランザクション ID GUID) パラメーターで、編集ボックス内を選択して動的コンテンツ リストを開きます。

    2. リストの [変数] で、前に作成した変数 (この例では IDocTransactionID) を選択します。

    従量課金ワークフロー

    Screenshot shows Consumption workflow with action named IDOC Send document to SAP.

    Standard ワークフロー

    Screenshot shows Standard workflow with action named IDOC Send document to SAP.

  5. [[IDOC] Send document to SAP] ([IDOC] SAP にドキュメントを送信) という名前の SAP マネージド アクションで、[設定] を開いて再試行ポリシーを確認します。

    [既定] オプションが推奨されるポリシーですが、特定のニーズに合わせてカスタム ポリシーを選択できます。 カスタム ポリシーを使用する場合は、一時的なネットワーク障害に対応するために、少なくとも 1 回の再試行を設定してください。

    注意

    現在、マネージド コネクタのアクションにのみ再試行ポリシーの設定があり、組み込みのサービス プロバイダー ベースのコネクタにはありません。

  6. 次に、[[IDOC - RFC] Confirm transaction Id] ([IDOC - RFC] トランザクション ID の確認) という名前の SAP アクションを追加します。

    1. [トランザクション ID] パラメーターで、編集ボックス内を選択して動的コンテンツ リストを開きます。

    2. リストの [変数] で、作成した変数の名前 (この例では IDocTransactionID) を入力します。

      従量課金ワークフロー

      Screenshot shows Consumption workflow with action named Confirm transaction ID using a variable.

      Standard ワークフロー

      Screenshot shows Standard workflow with action named Confirm transaction ID using a variable.

  7. 必要に応じて、テスト環境で重複除去を検証します。

    1. [[IDOC] Send document to SAP] ([IDOC] ドキュメントを SAP に送信) という名前の別の SAP アクションを追加します。 [トランザクション ID] パラメーターで、前のステップで使用した トランザクション ID GUID を選択します。

    2. [[IDOC] Send document to SAP] ([IDOC] SAP にドキュメントを送信する) という名前のアクションを呼び出すたびに、どの IDoc 番号が割り当てられたかを確認するには、[[IDOC] Get IDOC list for transaction] ([IDOC] トランザクションの IDOC リストを取得する) アクションを、同じ [Transaction ID] (トランザクション ID)[Receive] (受信) 方向でワークフローに追加します。

      両方の呼び出しで同じ IDoc 番号が返された場合、その IDoc の重複は除去されています。

同じ IDoc を 2 回送信すると、SAP が tRFC 呼び出しの重複を識別し、2 つの呼び出しを 1 つの受信 IDoc メッセージに解決できることを検証できます。

問題のトラブルシューティング

接続の問題

接続の作成中に次のエラーが発生した場合は、SAP NCo クライアント ライブラリのインストールに問題があります。

Test connection failed. (接続のテストに失敗しました。) Error 'Failed to process request. (エラー '要求を処理できませんでした。) Error details: 'could not load file or assembly 'sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23' or one of its dependencies. (エラーの詳細: 'ファイルまたはアセンブリ 'sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23' またはその依存関係の 1 つの読み込みに失敗しました。) The system cannot find the file specified.'.' (指定されたファイルが見つかりません。)

必要なバージョンの SAP NCo クライアント ライブラリをインストールし、その他のすべての前提条件が満たされていることを確認してください

500 Bad Gateway または 400 Bad Request エラー

500 Bad Gateway または 400 Bad Request のエラーで、「service 'sapgw00' unknown」のようなメッセージが表示された場合は、ポート番号へのネットワーク サービス名解決に失敗しているなどの可能性があります。

{
   "body": {
      "error": {
         "code": 500,
         "source": "EXAMPLE-FLOW-NAME.eastus.environments.microsoftazurelogicapps.net",
         "clientRequestId": "00000000-0000-0000-0000-000000000000",
         "message": "BadGateway",
         "innerError": {
            "error": {
               "code": "UnhandledException",
               "message": "\nERROR service 'sapgw00' unknown\nTIME Wed Nov 11 19:37:50 2020\nRELEASE 721\nCOMPONENT NI (network interface)\nVERSION 40\nRC -3\nMODULE ninti.c\nLINE 933\nDETAIL NiPGetServByName: 'sapgw00' not found\nSYSTEM CALL getaddrinfo\nCOUNTER 1\n\nRETURN CODE: 20"
            }
         }
      }
   }
}
  • オプション 1: API 接続とトリガー構成で、ゲートウェイ サービス名をそのポート番号に置き換えます。 次のエラーの例では、sapgw00 を実際のポート番号 (3300 など) に置き換える必要があります。 これは ISE のみで使用可能なオプションです。

  • オプション 2: オンプレミス データ ゲートウェイを使用している場合は、%windir%\System32\drivers\etc\services のポート マッピングにゲートウェイ サービス名を追加し、オンプレミスデータ ゲートウェイ サービスを再起動できます。次に例を示します。

    sapgw00  3300/tcp
    

SAP アプリケーション サーバーまたはメッセージ サーバーの名前が IP アドレスに解決されると、同様のエラーが表示されることがあります。 ISE の場合、SAP アプリケーション サーバーまたはメッセージ サーバーの IP アドレスを指定する必要があります。 オンプレミス データ ゲートウェイの場合は、次のように、%windir%\System32\drivers\etc\hosts で IP アドレス マッピングに名前を追加できます。

10.0.1.9 SAPDBSERVER01 # SAP System Server VPN IP by computer name
10.0.1.9 SAPDBSERVER01.someguid.xx.xxxxxxx.cloudapp.net # SAP System Server VPN IP by fully qualified computer name

SAP からトリガーへの IDoc パケット送信のエラー

SAP からトリガーに IDoc パケットを送信できない場合は、[SAP tRFC (T-Code SM58)] ダイアログボックスの Transactional RFC (tRFC) の呼び出し拒否メッセージを確認してください。 SAP インターフェイスに、 [Status Text](状態テキスト) フィールドの部分文字列の制限によって切り詰められている次のエラー メッセージが表示される場合があります。

The segment or group definition E2EDK36001 was not found in the IDoc meta (セグメントまたはグループ定義 E2EDK36001 が IDoc メタで見つかりませんでした)

このエラー メッセージは、他のエラーによって予期されるエラーが発生することを意味します。 たとえば、IDoc XML ペイロードが生成されないエラーは、そのセグメントが SAP によって解放されないことに起因します。 その結果、変換に必要なセグメントの種類のメタデータが見つかりません。

これらのセグメントを SAP にリリースしてもらうには、SAP システムの ABAP エンジニアに連絡してください。

The RequestContext on the IReplyChannel was closed without a reply being sent (IReplyChannel の RequestContext は、応答が送信されずに閉じられました)

SAP マネージド コネクタおよび ISE バージョン管理 SAP コネクタの場合、このエラー メッセージは、エラーによってチャネルの汎用ハンドラーがチャネルを終了し、他のメッセージを処理するためにチャネルを再構築したときに、予期しないエラーが発生したことを意味します。

注意

SAP マネージド トリガーと ISE バージョン管理 SAP トリガーは、SOAP ベースの SAP アダプターを使用する Webhook です。 ただし、SAP 組み込みトリガーは、SOAP SAP アダプターを使用せず、このエラー メッセージを受け取らない Azure Functions ベースのトリガーです。

  • ワークフローが IDoc を受信したことを確認応答するには、200OK 状態コードを返す応答アクションを追加します。 本文は空のままにして、変更したりヘッダーに追加したりしないでください。 IDoc は tRFC 経由で転送され、応答ペイロードは許可されません。

  • 代わりに IDoc を拒否するには、200 OK 以外の HTTP 状態コードを使用して応答します。 その後、ユーザーに代わって、SAP アダプターによって例外が SAP に返されます。 IDoc を拒否するのは、アプリケーションが処理できない、誤って転送された IDoc などの転送エラーを SAP に通知する場合のみです。 IDoc に含まれているデータに関する問題など、アプリケーション レベルのエラーの場合は IDoc を拒否しないでください。 アプリケーション レベルの検証のために転送の受け入れを遅らせた場合、接続において他の IDoc の転送がブロックされるため、パフォーマンスが低下するおそれがあります。

  • このエラー メッセージを受信し、Azure Logic Apps の呼び出しでシステムの障害が発生する場合は、使用している特定の環境向けにオンプレミス データ ゲートウェイ サービスのネットワーク設定が構成されていることを確認してください。 たとえば、ネットワーク環境で Azure エンドポイントを呼び出すためにプロキシを使用する必要がある場合は、プロキシを使用するようにオンプレミス データ ゲートウェイ サービスを構成する必要があります。 詳細については、「プロキシの構成」を参照してください。

  • このエラー メッセージを受信し、Azure Logic Apps の呼び出しで断続的なエラーが発生する場合は、次の手順に従って、再試行回数や、さらには再試行間隔を増やす必要があることがあります。

    1. オンプレミス データ ゲートウェイ サービスの Microsoft.PowerBI.EnterpriseGateway.exe.config という名前の構成ファイルで SAP の設定を確認します。

      1. configuration ルート ノードの下に configSections 要素がない場合は追加します。

      2. ノードの下にconfigSectionssection、次の属性を持つ要素を追加します (存在しない場合)。name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"

        重要

        既存の section 要素が既に存在する場合は、その属性を変更しないでください。

        ゲートウェイ サービス構成で他のセクションまたはセクション グループが宣言されていない場合、configSections 要素は次のバージョンのようになります。

        <configSections>
          <section name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"/>
        </configSections>
        
      3. configuration ルート ノードの下に SapAdapterSection 要素がない場合は追加します。

      4. ノードの下にSapAdapterSectionBroker、次の属性を持つ要素を追加します (存在しない場合)。WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"

        重要

        Broker 要素が既に存在する場合でも、その属性は変更してください。

        SAP アダプター構成で他の要素または属性が宣言されていない場合、SapAdapterSection 要素は次のバージョンのようになります。

        <SapAdapterSection>
          <Broker WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2" />
        </SapAdapterSection>
        

        再試行回数の設定は、WebhookRetryMaximumCount="2" のようになります。 再試行間隔の設定は、WebhookRetryDefaultDelay="00:00:00.10" のようになります。期間の形式は HH:mm:ss.ff です。

      注意

      構成ファイルの詳細については、「.NET Framework の構成ファイル スキーマ」を参照してください。

    2. 変更を保存します。

    3. オンプレミス データ ゲートウェイを使用している場合は、ゲートウェイを再起動します。

次のステップ