SEOCLASS table — SEOCLASS table for ABAP class definitions
SEOCLASS is the repository header table for ABAP OO classes created through the Class Builder or ABAP Development Tools. One row holds the definition-level attributes of a single class in a single version, such as whether it is final or abstract and its category. It does not hold methods, attributes, or documentation text, and it does not hold interfaces.
This page covers what SEOCLASS actually stores versus what consultants assume it stores, the joins used to pull related class metadata, and the recurring mistake of treating it as a full picture of a class. It also flags the split between class and interface metadata that trips up most first-time lookups.
Published 15 Sept 2026· 1,046 words
What it stores
SEOCLASS stores one row per ABAP class per version, active or inactive, created through the Class Builder (SE24) or through ABAP Development Tools. The row carries structural, header-level attributes of the class itself: its category, whether it is final, whether it is abstract, its state, and audit fields for who created or last changed the definition. It does not carry the class's methods, attributes, events, or types, and it does not carry documentation text or source code. Interfaces are a separate object type in the same OO repository family and are not rows in this table; they live in their own header table. A missing row for a name a developer expects to see is therefore not proof that nothing was ever built under that name, only that no class header exists under that exact name and version.
Key fields
- CLSNAME - name of the class, part of the key
- VERSION - version indicator, active (A) or inactive (I)
- LANGU - language key of the original description
- STATE - implementation state of the class definition
- CATEGORY - class category, e.g. general class, exception class, persistent class
- CLSFINAL - flag indicating the class is final and cannot be subclassed
- CLSABSTRACT - flag indicating the class is abstract
- UUID - unique identifier used for internal repository cross-referencing
- AUTHOR - user who originally created the class
- CREATEDON - creation date
- CHANGEDBY - user who last changed the header-level definition
- CHANGEDON - date of the last header-level change
How it joins the data model
- TADIR-OBJ_NAME = SEOCLASS-CLSNAME (with TADIR-OBJECT = 'CLAS') gives the package, original system and transport-relevant repository entry for the class
- E071-OBJ_NAME = SEOCLASS-CLSNAME (with E071-OBJECT = 'CLAS') shows which transport request carries the class object
- SEOCOMPO-CLSNAME = SEOCLASS-CLSNAME pulls in the class's methods, attributes, events and types, which SEOCLASS itself does not hold
- T002-SPRAS = SEOCLASS-LANGU resolves the language key to the language description used for the class's short text
- TRDIR-NAME / REPOSRC-PROGNAME joined by naming convention to the generated class pool program that the runtime actually executes
How to read it safely
SEOCLASS is a cross-client repository table, so there is no client field to restrict on. Always restrict on CLSNAME, ideally with an exact name rather than a wildcard, since the table spans the entire class population of the system including SAP standard classes. When a class has both an active and an inactive version, both rows exist with the same CLSNAME and different VERSION values; filtering on VERSION = 'A' avoids confusing an unreleased change with the live definition. Selecting by CATEGORY alone across the whole table is expensive and rarely useful without also joining through TADIR to a package, since the table has no package field of its own.
How to prove it in the data
Symptom: a developer insists a custom class ZCL_FOO exists but a transport or call fails as if it does not. Select single from SEOCLASS where CLSNAME = 'ZCL_FOO' and VERSION = 'A'. No row means no active class header exists under that exact name, regardless of what is visible in an editor buffer. If a row exists only with VERSION = 'I', the class was saved but never activated, which explains why other objects referencing it fail at runtime or activation.
ECC vs S/4HANA
SEOCLASS is unchanged in shape and purpose on S/4HANA. It is still populated the same way by the Class Builder and by ABAP Development Tools, and it has not been superseded by a CDS compatibility view, since it is core ABAP repository metadata rather than an application table exposed to reporting. Consultants working across ECC and S/4HANA on the same custom development can rely on the same field layout and the same lookup logic on either side.
Common pitfalls
- Treating a missing row as proof the class was never built, when in fact only the inactive version (VERSION = 'I') exists because it was saved but never activated.
- Looking for interface metadata in SEOCLASS. Interfaces are a separate object type stored in their own header table, not as rows here.
- Expecting to find method names, attribute types, or class documentation in this table. All of that lives in companion tables such as SEOCOMPO, not in SEOCLASS.
- Reading the CATEGORY value without checking the fixed values behind that domain first. The raw number means nothing without the value list, and guessing at it produces wrong conclusions about whether a class is an exception class, a persistent class, or a plain one.
- Editing SEOCLASS directly through SE16N or SM30 to force a flag such as CLSFINAL. This bypasses the Class Builder's consistency checks against SEOCOMPO, SEOMETAREL and the generated program, and corrupts the class beyond what a normal repair can fix.
- Assuming CHANGEDBY and CHANGEDON reflect every edit made to the class, including method bodies. They only reflect header-level attribute changes; method source changes are tracked at the include or version-management level, not here.
Whose problem this is
Any question about what SEOCLASS actually contains belongs to the ABAP development team, specifically whoever owns the class in question. Basis or transport teams get pulled in only when the question is about which request carries the object, via the TADIR and E071 join, not about the class's internal attributes.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/seoclassERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.