リモート関数呼び出し(RFC) SAP ABAPチュートリアル
⚡ スマートサマリー
リモート関数呼び出し(RFC)は SAP ABAPプログラムが別のプラットフォームで実行されている関数モジュールを呼び出すことを可能にする通信メカニズム SAP または外部システム。tracネットワークの配管処理を行い、データ形式を変換し、障害を呼び出し元に明確に通知します。
RFCとは何ですか SAP?
RFC の略 リモート関数呼び出しこれは、ビジネスアプリケーションが他のシステムと事前に定義された形式で情報を通信および交換できるようにするメカニズムです。RFC は、ビジネスアプリケーションが他のシステムと通信し、情報を交換するための最も一般的な方法です。 SAP システムは別のシステムと通信し、また接続する橋でもある SAP 非SAP 分野の様々なアプリケーションで使用されています。
RFCは2つのインターフェースを提供します。
- 呼び出しインターフェース ABAPプログラム.
- 非SAP プログラム。
任意の ABAP プログラムでリモート関数を呼び出すには、 通話機能…宛先 ステートメント。 は DESTINATION パラメータは SAP 呼び出された関数が、呼び出し元とは異なるシステム上で実行されるシステム。
構文
CALL FUNCTION 'remotefunction'
DESTINATION dest
EXPORTING f1 = ...
IMPORTING f2 = ...
TABLES t1 = ...
EXCEPTIONS ...
論理的な宛先はトランザクションによって定義されます SM59 テーブルに保存されます RFCDES.
RFCインターフェースの機能
RFCランタイムは、すべての呼び出しにおいて次の3つの責任を負います。
- すべてのパラメータデータを、リモートシステムが想定する形式に変換します。
- リモート システムと通信するために必要な通信ルーチンを呼び出します。
- コミュニケーションエラーを処理し、発信者に通知する
EXCEPTIONSのパラメータCALL FUNCTION.
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の種類
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 接続の種類
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対応としてマークする。
ステップ2: ソースコードエディタに、関数モジュールのコードを記述してください。
ステップ3: リモート関数を呼び出すRFCクライアントシステムでRFCサーバーの宛先を定義します(トランザクション内で実行)。 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ダンプの主な原因です。








