IDoc status 12 — IDoc Status 12 Dispatch OK
Status 12 is an outbound success status meaning the IDoc data has been handed off successfully through the ALE/RFC dispatch layer, typically to another SAP system's inbound queue. It confirms the sending side completed its part of the transmission. It does not confirm the receiving system actually processed, or even received, the IDoc.
Covers what IDoc status 12 confirms and does not confirm on the outbound side of ALE distribution, the situations where a 12 hides a failed transmission further downstream, and the check sequence needed before deciding whether to resend anything. Also covers why resending at the IDoc level after a 12 risks creating duplicate business documents on the receiving system.
Published 16 Sept 2026· 1,147 words
What the status means
Status 12 belongs to the outbound leg of IDoc processing. It is set after the IDoc has been passed through the communication layer and the transactional RFC (or equivalent transport) call used to deliver it has returned without a technical error. In an ALE scenario between two SAP systems, this usually means the payload has been handed to the destination system's inbound queue. It is treated as a terminal, successful status in most outbound monitoring views and shows green in WE02 and WE05. The key limitation is scope: status 12 only certifies that the sending system's dispatch step worked. Anything that happens after the RFC call returns, on the receiving side or in an intermediate middleware layer, is invisible from this status alone.
Why it appears
Status 12 is not an error status, so the real diagnostic question is usually not 'why did this happen' but 'why is this IDoc stuck at 12 with no matching receipt' or 'why does the business partner say nothing arrived'. The common causes, in rough order of frequency, are listed below.
- The tRFC or qRFC unit that carried the actual payload after status 12 was recorded is stuck or failed in the queue monitor (SM58, SMQ1, SMQ2), so the status was written on the sending side before the transport genuinely completed end to end.
- The RFC destination in the partner profile points to the wrong client, wrong logical system, or a system that has since been decommissioned or refreshed. The call technically succeeds, so status 12 is set, but the data lands somewhere nobody is monitoring.
- A middleware hop (PI/PO, Integration Suite, or a message broker) accepted the message and returned a technical acknowledgement, which is enough for the sending system to set 12, while the message failed later inside the integration flow, in mapping, in the receiver channel, or on the target application side.
- Mass outbound processing (collective ALE distribution jobs, output-driven runs) sets status 12 for a batch of IDocs based on the RFC call result alone, without any application-level confirmation that the receiving system's inbound processing actually accepted the document.
- Network or connection instability causes the RFC call to appear successful from the sender's point of view (return code fine, status set) while the payload is truncated or the connection drops mid-transfer, a rare but real cause worth ruling out when a specific partner reports repeated gaps.
- The receiving system's own inbound processing rejects or errors the IDoc after arrival, which is a separate status recorded there and never reflected back into the sender's status 12 record.
What to inspect
Work outward from the sender before assuming anything is wrong on the receiver.
- WE02 or WE05 on the sending system: confirm the status 12 timestamp and compare it against when the business partner claims something was expected.
- SM58 for the relevant RFC destination: look for failed or aged tRFC calls around the same timeframe, even if the specific IDoc's own call shows as processed.
- SMQ1 and SMQ2: check outbound and inbound queues if qRFC or serialized transfer is in use, since a blocked queue entry behind a successful one can delay everything queued after it.
- WE20 partner profile and WE21 port definition: confirm the RFC destination and logical system are current, especially after any system copy, refresh, or landscape change.
- SM59: test the RFC destination connection directly to rule out an intermittent network issue.
- WE02 or WE05 on the receiving system: search for the matching inbound IDoc by message type, sender, and timestamp; its absence or an error status there is the real evidence, not the sender's 12.
- If middleware is involved, the message monitoring on that layer, to see whether the message actually left the integration flow toward the receiver.
How to reprocess safely
Before touching anything, establish whether the IDoc actually arrived and was processed on the receiving side. If a matching inbound IDoc exists there in a successful status, or the underlying business document (order confirmation, delivery note, master data record) already exists on the partner system, the transmission worked and nothing further should be sent; the ticket is closed as a false alarm. If the receiving system has no trace of the message at all, the fix is not a technical IDoc reprocessing step, because status 12 already marks the technical dispatch as complete and there is no error segment to correct in the IDoc data itself. Instead, the resend has to happen at the business process level: re-trigger the output, re-run the distribution, or re-send the message from the point where it originates, after confirming the partner profile, port, and RFC destination are pointed correctly. Any resend must be logged and communicated to the receiving side so a duplicate arriving later is recognized and not posted twice.
The fix people try first (and why it fails)
The instinctive fix is to open BD87 and try to force the IDoc through again, treating status 12 like a stuck error status such as 30 or 01. It usually does not offer a reprocess action because the technical processing already completed successfully, so people instead recreate the source document or re-output it entirely. If the original transmission had, in fact, arrived and been processed on the receiving system, this produces a second IDoc, a second inbound posting, and a duplicate business document, an order, a delivery, a master record, on the partner side.
Whose problem this is
Basis or the interface team owns the RFC destination, port, and queue health checks. The functional or application team owns confirming with the receiving system or business partner whether the document actually arrived, and owns deciding whether a resend happens at the document level rather than the IDoc level. Escalate to the middleware team only when an intermediate integration layer sits between the two SAP systems.
Common pitfalls
The green display in WE02 and WE05 creates false confidence, since it reflects only the sender's leg of a multi-hop transmission. In scenarios with an intermediate middleware layer, status 12 can be a checkpoint rather than a finish line, while in direct ALE distribution between two SAP systems it often is the finish line, so the same status number means different things depending on the landscape. Teams that close incidents purely on seeing status 12 without checking the receiving side end up reopening the same issue days later when the partner reports missing data.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-idoc/status-12ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.