この記事を読むメリット
tRFC が記録されてから相手に届くまでの流れと、T-CODE:SM58 に表示されるものが分かる
T-CODE:SM58 でエラーの tRFC と失敗の件数を確かめる方法が分かる
Status Text のエラーのメッセージから原因を調べる進め方が分かる
別のシステムへ非同期で送ったデータが届いていないときは、送信側で tRFC(トランザクション RFC)がエラーになっていないかを確かめます。
T-CODE:SM58 では、相手のシステムで正常に終わらなかった tRFC を一覧で確認できます。
この記事では、次の操作を画面を 1 つずつ追って解説します。
T-CODE:SM58 で エラーの tRFC を一覧で探し、件数を確かめる手順
エラーのメッセージを確かめる手順
博士!別のシステムに送ったはずのデータが、向こうに届いていないみたいなんです…
うむ、送信側で tRFC がエラーになっていないか、T-CODE:SM58 で確かめてみるのじゃ。一覧の見方を画面を追って説明していくぞい!
この記事のポイント
前提
使うトランザクション: SM58
必要な権限: T-CODE:SM58 を実行できる権限
tRFC の仕組み
実務での要件の例
連携先のシステムの担当者から「送られてくるはずのデータが届いていない」と問い合わせを受けた場面を考えます。この要件は、次のように分けて進めます。
要件の部分 どうするか 送れなかった tRFC があるかを探す T-CODE:SM58 の選択画面で照会期間を入れて「実行」を押し、情報の失敗エントリ数を確かめます どの呼び出しが、どんなエラーになったかを知る 一覧の汎用モジュール・対象システムの列と Status Text で、エラーのメッセージを確かめます 原因を直す 原因(権限・ダンプなど)を調べて直します。ダンプは T-CODE:ST22 で確かめます。紹介する操作は照会だけです。「エントリ削除」は、業務の担当者やシステムの管理者と相談して決めるとよいでしょう
tRFC とは
tRFC は、相手のシステムの汎用モジュールを呼び出す方法の 1 つです。呼び出した汎用モジュールは、相手のシステムでちょうど 1 回だけ実行されます。呼び出す時点で相手のシステムが止まっていてもかまいません。
段階 内容 記録 呼び出しは、トランザクション ID と一緒に送信側の DB に記録されます。 送信 プログラムが変更を確定する(COMMIT WORK)ときに、相手のシステムに送られます。 成功 相手のシステムで正常に終わると、記録は消えます。 相手が使えない バックグラウンドで再試行が予約されます。既定では 15 分ごと、最大 30 回です。
宛先ごとの再試行の回数と間隔は、T-CODE:SM59 で決めます。
SM58 に表示されるもの
T-CODE:SM58 に表示されるのは、正常に終わらなかった tRFC と、バッチジョブとして再試行が予約された tRFC だけです。正常に終わった tRFC は表示されません。正常に動いているシステムでは、一覧は通常、空か、実行中のものだけです。
tRFC が記録されてから、成功して消えるか、エラーとして SM58 に残るかまでの流れです。
関連するトランザクションコードは次のとおりです。
T-CODE 内容 T-CODE:SM58 非同期 RFC エラーログ T-CODE:SM59 RFC 宛先 (照会/編集) T-CODE:SMQ1 qRFC モニタ (送信キュー) T-CODE:SMQ2 qRFC モニタ (受信キュー) T-CODE:ST22 ABAP ダンプ分析
エラーの tRFC を探す
1. 選択条件を入れる
コマンドフィールドに SM58 と入力して Enter キーを押します。「トランザクション RFC」の選択画面が表示されます。
画面の見方
照会期間 : tRFC を探す期間です。
ユーザ名・tRFC 機能・tRFC 宛先・tRFC ステータス : 探す tRFC の条件です。
実行 : 一覧を表示します。
この例では、照会期間に 2026/01/01〜2026/10/15 を入れ、②の条件に * を入れて、③「実行」を押します。
2. 一覧と件数を確かめる
「トランザクション RFC」に、条件に合う tRFC が表示されます。
画面の見方
情報 : 表示エントリ数・失敗エントリ数・実行中エントリ数です。
列 : 発信者・汎用モジュール・対象システム・日付・時刻・Status Text・Transaction ID などです。
Status Text : エラーのメッセージです。
この例では、表示エントリ数 184 のうち、失敗エントリ数が 156 です。
エラーのメッセージを確かめる
「エラーの tRFC を探す」の手順 2 の画面の②の列と③の Status Text で、どの汎用モジュールが、どの宛先への呼び出しで、どんなエラーになったかを確かめます。Status Text のメッセージは、相手のシステムから取ったものです。ただし「Update terminated」は、送信側の更新処理が異常終了して tRFC の実行が保留になったときにも表示されることがあります。その場合は、送信側の T-CODE:SM13 で更新レコードも確かめるとよいでしょう。
この例では、次のようなエラーが並んでいます。
汎用モジュール 対象システム Status Text FINOC_PO_LISTENERNONEUpdate terminated SWF_EVT_HANDLER_START_INTERNALWORKFLOW_EVENT_180Update terminated FM_SIT_ENG_ASYNCNONESyntax error in program SAPLSNR3
エラーがあれば、原因(権限・ダンプなど)を調べて直します。同じ汎用モジュール・同じメッセージのエラーがまとまって出ているときは、共通の原因から調べるとよいでしょう。ダンプは、相手のシステムの T-CODE:ST22 で確かめられます。
原因を直したあとは、一時的なエラーで止まった呼び出しを再開できます。送信の途中で異常終了したものは、送り直す前に手でロールバックが要ることがあります。宛先の設定によっては、送信側が定期的に自動で再送するので、手で再送しなくてよい場合もあります。
よくあるつまずき
一覧に何も出ない : 正常に終わった tRFC は表示されません。一覧が空なのは、選択画面の条件に当たるエラーの tRFC が無い状態です。照会期間にエラーが起きた日が入っているか、ユーザ名・汎用モジュール・宛先などの条件を絞りすぎていないかを確かめます。
同じ宛先のエラーがたくさんある : 相手のシステムが止まっているときは、再試行が予約されます。再試行の回数と間隔は、T-CODE:SM59 の宛先の設定で決まります。まず相手のシステムが動いているかを確かめるとよいでしょう。
「エントリ削除」を押してよいか迷う : エラーの原因と、データを送り直す必要があるかを確かめてから、削除するかを決めるとよいでしょう。業務の担当者やシステムの管理者と相談して決めるとよいでしょう。
まとめ
T-CODE:SM58 には、正常に終わらなかった tRFC と、再試行が予約された tRFC が表示されます。
情報で失敗エントリ数を確かめ、一覧の Status Text でエラーのメッセージを確かめます。
原因を直したあとは呼び出しを再開できます。自動で再送される宛先もあります。
失敗の件数と Status Text を見れば、どこでつまずいたか分かるんですね!
うむ。「エントリ削除」は原因が分かるまで押さんようにするのじゃぞい。