IDoc statusObject37ModuleBTP_INTEGRATION

IDoc status 37 — IDoc Status 37 Added Incorrectly

IDoc status 37 means the outbound IDoc failed at the point it was created, before it ever reached a port or the EDI subsystem. It signals a structural or generation problem in the IDoc itself, usually a segment or IDoc type inconsistency, not a communication or partner profile issue. The IDoc on the database is typically incomplete or malformed and should not simply be reprocessed.

This page covers IDoc status 37, an outbound status set when the IDoc could not be added correctly during creation, distinguishing it from later dispatch or syntax-check failures. It focuses on the development-level causes that produce this status, the sequence for inspecting a broken IDoc, and why blind reprocessing risks sending corrupted or duplicate data.

Published 16 Sept 2026· 1,053 words

What the status means

Status 37 is an outbound-only status and it fires very early in the chain, at the point the IDoc record itself is being written to the database, before status 01 generation is considered clean and long before dispatch to a port. Where statuses like 26 or 29 indicate a syntax check or ALE service failure on an IDoc that otherwise exists in a coherent form, status 37 means the create step itself failed partway through, so the resulting IDoc can be structurally incomplete: a segment may be missing, duplicated, or built against the wrong definition. The control record often exists but the data record content cannot be trusted. It is one of the least common statuses in day-to-day monitoring, which is part of why it gets mishandled when it does appear.

Why it appears

Named causes ordered by frequency observed in support work.

  • Segment definition out of sync with the IDoc type: a custom segment was changed or extended in the segment editor but the IDoc type was not regenerated, so the create function module writes data against a layout the runtime no longer recognises.
  • Manual edit and re-add through the IDoc test tool: an IDoc was opened, a segment field was changed by hand, and it was re-added with a structure that no longer matches the parent-child segment hierarchy defined for that IDoc type.
  • Custom exit or user exit in the outbound processing (change pointer processing, message control, or a Z function module in an enhancement spot) that partially builds segments then raises an exception, leaving the IDoc half-populated on the database.
  • Extension IDoc type mismatch: a base IDoc type combined with a Z extension where the extension segment position or occurrence does not match what was released, so the combined type rejects the segment on add.
  • A transport that moved the ABAP Dictionary structure for a segment without moving the corresponding IDoc segment definition in the same package, so development and the runtime disagree on field lengths or order.
  • A short dump inside the function module responsible for building and adding the IDoc, caught by the calling program in a way that still commits a partial IDoc rather than rolling it back entirely.

What to inspect

Work from the IDoc outward to the definition, not from the definition down.

  • WE02 or WE05: open the specific IDoc, check which segments are present versus expected, and note the exact point in the segment hierarchy where content stops looking complete.
  • WE30: compare the live IDoc type definition against what the segments in the failed IDoc actually contain, looking for a mismatch in mandatory segments or occurrence limits.
  • WE31: check the segment definition itself for a recent change that was not accompanied by IDoc type regeneration.
  • ST22: check for a short dump around the timestamp the IDoc was created, in the same user session or background job.
  • SLG1 or the relevant application log: look for messages from message control, change pointers, or any custom program that triggered the IDoc creation.
  • Transport logs: confirm whether a segment or IDoc type change moved through the landscape close to when the failures started.

How to reprocess safely

Do not attempt to dispatch a status 37 IDoc as it stands. First establish whether the IDoc type and segment definitions are actually consistent in the current system; if a segment change was not regenerated, regenerate the IDoc type before touching the failed record. Once the definitions are confirmed correct, the broken IDoc itself is normally not repairable in place because its content was written against a wrong or incomplete structure. The safer route is to mark the flawed IDoc as obsolete or delete it through the standard IDoc administration tools, then regenerate the outbound IDoc from the source application document, using the same trigger that originally created it: reissue the output type, rerun the change pointer, or re-execute the distribution program. Before regenerating, confirm the source document has not already been processed through an alternate path, since re-triggering output on a sales document, delivery, or master data change that was already handled manually elsewhere causes a duplicate downstream posting on the receiving side. Coordinate the reissue with the receiving system owner if the interface partner already flagged a missing or malformed message.

The fix people try first (and why it fails)

The reflex is to select the IDoc in the monitor and force it through outbound processing again, treating it like a communication failure. Because the underlying record is structurally wrong, this either fails again with a different status or, worse, succeeds in pushing a malformed message to the receiving system or subsystem, which may accept it and create incorrect master data, a document with missing line items, or a partner acknowledgment mismatch that surfaces days later as a much harder reconciliation problem.

Whose problem this is

This is a development or interface build problem first, not a functional master data issue, since it almost always traces back to an IDoc type or segment inconsistency, a custom exit, or a transport gap. Hand the specific IDoc number, the segment where content stops, and any related short dump to the ABAP or integration development team; involve the functional consultant only to confirm whether the source document needs to be reissued.

Common pitfalls

Status 37 is easy to mistake for a syntax check failure such as status 26 because both point at structural problems, but 26 implies the IDoc passed the add step and failed a later check, while 37 means the add itself did not complete cleanly. Standard IDoc monitoring alerts are frequently tuned around the common statuses like 51 or 29 and miss 37 entirely because it is rare, so these IDocs sit unnoticed unless someone runs a broad status query across the outbound queue.

Related SAP objects

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

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