SAP RFCコネクターのエラー動作
このページでは、SAP RFCコネクターがランタイムでエラーをどのように表示するかについて説明します。 これらの動作を理解すると、技術的な失敗とビジネスエラーを正しく区別するレシピを設計できます。
SAP RFCコネクターは、Business Application Programming Interfaces(BAPI)、標準のRFC対応汎用モジュール、IDocなど、複数のSAPインタラクションタイプをサポートしています。 これらのインタラクションタイプは異なる実行モデルを使用しますが、レシピで利用できる一貫した高レベルのエラー動作パターンを備えています。
ランタイムでのSAP RFCエラーの表示方法
SAP RFCエラーは、ランタイムで次のカテゴリーに分類されます。 各カテゴリーでは、レシピ実行中に異なる観察可能な動作が発生します。
技術的エラー(ステップレベルのエラー)
技術的エラーは、コネクターがRFCリクエスト/レスポンスサイクルを完了できない場合に発生します。 レシピ実行中にアクションステップが失敗し、SAPビジネスロジックは実行されないか、ビジネスペイロードを返しません。
これらのエラーは通常、接続、トランスポート、またはSAPランタイムレベルの問題を示します。 一般的な例は次のとおりです。
- 無効な認証情報、SAPロールの欠落、SNCの設定ミスなどの認証または権限付与の失敗
- SAPサーバーに到達できない、RFC宛先の設定ミス、ネットワークの中断、タイムアウトなどの接続またはトランスポートの問題
- 汎用モジュールの欠落や低レベルのRFC/JCo例外などのSAPランタイム障害
技術的エラーが発生すると、レシピのアクションステップは失敗します。 SAPビジネスレスポンスペイロードは返されません。 エラーは、レシピ実行内で技術的な例外として表示されます。 Workatoは診断を支援するために、一部の既知の例外をユーザーフレンドリーなメッセージに変換します。一方、その他の例外はSAP RFCランタイムから返されたとおりに表示されます。
スキーマまたはパラメーターの不一致
スキーマまたはパラメーターの不一致は、コネクターが想定するインターフェイス定義が、SAPが想定または返す内容と一致しない場合に発生します。 これらの問題は、多くの場合、設定時、またはレシピに反映されていないSAP側の変更後に発生します。
この動作は一般的に、次の原因で発生します。
- 必須パラメーターの欠落、無効なフィールド名、不正なデータ型など、不適切なレシピ設定
- パラメーターの追加、削除、名前変更、構造の変更、IDocセグメントの変更など、SAP側のインターフェイス変更
- メタデータのドリフト。以前は動作していたレシピが、SAPトランスポートまたは設定変更後に失敗する状態です。
スキーマまたはパラメーターの不一致が発生すると、アクションステップは失敗します。 失敗は、スキーマ検証やリクエストのシリアル化など実行前に発生する場合もあれば、SAPが不正な構造の入力を拒否する実行中に発生する場合もあります。 エラーは通常、検証、解析、シリアル化、またはRFC/JCo例外として表示されます。
これらの失敗は、アクションステップが失敗し、SAPがビジネスレスポンスペイロードを返さないため、技術的エラーと見なされます。
レスポンスで返されるビジネスエラー
ビジネスエラーは、SAPが技術的にはRFC呼び出しを正常に実行したものの、アプリケーションまたはビジネスルールに基づいてリクエストを拒否する場合に発生します。
コネクターはこれらの呼び出しを成功として扱い、レシピにデータを返します。 SAPは、特にBAPIの場合、SAP設計ガイドラインに従って、RFC例外ではなくメッセージ構造を通じてこれらの失敗を報告します。
SAPは通常、BAPIベースのインタラクションでRETURN、BAPIRET2、またはBAPIRETURNなどのメッセージ構造を返します。 SAPは、ビジネス失敗時にメッセージタイプをE(Error)またはA(Abort)に設定します。 その他のRFC対応APIでは、概念的には同等ですが異なるメッセージ構造を使用する場合があります。
ビジネスエラーが発生しても、レシピのアクションステップは成功します。 レスポンスペイロードにはビジネスエラー情報が含まれます。 レシピでは、エラー処理ロジックを明示的に実装する必要があります。
SAPインタラクションタイプによる違い
同じ高レベルのエラーカテゴリーが、SAPインタラクションタイプ全体に適用されます。 ビジネスエラーの表示方法は、インタラクションタイプによって異なります。
- BAPIはビジネスエラーをメッセージ構造で同期的に返しますが、技術的な失敗はステップエラーを発生させます。
- 標準のRFC対応汎用モジュールは、実装に応じて、汎用モジュール固有の出力フィールドでビジネスエラーを返す場合があります。
- IDocは非同期で動作します。 ステップが成功したことは、SAPがIDocを受け入れたことを示すものであり、SAPがビジネス処理を完了したことを示すものではありません。 ビジネス失敗は通常、ステップレベルのエラーとしてではなく、後でIDocステータス追跡を通じて表示されます。
レシピ設計ガイダンス
ステップレベルの失敗は、再試行、アラート、またはエラーワークフローを使用して技術的エラーとして処理します。 レスポンスでビジネスエラー情報を返す成功したステップは、レシピ内の条件ロジックを使用して管理します。
IDocベースの連携では、SAPがIDocを受け入れた後の下流のビジネス失敗を検出するために、フォローアップステータスチェックを実装します。 処理結果を取得するには、Check IDoc statusアクションを使用します。
Last updated: