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

RFCとは何ですか?

RFC は、ビジネス アプリケーションが他のシステムと通信し、(事前定義された形式で) 情報を交換できるようにするメカニズムです。 RFCの略です 「リモート関数呼び出し」

RFC は XNUMX つのインターフェイスで構成されます。

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

任意 ABAPプログラム を使用してリモート関数を呼び出すことができます 通話機能…宛先 ステートメント。 は パラメータは SAP 呼び出された関数が呼び出し元以外のシステムで実行されるシステム。

構文-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

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

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

  • すべてのパラメータ データをリモート システムで必要な表現に変換する
  • リモート システムと通信するために必要な通信ルーチンを呼び出します。
  • 通信エラーを処理し、必要に応じて呼び出し元に通知します (CALL FUNCTION の EXCEPTIONS パラメータを使用)。

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

RFCは SAP システム間の通信を処理して、関連するプログラミングを簡素化するプロトコル。呼び出し元プログラムとは別のマシンにある機能モジュールを呼び出すプロセスです。RFC は同じマシン上の別のプログラムを呼び出すためにも使用できますが、通常は、「呼び出し」機能モジュール/プログラムと「呼び出される」機能モジュール/プログラムが別のマシンで実行されている場合に使用されます。

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

In SAP、RFC インターフェイス システムは、異なる間の RFC 接続をセットアップするために使用されます。 SAP システム、また、 SAP 外部(非SAP)システム。

RFC について知っておくべき詳細

  • SAP CPIC(Common Programming Interface for Communication)プロトコルを使用してシステム間でデータを転送します。 SAP 特定のプロトコル。リモート関数呼び出し (RFC) は、CPI-C に基づく通信インターフェイスですが、より多くの機能があり、アプリケーション プログラマが使いやすくなっています。
  • RFC ライブラリ関数は、 Cプログラミング言語 および Visual Basic (オン) Windows プラットフォーム)
  • RFC 接続は、システム全体でいつでも使用できます。 これは、クライアント 000 で定義した RFC 接続をクライアント 100 からも (違いなく) 使用できることを意味します。
  • RFC は、ネットワーク上で特別なサブルーチン (関数モジュール) を呼び出すためのプロトコルです。 汎用モジュールは、C 関数または PASCAL プロシージャに相当します。 これらには、データ、テーブル、戻りコードを交換できる定義されたインターフェイスがあります。 汎用モジュールは、R/3 システムの関数ビルダと呼ばれる独自の関数ライブラリで管理されます。
  • Function Builder (トランザクション SE37) は、アプリケーション プログラマに、プログラミング、文書化、および作成に便利な環境を提供します。 テスト ローカルでもリモートでも呼び出せる汎用モジュール。 R/3 システムは、リモート呼び出しに必要な追加コード (RFC スタブ) を自動的に生成します。
  • RFC 接続のパラメータは、トランザクション SM59 を使用して更新します。 R/3 システムには、外部プログラムを R/3 システムに接続できるようにする広範な C ライブラリを使用する RFC-SDK (ソフトウェア開発キット) も付属しています。
  • 汎用モジュールの別のサーバへのリモート呼び出しとローカル呼び出しの唯一の違いは、プログラムが実行されるターゲット サーバを指定する特別なパラメータ (宛先) です。

RFC の利点

RFC は、リモート システムでのモジュールやメソッドの再開発を回避できるため、プログラマの労力を軽減します。 次のことを行うのに十分な能力があります。

  • データをリモート (ターゲット) システムが理解できる形式に変換します。
  • データをリモート (ターゲット) システムが理解できる形式に変換します。
  • リモート システムとの通信を開始するために必要な特定のルーチンを呼び出します。
  • 通信の過程で発生する可能性のあるエラーを処理します。

RFCの種類

RFCの種類

同期

通信またはデータ転送時に両方のシステム (クライアントとサーバー) が利用可能である必要があります。 これは最も一般的なタイプであり、sRFC の実行直後に結果が必要な場合に必要です。

sRFC は、確認応答が必要なシステム間の通信手段です。 ソース システムのリソースはターゲット システムを待機し、ACKD を使用してメッセージ/データを確実に配信します。 データは一貫性があり、通信に信頼性があります。

問題は、ターゲット システムが使用できない場合、ソース システムのリソースはターゲット システムが使用可能になるまで待機することです。 これにより、ソース システムのプロセスがターゲット システムでスリープ/RFC/CPIC モードになり、これらのリソースがブロックされる可能性があります。

に使用

  • システム間の通信用
  • コミュニケーションのために SAP Webアプリケーションサーバー SAP GUI

非同期

これは、確認応答を必要としないシステム間の通信です (ポストカードの配信に似ています)。実行時に両方のシステムが利用可能である必要はなく、結果を呼び出し側システムにすぐに返す必要もありません。 。

ソース システム リソースは、ターゲット システムが確認応答を待たずにメッセージ/データを配信するため、ターゲット システムを待ちません。 ターゲットシステムが利用できない場合、データが失われる可能性があるため、通信の信頼性はありません。 のために使用される -

  • システム間の通信用
  • 並列処理の場合

取引データ

これは aRFC の特殊な形式です。 トランザクション RFC は、元々自律的だった処理ステップをトランザクションのように処理することを保証します。

トランザクションRFCは、ネットワークの問題によりデータが複数回送信された場合でも、呼び出された機能モジュールをRFCサーバーで1回だけ実行する非同期通信方法です。RFCクライアントプログラムがtRFCを実行しているときに、リモートシステムが利用可能である必要はありません。tRFCコンポーネントは、呼び出されたRFC関数と対応するデータを、 SAP tRFC は、一意のトランザクション ID (TID) でデータベースに保存されます。tRFC は、ターゲット システムで待機しないという点で aRFC に似ています (登録済みポストと同様)。システムが利用できない場合は、スケジューラ RSARFCSE (58 秒ごとに実行) によって選択されたトランザクション ID (SM60) を使用して、データを aRFC テーブルに書き込みます。 のために使用される-

  • 非同期RFCの拡張
  • システム間の安全な通信のために

キューに入れられました

キューに入れられた RFC は tRFC の拡張です。 また、個々のステップが順番に処理されることも保証されます。 複数の LUW (論理作業単位/トランザクション) がアプリケーションによって指定された順序で処理されることを保証します。 tRFC は、キュー (受信キューおよび送信キュー) を使用してシリアル化できます。 したがって、キュー RFC (qRFC) という名前が付けられました。 のために使用される-

  • トランザクション RFC の拡張
  • 定義された処理シーケンスの場合
  • 複数のトランザクションが事前定義された順序で処理されることを保証したい場合は、qRFC の実装をお勧めします。

RFC 接続の種類

RFC 接続の種類

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

タイプ I – エントリは、現在のシステムと同じデータベースに接続されている ABAP システムを指定します。 これらのエントリは事前定義されており、変更できません。 エントリ名の例: ws0015_K18_24

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

タイプT – 宛先は、RFC API を使用して RFC を受信する外部プログラムへの接続です。 アクティベーションのタイプは、開始または登録のいずれかです。 「Start」の場合は、起動するプログラムのホスト名とパス名を指定する必要があります。

RFCをコーディングするにはどうすればよいですか?

1) 汎用モジュール属性タブ (トランザクション コード SE37) で、処理タイプをリモート対応モジュールとして設定し、リモート汎用モジュールを作成します。

RFC をコーディングする方法

2) 汎用モジュールのコードを記述します。

RFC をコーディングする方法

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

RFC をコーディングする方法

4) パラメータの宣言: リモート汎用モジュールのすべてのパラメータ項目は、ABAP ディクショナリ項目と同様に、参照項目として定義する必要があります。

5) 例外: システムは内部的に COMMUNICATION_FAILURE および SYSTEM_FAILURE を発生させます。 ローカルで呼び出された関数の場合と同様に、リモート関数でも例外を発生させることができます。

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

  • これは、 デバッグできない 別のシステムへのリモート関数呼び出し。
  • ただし、ABAP 間の RFC 呼び出しをテストする場合は、ABAP デバッガーを使用して、リモート システムでの RFC 関数の実行を監視できます。
  • リモート呼び出しでは、ABAP デバッガ (デバッグ インターフェイスを含む) がローカル システム上で実行されます。 リモート関数のデータ値とその他の実行情報は、リモート システムから渡されます。