WE30 — IDoc Type Editor for Basic Types and Extensions
WE30 is the transaction for creating and maintaining IDoc types: the segment hierarchy that defines the structure of an IDoc. It builds and releases the tree of segments (mandatory, optional, min/max occurrence) but does not define the segment fields themselves; field-level definition happens in WE31. Confusing the two is the most common source of wasted time.
This page covers WE30, the transaction used to build and extend IDoc types by assembling segment hierarchies. It focuses on the practical split between WE30 (structure) and WE31 (segment content), the release-lock behavior that forces new segment versions instead of edits, and the runtime symptoms that trace back to a badly built or mismatched IDoc type.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,185 words
Purpose
WE30 maintains IDoc types: the tree structure of segments that an IDoc instance follows at runtime. A basic type (like ORDERS05) or a customer extension is built here by attaching existing or newly created segments under parent nodes, setting each segment as mandatory or optional and defining minimum and maximum occurrence. The structural fact that causes most confusion is that WE30 never defines what is inside a segment. Segment fields, data element assignments, and lengths are all maintained in WE31. WE30 only arranges segments into a hierarchy and controls how that hierarchy behaves - order, nesting, repetition, mandatory flags. Anyone trying to add or change a field from inside WE30 is in the wrong transaction.
When it is used
WE30 is reached for during interface development, not during operations. Typical triggers: extending a standard message type (ORDERS05, DESADV01, MATMAS05) with custom segments to carry Z-fields, building a fully custom IDoc type for a non-standard EDI or ALE scenario, or reviewing an existing type's structure while debugging a segment-not-found or field-mapping issue. It sits upstream of WE20 (partner profile configuration), WE21 (port setup), and the actual data mapping in a user exit or BAdI. It is not used for monitoring live IDocs (WE05, WE02) and not used for partner-specific routing. In cloud integration scenarios it is the point where a classic ALE/IDoc contract is shaped before being exposed through an integration flow or proxy layer.
How to use it in practice
- Display the existing basic type or extension first, in change mode, to see the current hierarchy before touching anything
- Decide whether the requirement needs a new custom IDoc type, an extension of a standard type, or reuse of an existing type unchanged
- If a new segment is needed, create it in WE31, release it, and only then attach it in WE30
- Position the new segment under the correct parent node in the tree, matching the level SAP expects for extensions (usually a dedicated extension node, not scattered under the base hierarchy)
- Set mandatory/optional and min/max occurrence deliberately, not by copying defaults
- Release the IDoc type; a released type cannot be structurally altered, only extended
- Generate and check syntax before assigning the type to a message type or partner profile
Key data objects
- EDIDC - control record of a live IDoc instance; carries the IDoc type name and extension name that a given interface run actually used, useful for confirming which structure was in effect at runtime
- EDID4 (or the older EDIDD on systems still using the legacy format) - the actual segment data of an IDoc instance; segment names here must match what WE30 defined, and mismatches show up as processing errors
- IDoc type and segment metadata itself is not stored as an ordinary customizing table; it lives in the IDoc repository as a versioned, released repository object, which is why there is no simple SE16 browse of 'all IDoc types' the way there is for a Z-table
How to prove it in the data
To confirm which IDoc type and extension a failing interface actually ran with, pull the control record from EDIDC for the affected document number or date range and read the IDoc type and extension fields directly off it, then compare against the segment names present in EDID4 or EDIDD for that same document number. If a segment name appears in the data table that does not exist in the WE30 hierarchy currently displayed for that type, the sender and receiver are running different versions of the type - a transport or release mismatch, not a data problem.
ECC vs S/4HANA
WE30 is unchanged on S/4HANA; the transaction, the hierarchy model, and the release behavior are identical to the ECC version. There is no Fiori app that replaces it - IDoc type development remains a SAPGUI, backend-only activity. What has changed is the strategic direction: for new integration scenarios SAP steers toward API-based approaches (OData services, event-based integration, proxies) rather than new custom IDoc types, so WE30 work today is more often maintenance of existing extensions than greenfield design, with classic IDoc structures increasingly bridged into cloud middleware rather than replaced outright.
Common pitfalls and how to diagnose them
- Segment release lock: a released segment cannot be edited, only versioned into a new release. Consultants who try to add a field to a released segment inside WE31 and cannot understand why the screen is read-only are hitting this by design - it protects every other IDoc type that already references that segment.
- WE30 versus WE31 confusion: attempting to define fields, data elements, or lengths inside WE30 fails because WE30 has no field-level maintenance. If the requirement is a new field, the work belongs in WE31 first, then the segment gets attached in WE30.
- Wrong extension attachment point: customer extension segments must be attached under the correct extension node in the hierarchy, not anywhere convenient. An extension segment attached at the wrong level is silently ignored by the standard function modules that build the IDoc at runtime, producing an IDoc that looks structurally fine but never carries the custom data.
- Mandatory flag not enforced the way expected: setting a segment to mandatory in WE30 does not guarantee the sending program populates it. Missing-mandatory-segment errors at runtime point to the generating program or user exit, not to WE30 itself.
- Cross-system version mismatch: the single most time-consuming pitfall. Sender and receiver systems running different transport levels of the same custom IDoc type produce segment-not-found or field-truncation errors that look like a mapping bug but are actually a transport sequencing problem. Always check the IDoc type version implied by EDIDC against what WE30 shows on both sides before touching any mapping logic.
Whose problem this is
This is functional/interface-development territory, typically an ABAP-capable functional consultant or an integration developer, not Basis. A clean handover includes the IDoc type name, the extension name if one was created, the exact segments added with their release status, the message type the extension was linked to, any partner profile changes required downstream in WE20, and the transport request number carrying the segment and type objects together.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tcodes/we30ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.