リモート関数呼び出し(RFC) SAP ABAPチュートリアル

⚡ スマートサマリー

リモート関数呼び出し(RFC)は SAP ABAPプログラムが別のプラットフォームで実行されている関数モジュールを呼び出すことを可能にする通信メカニズム SAP または外部システム。tracネットワークの配管処理を行い、データ形式を変換し、障害を呼び出し元に明確に通知します。

  • 📡 コアメカニズム: CALL FUNCTION…DESTINATION は、SM59 で定義された論理宛先に対して関数モジュールを呼び出します。
  • 🔁 4つのバリエーション: SyncRFC はそれぞれ、異なる配信条件を保証します。tract.
  • 🌐 接続タイプ: SM59は、タイプ3(ABAP間)、タイプI(同一データベース内のピア)、およびタイプT(外部プログラム)をサポートしています。
  • 🛠️ ビルド パス: SE37で関数モジュールをリモート有効に設定し、コードを記述し、呼び出し元側のSM59で宛先を定義します。
  • 🤖 AIの視点: AIアシスタントは、自然言語で記述された仕様からABAP RFCスタブを生成し、SM58エラーを解析して実行可能な修正策に変換します。

RFCインターフェースの機能

RFCとは何ですか SAP?

RFC の略 リモート関数呼び出しこれは、ビジネスアプリケーションが他のシステムと事前に定義された形式で情報を通信および交換できるようにするメカニズムです。RFC は、ビジネスアプリケーションが他のシステムと通信し、情報を交換するための最も一般的な方法です。 SAP システムは別のシステムと通信し、また接続する橋でもある SAP 非SAP 分野の様々なアプリケーションで使用されています。

RFCは2つのインターフェースを提供します。

  1. 呼び出しインターフェース ABAPプログラム.
  2. 非SAP プログラム。

任意の ABAP プログラムでリモート関数を呼び出すには、 通話機能…宛先 ステートメント。 は DESTINATION パラメータは SAP 呼び出された関数が、呼び出し元とは異なるシステム上で実行されるシステム。

構文

CALL FUNCTION 'remotefunction'
  DESTINATION dest
  EXPORTING  f1 = ...
  IMPORTING  f2 = ...
  TABLES     t1 = ...
  EXCEPTIONS ...

論理的な宛先はトランザクションによって定義されます SM59 テーブルに保存されます RFCDES.

RFCインターフェースの機能

RFCインターフェースの機能

RFCランタイムは、すべての呼び出しにおいて次の3つの責任を負います。

  • すべてのパラメータデータを、リモートシステムが想定する形式に変換します。
  • リモート システムと通信するために必要な通信ルーチンを呼び出します。
  • コミュニケーションエラーを処理し、発信者に通知する EXCEPTIONS のパラメータ CALL FUNCTION.

RFC通信間 SAP システム

RFCは SAP システム間の通信を処理し、関連するプログラミングを簡素化するプロトコル。呼び出し元プログラムとは異なるマシンに存在する関数モジュールを呼び出すプロセスです。RFC は技術的には、関数モジュールを呼び出すために使用できます。 同じ RFC インターフェース システムは、異なるマシン間で RFC 接続を確立するために使用されます。 SAP システム間だけでなく SAP 外部 (非SAP)システム。

RFCに関する必須事項

  • SAP 使用 CPIC システム間でデータを転送するためのプロトコル(Common Programming Interface for Communication)です。CPICは、システム間でデータを転送するためのプロトコルです。 SAP-特定の。RFCはCPI-Cをベースに構築された通信インターフェースですが、より多くの機能とアプリケーションプログラマにとってより使いやすいインターフェースを備えています。
  • RFC ライブラリ関数は、 Cプログラミング言語 およびVisual Basic Windows プラットフォーム。
  • RFC接続はシステム全体で機能します。クライアント000で定義されたRFC接続は、クライアント100からでも何ら違いなく使用できます。
  • RFC は、ネットワーク経由で特殊なサブルーチン (関数モジュール) を呼び出すためのプロトコルです。関数モジュールは、C 関数や Pascal プロシージャに相当します。定義済みのインターフェースを公開し、それを通じてデータ、テーブル、および戻りコードが交換されます。関数モジュールは、内部で管理されます。 SAP 専用ライブラリのシステム、 関数ビルダー.
  • 関数ビルダー(トランザクション) SE37) アプリケーションプログラマーに、コードを記述、文書化、 テスト ローカルでもリモートでも呼び出せる関数モジュール。システムは追加コードを自動的に生成します( RFCスタブリモート通話に必要です。
  • RFC接続はトランザクションを使用して維持されます SM59. SAP また、 RFC-SDK (ソフトウェア開発キット)は、外部プログラムが接続できるように、広範なCライブラリを使用します。 SAP システム。
  • 別のサーバーへのリモート呼び出しとローカル呼び出しの唯一の違いは、 DESTINATION プログラムを実行する対象サーバーを指定するパラメータ。

RFCの利点

RFCは、リモート側でモジュールやメソッドを再実装する必要性をなくすことで、プログラミングの手間を軽減します。RFCレイヤーは以下のことを担います。

  • データを、リモート(ターゲット)システムが理解できる形式に変換する。
  • リモートシステムとの通信を確立するために必要なルーチンを呼び出します。
  • コミュニケーション中に発生するエラーへの対処。
  • トランザクション型またはキュー型が使用される場合に、信頼性の高いトランザクションセマンティクスを提供する。

RFCの種類

RFCの種類

SAP 4種類のRFCバリアントをサポートしています。それぞれが、レイテンシ、信頼性、および順序保証の間で異なるトレードオフを提供します。

1. Synchronous RFC (sRFC)

Sync高性能RFCでは、呼び出し時にクライアントとサーバーの両方が利用可能である必要があります。これは最も一般的なタイプであり、呼び出し元が実行後すぐに結果を必要とする場合に使用されます。

sRFCは、システム間で確認応答が期待される通信手段です。送信元システムのリソースは、受信側システムが応答を返さないことを待機し、メッセージが確認応答とともに到着することを保証します。交換されるデータは一貫性があり、信頼性が高いものです。

欠点は、ターゲットシステムが利用できない場合、ソースシステムのリソースはターゲットシステムが復旧するまで待機するため、ターゲットシステムでソースシステムのプロセスがスリープ/RFC/CPICモードに移行し、リソースがブロックされる可能性があることです。

のために使用される:

  • システム間のリアルタイム通信。
  • 間のコミュニケーション SAP Webアプリケーションサーバーと SAP GUI。

2. 非同期RFC(aRFC)

非同期RFCは、確認応答を必要としないシステム間の通信であり、ドロップに相当します。ping 郵便でハガキを送る。実行時に両方のシステムが利用可能である必要はなく、結果は呼び出し元のシステムにすぐに返されるわけではない。

ソースシステムのリソースはターゲットシステムの応答を待たず、データを配信して次の処理に進みます。このため、aRFCは高速ですが、単独では信頼性が低く、ターゲットシステムが利用できない場合はデータが失われる可能性があります。

のために使用される:

  • システム間の通信において、送信後は処理を省略する方式を採用している。
  • システム間における並列処理。

3. トランザクションRFC(tRFC)

トランザクションRFCは、非同期RFCの特殊な形式です。本来であれば自律的に処理されるはずの処理ステップを、トランザクションのように処理することを保証します。

tRFC は、ネットワークの問題によりデータが複数回送信された場合でも、RFC サーバー上で呼び出された関数モジュールを正確に 1 回実行します。RFC クライアントが呼び出しを実行する時点でリモート システムが利用可能である必要はありません。tRFC コンポーネントは、呼び出された関数とそのデータを格納します。 SAP 一意のデータベース 取引ID(TID)ターゲットシステムが利用できない場合、データはRFCテーブルに書き込まれます(トランザクションで表示可能)。 SM58)そして後にスケジューラレポートによって取得される RSARFCSEこれは60秒ごとに実行されます。

のために使用される:

  • 非同期RFCを拡張し、最大1回配信を可能にする。
  • 厳密に一度だけ実行されることが重要なシステム間における、信頼性の高い通信。

4. キューイングRFC (qRFC)

キュー型RFCは、呼び出し元のアプリケーションが指定した順序で個々のステップが処理されることを保証することで、tRFCを拡張したものです。複数のLUW(論理作業単位/トランザクション)が意図した順序で処理されるようにするために、tRFCはインバウンドキューとアウトバウンドキューを使用してシリアル化できます。これが「キュー型RFC」という名前の由来です。

のために使用される:

  • トランザクションRFCを厳密な順序付けで拡張する。
  • 定義された処理順序が必須となるシナリオ。
  • 複数の取引を事前に定義された順序で処理する必要がある場合。

RFC型比較

タイプ 通話待機? 信頼性のある? 注文しましたか? 以下のためにベスト
sRFC あり あり 該当なし(シングルコール) リアルタイム検索
aRFC いいえ いいえ いいえ 撃ちっぱなし、並行作業
tRFC いいえ はい(ちょうど1回) いいえ 信頼性の高い非同期アップデート
qRFC いいえ はい(ちょうど1回) あり 厳密に順序付けられたアップデート

RFC 接続の種類

RFC 接続の種類

SM59は複数の接続タイプに対応しています。最もよく使用される3つの接続タイプを以下にまとめます。

タイプ3 — ABAP間通信

タイプ 3 エントリは、接続を指定します。 ABAPシステムホスト名またはIPアドレスは必須です。ログオン情報はオプションで指定できます。タイプ3は、ABAPシステム間のRFCと、ABAPシステムへの外部呼び出しの両方に適用されます。

タイプI — 同一データベースピア

タイプ I エントリは、現在のシステムと同じデータベースを共有する ABAP システムを指定します。これらのエントリは事前定義されており、変更できません。典型的なエントリ名は次のようになります。 ws0015_K18_24:

  • ws0015 — ホスト名
  • K18 — システム(データベース)名
  • 24 — TCPサービス名

タイプT — 外部プログラム

タイプTの宛先は、RFC APIを使用してRFCを受信する外部プログラムに接続します。アクティベーションタイプは、 お気軽にご連絡ください or 参加申し込み「開始」を選択した場合は、起動するプログラムのホスト名とパスを指定する必要があります。

方法 Code RFC

RFCのエンドツーエンドの組み立ては5つのステップから成ります。最初の3つはSE37とSM59での機械的なクリック操作で、最後の2つは接続に関するものです。tract 正しい。

ステップ1: トランザクションの機能モジュール属性タブ SE37処理タイプを次のように設定します。 リモート対応モジュール 関数モジュールをRFC対応としてマークする。

SE37 リモート対応モジュール

ステップ2: ソースコードエディタに、関数モジュールのコードを記述してください。

関数モジュールのソースコード

ステップ3: リモート関数を呼び出すRFCクライアントシステムでRFCサーバーの宛先を定義します(トランザクション内で実行)。 SM59.

SM59宛先設定

ステップ4 — パラメータの宣言: リモート関数モジュールのすべてのパラメータ項目は、参照項目として定義する必要があります。つまり、ABAPディクショナリの項目に対して型付けする必要があります。リモート対応関数モジュールでは、値パラメータは使用できません。

ステップ5 — 例外: システムは上昇する 通信障害 and システム障害 トランスポートレベルのエラーについては内部的に処理されます。アプリケーションレベルの例外は、ローカル関数と同様にリモート関数内でも発生させることができます。

リモート関数呼び出しのデバッグ

  • これは、 デバッグできない 従来の方法で非ABAPシステムへのリモート関数呼び出しを行う。外部ランタイムは不透明である。
  • ただし、ABAP 間 ABAP RFC 呼び出しの場合、ABAP デバッガを使用してリモート システム内での RFC 関数の実行を監視することができます。
  • リモート呼び出しの場合、ABAPデバッガ(UIを含む)はローカルシステム上で実行されます。リモート関数のデータ値やその他の実行時情報は、リモートシステムからストリーミングで返されます。

キー SAP RFCトランザクション

日常的に使用するRFCツールボックスは、ABAP開発者とBasis管理者なら誰もが反射的に知っておくべき、ごく少数のトランザクションコードに集約されます。

Tコード 目的
SM59 RFC宛先(ホスト、ログオン、タイプ、セキュリティ)を維持します。
SE37 関数ビルダー — リモート操作に対応した関数モジュールを作成または編集します。
SM58 失敗したトランザクションRFCを監視し、再処理します。
SMQ1 / SMQ2 送信(SMQ1)および受信(SMQ2)qRFCキューを監視します。
信頼 HTTPSで保護されたRFC宛先で使用されるSSL証明書を維持管理する。
ST22 リモート呼び出しの失敗によって発生したショートダンプを調査します。

のベスト プラクティス SAP RFC

適切に設計されたRFCレイヤーは、統合を高速かつ監視しやすく、進化しやすいものにします。以下の習慣は、すべてのプロジェクトに組み込む価値があります。

  • コンベンションに最適なバリアントを選択してくださいtract. 同期的なルックアップにはsRFCを、最大1回のみの非同期更新にはtRFCを、順序が重要な場合はqRFCを使用してください。
  • ターゲットシステムごとに1つの宛先を再利用します ホスト名を多数の宛先に分散させるのではなく、認証情報のローテーションが trac列で番号の横にあるXをクリックします。
  • 認証情報をハードコーディングしないでください ABAPでは、可能な限り信頼できるシステム接続またはセキュアなログオンチケットを使用してください。
  • SM58とSMQ2を定期的に監視してください。 スタックしたtRFCエントリは、再処理されるまでビジネスプロセスを静かに遅延させます。
  • 参照型のパラメータのみを渡してください。 値パラメータによって、リモート操作に対応した機能モジュールが動作しなくなる。
  • TLS証明書の管理にはSTRUSTを使用します。 HTTPS宛先の場合、有効期限切れの証明書は、原因不明のCOMMUNICATION_FAILUREダンプの主な原因です。

よくあるご質問

RFC は、リモート対応の関数モジュールを呼び出す低レベル プロトコルです。BAPI は特定の、 SAP-安定したビジネスオブジェクトメソッドを公開する認定済み関数モジュール — すべてのBAPIはRFCを通じて公開されますが、すべてのRFC呼び出しがBAPIに到達するわけではありません。

信頼済みRFCとは、ターゲットシステムが呼び出し元の認証を信頼するSM59宛先であり、呼び出しごとにパスワードが交換されることはありません。呼び出し元のユーザーコンテキストが伝播されます。ハードコードされた認証情報を排除できますが、より厳格な設定が必要になります。

SM58は、再処理待ちの失敗または保留中のトランザクションRFCエントリを表示します。各行には、トランザクションID、呼び出されたファンクションモジュール、ターゲット宛先、エラーテキスト、および最終再試行時刻が表示されます。

いいえ。デフォルトでは、RFCトラフィックは暗号化されていません。トラフィックを暗号化するには、SNC(Secure Network Communications)またはTLS/HTTPS宛先を設定する必要があります。SNCは、本番環境における標準的なメカニズムです。

tRFCは、呼び出しが正確に1回実行されることを保証しますが、呼び出しの順序は保持しません。qRFCはtRFCをベースに、さらに受信キューまたは送信キューを介して呼び出しを直列化することで、アプリケーションが定義した正確な順序で呼び出しが実行されるようにします。

はい。外部プログラムは、 SAP RFC SDK (JCo 用) を使用したゲートウェイ Java(NCo for .NET、またはC SDK)。 SAP そして、他のABAP関数モジュールと同様に、タイプTの宛先を介してそれらを呼び出します。

AIアシスタントは、自然言語の仕様からABAP RFCスタブを生成し、シナリオに適した宛先タイプを提案し、SM58エラーテキストを具体的な修正リストに変換することで、BasisチームとABAPチームの日々の統合作業を迅速化します。

はい。ST22ダンプまたはSM58エラーをAIアシスタントに入力すると、COMMUNICATION_FAILURE / SYSTEM_FAILUREパターンを最も可能性の高い根本原因(証明書の期限切れ、ゲートウェイのダウン、認証情報の不足など)と関連付け、調査すべき関連トランザクションコードを提案します。