SAP tableObjectTRFCQINModuleBTP_INTEGRATION

TRFCQIN table — Inbound Transactional RFC Queue Table

TRFCQIN is the persistence table for inbound transactional RFC (tRFC) calls that arrived at a system but could not be executed immediately. Each row is one queued LUW waiting for the tRFC scheduler to run it exactly once. It predates the qRFC queue mechanism seen in SMQ1/SMQ2 and is normally inspected through SM58 rather than direct table browsing.

This page covers TRFCQIN, the classic inbound tRFC queue table used to diagnose stuck or delayed asynchronous RFC calls, including which fields carry diagnostic value, how to correlate an entry with the sending system and the qRFC layer, and the reflex mistakes that make a backlog worse instead of better.

Published 15 Sept 2026· 940 words

What it stores

One row in TRFCQIN represents a single queued inbound transactional RFC call, meaning a call that reached the local system's dispatcher but was not executed on arrival, either because a suitable work process was not free, the receiving function module raised a temporary condition, or the call was explicitly scheduled for background processing. The row exists only for the lifetime of the queue: once the tRFC scheduler successfully runs the call, the entry is removed. TRFCQIN is the older, unordered tRFC queue mechanism, distinct from the named, ordered qRFC queues visible in SMQ1 and SMQ2. It is consulted when interface partners report calls as sent but not reflected downstream, when the tRFC scheduler appears stalled, or when a system shows a growing backlog of unprocessed inbound RFCs.

Key fields

  • MANDT - client the queued RFC call belongs to
  • ARFCTID - transaction ID (LUW identifier) of the queued call, the same TID surfaced in SM58
  • ARFCDEST - RFC destination through which the call was received
  • ARFCTIME - timestamp the entry entered the queue
  • ARFCUSER - user context under which the queued call will execute
  • ARFCSTATE - processing status of the queue entry (recorded, executing, error)

How it joins the data model

  • TRFCQIN-ARFCTID = ARFCSSTATE-ARFCTID to correlate an inbound tRFC entry with the corresponding qRFC-era state record for the same LUW
  • TRFCQIN-ARFCDEST = RFCDES-RFCDEST to identify the destination definition the call arrived through
  • TRFCQIN-ARFCTID = TRFCQOUT-ARFCTID to trace the same LUW as it appears in the outbound queue of the sending system

How to read it safely

Always restrict by MANDT first, then by ARFCDEST or a specific ARFCTID obtained from an SM58 trace or a partner's error report; this is a queue, not a log, so a full unrestricted read is rarely meaningful. Narrow ARFCTIME to a tight window around the reported incident. Start diagnosis in SM58, which applies these same filters and translates the status codes into readable text, before dropping into SE16 for anything the transaction does not surface. Because the table only holds open work, the row count itself is the health signal: a healthy system keeps this table near empty, and any sustained growth indicates the scheduler is not draining the queue rather than indicating a data retention issue.

How to prove it in the data

To confirm an inbound tRFC backlog, select TRFCQIN for the reported client and ARFCDEST, filtering ARFCSTATE to anything other than a completed/confirmed status. A nonzero result with old ARFCTIME values proves calls are genuinely stuck, not just slow. Take one ARFCTID from the result and look it up in SM58 to read the actual error text, since the table itself only exposes a status code, not the underlying failure reason.

ECC vs S/4HANA

TRFCQIN and its outbound counterpart TRFCQOUT are part of the long-standing tRFC/qRFC persistence layer inherited into S/4HANA without change in concept. There is no CDS compatibility view for it because it is a technical Basis table rather than a business data object. Day-to-day queue monitoring on S/4HANA landscapes is still usually done through the qRFC monitor transactions, but the underlying tRFC tables continue to exist and get populated for interfaces that still rely on plain transactional RFC rather than named qRFC queues.

Common pitfalls

  • Treating any nonzero row count as an application bug: it is frequently a dialog or background work process shortage on the receiving system, which should be checked before touching interface configuration.
  • Deleting entries directly through SE16N to clear a backlog. This does not make the sending system aware the call failed, and the sender's LUW remains marked as delivered, creating a silent inconsistency.
  • Confusing TRFCQIN with the qRFC inbound queue. TRFCQIN calls are unordered, so an interface that depends on strict sequencing was never guaranteed that here; ordering guarantees belong to the named qRFC queues in SMQ2.
  • Assuming the table retains history. A row disappears as soon as its call executes successfully, so the absence of an entry does not prove a call never failed, it may simply have already succeeded and been cleared.
  • Computing an SLA breach purely from ARFCTIME without accounting for time zone offsets between the application server and the reported incident time.
  • Trying to search by business document number. TRFCQIN only knows the RFC transaction ID; mapping that ID to an IDoc or business document requires the calling interface's own log, or a cross-reference into EDIDC/EDID4 for IDoc-based traffic.

Whose problem this is

This is a Basis or integration/interface team question, not a functional module owner's problem. Whoever administers the RFC destination (SM59) and monitors transactional traffic (SM58, SMQ1, SMQ2) triages TRFCQIN entries. Functional teams are brought in only after the RFC layer confirms the call reached the target function module and failed inside application logic.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-tables/trfcqinERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.