この記事を読むメリット
- qRFC のキュー(送信キュー・受信キュー)と LUW のしくみが分かる
- T-CODE:SMQ1・SMQ2 でキューを一覧にし、状態(Status)と中身(LUW)を確かめる方法が分かる
- SYSFAIL・CPICERR・NOEXEC など、止まったキューの状態の意味と調べ方が分かる
SAP どうしや SAP とほかのシステムの連携では、データを決まった順番で送るために「キュー」が使われます。キューが止まると、後ろに並んだデータもすべて届かなくなります。
T-CODE:SMQ1 で送信キュー、T-CODE:SMQ2 で受信キューを一覧にすると、キューが止まっていないか、止まっているならどんな状態かを確かめられます。
この記事では、次の操作を画面を 1 つずつ追って解説します。
- T-CODE:SMQ1 で 送信キューを一覧にする手順
- T-CODE:SMQ2 で 受信キューを一覧にし、キューの状態と中身(LUW)を確かめる手順
- T-CODE:SMQR で 受信キューの登録を確かめる手順
博士!連携先のシステムに、登録したデータが届いていないみたいなんです…
うむ、連携のデータはキューに並んで順番に送られるのじゃ。SMQ1 と SMQ2 で、キューが止まっていないか見てみるぞい!
この記事のポイント
前提
- 使うトランザクション: SMQ1・SMQ2・SMQR
- 例のデータ: クライアント 100 の受信キュー
CFPO0010082281(エントリ 1 件)を例にします。
- 権限: キューの削除・ロック・有効化などの変更には、権限オブジェクト S_ADMI_FCD の権限が要ります。この記事では照会だけを行い、キューを変えるボタンは押しません。
qRFC のキューの仕組み
実務での要件の例
生産管理の担当から「ERP で登録した購買発注が、連携先の計画の画面に出てこない」と相談された場面を考えます。この要件は、次のように分けて進めます。
| 要件の部分 | どうするか |
|---|
| 送る側で止まっていないかを見る | T-CODE:SMQ1 で送信キューを一覧にします |
| 受け取る側で止まっていないかを見る | T-CODE:SMQ2 で受信キューを一覧にし、キューの状態(Status)を確かめます |
| どのデータが止まっているかを見る | キューを開いて、LUW の汎用モジュールと状態のテキストを確かめます |
| 止まったキューを動かす | ここでは扱いません。キューの有効化・ロック解除・削除は、原因を確かめたうえで管理者が行います |
qRFC とキュー
qRFC(キュー付きの RFC)は、tRFC(トランザクション RFC)を広げたしくみで、データを決まった順番で送ったり受け取ったりできます。tRFC は「1 回だけ実行する」ことを保証し、qRFC は「順番どおりに 1 回だけ実行する」ことを保証します。作った順番どおりに転記しなければならないデータで使われます。
qRFC では、送るデータを LUW(作業論理単位。まとめて実行するか、まったく実行しないかの単位)ごとにキューにためて、ためた順番どおりに送ります。前の LUW がキューに残っている間は、後ろの LUW は送られません。
キューには、送る側の 送信キュー と、受け取る側の 受信キュー があります。受信キューを使うときは、送る側にも送信キューがあり、両方とも SAP のシステムである必要があります。
送る側の送信キューから、受け取る側の受信キューを通って、順番どおりにデータが処理される流れです。
キューのステータス
キューの状態は「Status」に出ます。主なものは次のとおりです。
| ステータス | 意味 |
|---|
| READY | 送信・処理できる状態です。ふつうはすぐに次の状態に進みます |
| RUNNING | 先頭の LUW を処理中です |
| EXECUTED | 先頭の LUW は処理済みで、相手からの確認を待っています |
| SYSFAIL | 先頭の LUW を実行中に、重大なエラーが起きました。キューは止まったままです |
| CPICERR | 先頭の LUW の送信・処理中に、ネットワーク・通信のエラーが起きました。アプリケーションが再実行を求めたときにも、この状態になります |
| STOP | キューにロックがかかっています。qRFC の処理が自分でロックすることはありません |
| WAITSTOP | 先頭の LUW がほかのキューを待っていて、そのキューがロックされています |
| WAITING | 先頭の LUW がほかのキューを待っていて、そのキューに先に処理する LUW が残っています |
| ARETRY | アプリケーションが一時的な問題を見つけ、あとで再実行するジョブを組みました |
| ANORETRY | アプリケーションが重大なエラーを見つけ、この LUW の処理を止めました |
関連するトランザクションコードは次のとおりです。
| T-CODE | 内容 |
|---|
| T-CODE:SMQ1 | qRFC モニタ (送信キュー) |
| T-CODE:SMQ2 | qRFC モニタ (受信キュー) |
| T-CODE:SMQR | 受信キューの登録(QIN スケジューラ) |
| T-CODE:SM58 | tRFC の照会(qRFC の LUW は表示されません) |
| T-CODE:SM59 | RFC 宛先の照会・テスト |
送信キューを見る(T-CODE:SMQ1)
1. 条件を入れる
コマンドフィールドに SMQ1 と入力して Enter キーを押します。「qRFC モニタ (送信キュー)」の選択画面が表示されます。
画面の見方
- クライアント: キューを見るクライアントです。初期値はいまのクライアントです。
- キュー名: 見るキューの名前です。初期値の
* は、すべてのキューです。
- キュー宛先: 送り先の RFC 宛先で絞り込みます。
- 待機中のキューのみ: 印を付けると、待っているキューだけを出します。
この例では、初期値のまま F8 キー(右下の「実行」)を押します。
2. 一覧を見る
キューの一覧が表示されます。
画面の見方
- キュー情報: 表示したエントリ数とキュー数です。この例では、どちらも 0 です。
- キューの一覧: キューがあると、ここに並びます。この例では「何も選択されていません」です。
送り先に送り終えた LUW は、送信キューから消えます。送信キューに何も出ないのは、送るべきものが残っていない状態です。
受信キューを見る(T-CODE:SMQ2)
1. 条件を入れる
コマンドフィールドに SMQ2 と入力して Enter キーを押します。「qRFC モニタ (受信キュー)」の選択画面が表示されます。
画面の見方
- キュー名: 見るキューの名前です。初期値の
* は、すべてのキューです。
- 依存分析: キューどうしの依存を調べるときに印を付けます。
- 待機中のキューのみ: 印を付けると、待っているキューだけを出します。
受信キューの選択画面には、キュー宛先の項目はありません。この例では、初期値のまま F8 キーを押します。
2. 一覧を見る
受信キューの一覧が表示されます。
画面の見方
- キュー情報: この例では、表示エントリ数 1、表示キュー数 1 です。
- キュー: クライアント・キュー名・エントリ(LUW の数)です。この例では、
CFPO0010082281 に 1 件残っています。
② のキュー名をダブルクリックすると、キューの状態が表示されます。
3. キューの状態を見る
画面の見方
- Status: キューの状態です。この例では「NOEXEC」です。
- キュー有効化・キューロック・キューロック解除: キューの処理を変える操作です。確かめるだけのときは押しません。
- 削除: キューを消します。確かめるだけのときは押しません。
この例のキューは、2026/10/16 10:02:14 に登録されたまま残っています。NOEXEC は、LUW を自動では処理しない状態です。受信キューが QIN スケジューラ(T-CODE:SMQR)に登録されていても、自動では処理されません。LUW の実行を T-CODE:SMQ2 でデバッグするときに使う状態で、プログラムか設定に原因があるので、そのキューを使う業務(アプリケーション)の担当者に確かめます。
キューの削除・ロック・有効化には S_ADMI_FCD の権限が要り、操作はシステムログ(T-CODE:SM21)に記録されます。
4. LUW を見る
① の行のキュー名をもう一度ダブルクリックすると、キューの中の LUW が表示されます。
画面の見方
- 汎用モジュール: LUW で実行する汎用モジュールです。この例では
/SAPAPO/CIF_PO_INBOUND で、短いテキストは「Inbound Processing: Order Documents」(発注伝票などの受信処理)です。
- StatusText: LUW の状態の説明です。この例では「トランザクションが記録されました」です。
- LUW 実行・LUW デバッグ: LUW をその場で実行・デバッグします。確かめるだけのときは押しません。
- 削除: LUW を消します。確かめるだけのときは押しません。
汎用モジュールの名前から、どの業務のデータが止まっているかの見当が付きます。止まったキューを動かすかどうかは、その業務の担当者や管理者に確かめてから決めるとよいでしょう。
受信キューの登録を見る(T-CODE:SMQR)
受信キューは、QIN スケジューラに登録されていないと、自動では処理されません。コマンドフィールドに SMQR と入力して Enter キーを押すと、「qRFC モニタ (QIN スケジューラ)」が表示されます。
画面の見方
- スケジューラステータス: QIN スケジューラの状態です。この例では「無効」です。
- 登録したキュー: 自動で処理するキューの登録です。この例では、クライアント 100 のキュー名
*(すべて)が登録されています。
- 登録・登録 (有効化なし)・登録取消: 登録を変える操作です。確かめるだけのときは押しません。
よくあるつまずき
- T-CODE:SM58 に出てこない: qRFC の LUW は、tRFC の画面の T-CODE:SM58 では表示も保守もできません。送信キューは T-CODE:SMQ1、受信キューは T-CODE:SMQ2 で見ます。
- SYSFAIL で止まっている: ステータスをダブルクリックするとエラーのテキストが出ます。LUW を実行したシステム(送信キューでは送り先のシステム、受信キューではこのシステム)の T-CODE:ST22(ダンプ)を確かめます。SYSFAIL では再実行のジョブは組まれず、キューは止まったままです。
- CPICERR で止まっている: ステータスをダブルクリックしてエラーのテキストを見ます。通信のエラーなら、T-CODE:SM21(システムログ)と T-CODE:SM59(RFC 宛先)を確かめます。「Command to tRFC/qRFC: Execute LUW once again.」のテキストなら、通信のエラーではなく、アプリケーションが再実行を求めた状態です。再実行のジョブは、送信キューでは T-CODE:SM59 の宛先の設定、受信キューでは T-CODE:SMQR のキューの登録に従って組まれます。
- RUNNING のまま長く変わらない: すぐに「キュー有効化」を押すと、LUW が 2 回実行されるおそれがあります。SAP は、30 分以上待ってから対応することを勧めています。
- STOP になっている: だれか(またはプログラム)がキューにロックをかけています。qRFC の処理が自分でロックすることはないので、ロックをかけた人や理由を確かめます。
- ほかのキューまで止まっている: 止まったキューに依存するキューは、WAITSTOP や WAITING で待ちます。先に、待たれているキューの原因を確かめます。
まとめ
- qRFC は、データを LUW ごとにキューにためて、決まった順番で 1 回だけ実行することを保証するしくみです。前の LUW が残っていると、後ろの LUW は送られません。
- T-CODE:SMQ1 で送信キュー、T-CODE:SMQ2 で受信キューを一覧にし、キュー名をダブルクリックして状態(Status)と LUW を確かめます。
- 受信キューの自動処理の登録は T-CODE:SMQR で確かめます。キューの削除・ロック・有効化はデータの流れを変える操作なので、確かめるだけのときは押しません。
キューの Status を見れば、どこで止まっているか分かるんですね!
うむ。削除や有効化はデータの流れを変えてしまうから、確かめるだけのときは押さず、担当者に相談するのじゃぞ。