!--a11y-->
トランザクション型 RFC サーバプログラム
R/3
システムへ RfcAccept で接続し、サポートされている RFC 機能をインストールしたら、 RFC サーバプログラムは RFC コール RfcInstallTransactionControl を使用して TID で作業し、サポートしている実際の RFC 機能のチェックと実行を行ってから RfcDispatch でループに入ります。この機能により、以下の4つの機能(
C ルーチンなど)がインストールされ、トランザクションの動きが制御されます。この機能は、
tRFC が R/3 から呼び出されると有効化されます。現在の TID がわたされます。この機能はその TID を常設記憶領域に格納して0を返す必要があります。後に再び、同一機能が同一 TID で呼び出された場合には、0以外の値を返す必要があります。別のプロセスが同じ TID をすでに実行しているが、終了していない場合、この機能はその機能が終了するまで待機するか、 RfcAbort で RFC 接続を停止する必要があります。この機能が呼び出されるのは、このトランザクションに属するすべての
RFC 機能が実行され、ローカルトランザクションを完了させることができる場合です。必要な場合(データベースでの作業)、トランザクションをローカルでコミットするために使用します。この機能は、ローカルトランザクションの処理中に
RFC ライブラリ内でエラーが発生している場合に、 onCommit 機能の代わりに呼び出されます。この機能は、ローカルトランザクションのロールバックに使用できます(データベースでの作業)。この機能が呼び出されるのは、ローカルトランザクションが終了した場合です。この
TID に関する情報をすべて削除することができます。

技術的な説明
R/3
システムの tRFC

トランザクション
SM59 では、以下のパラメータを設定できます。

tRFC
コンポーネントは、実行時に SAPGUI へ割り当てられないため、このトランザクションで定義したプログラムの格納場所「ユーザ」(現在使用中の SAPGUI で RFC サーバプログラムを起動)を使用することはできません。トランザクション
SM58 では、トランザクションが正常に実行されていない場合、トランザクションの実行中の状態が表示されます。tRFC
コンポーネント、 RFC ライブラリ、 tRFC サーバプログラム間の tRFC

tRFC
コンポーネント、 RFC ライブラリ、 tRFC サーバは、以下の2フェーズで相互にやり取りします。F1:
機能の転送RFC
ライブラリは、 tRFC データを受信すると、 tRFC サーバプログラムを起動します(アクション : 。起動): ループで RfcDispatch を使用すると、ライブラリはこのトランザクションの転送フェーズで、以下の機能を呼び出します。上で説明したように、この機能転送フェーズで
CPI-C エラー(ネットワークエラーなど)が発生すると、 R/3 システムの tRFC コンポーネントは機能転送フェーズを繰り返します。試行の最大回数と試行の間隔は、トランザクション SM59 と TRFC オプションを使用して定義できます。F2:
確認RFC
ライブラリが R/3 システムの tRFC コンポーネントに T3 の正常な終了を通知すると、現在のトランザクションの確認を直ちに受信します。次に RFC ライブラリは、以下の機能を呼び出します。このフェーズの後で、現在のトランザクションは両サイドで正常に終了します。
サンプルテストプログラム
trfcserv.cRFC SDK
の実行可能ファイルとソースコードの形式で配布されている C プログラム trfcserv.c は、 tRFC サーバプログラムの一例です。テストする場合は、
ABAP プログラム SRFCTEST 、オプション トランザクション型 RFC をこのサーバプログラムで使用することができます。R/3
システムから受信したデータは、動作しているプラットフォームの‘ trnn ... n.dat ’に書き込まれます。このファイルの各行は、内部テーブルの1行です。行の長さが 72 ビットの内部テーブルのみが使用されます。trfcserv.c
プログラムは、動作しているプラットフォームでファイル I/O を使用して、 TID を管理します。TID
管理内に、各 TID のエントリがあり、エントリには日時、 TID 、トランザクションの状態( CREATED 、 CONFIRMED など)、データファイルの名称があります。このプログラムは異なるシステムでも動作できるようになっているので、ユーザの環境でこのプログラムをコンパイルしてリンクするには、対応するフラグ(
SAPonUNIX 、 SAPonNT など)を設定する必要があります。詳細については、
RFC SDK とともに配布されているソースコードを参照してください。
