SEOCOMPO table — Class Builder table for class and interface components
SEOCOMPO stores one row per component of an ABAP OO class or interface: each attribute, method, event, type, or constant declared in Class Builder. It records the component name, its type, visibility, and declaration flags, but not its source code or short text, which live in separate tables. It is read whenever SE24, SE80, or the ABAP compiler needs to resolve what a class exposes.
This page covers SEOCOMPO, the metadata table behind the Class Builder that lists every attribute, method, event, type and constant belonging to a class or interface. It focuses on how to read component visibility and type correctly, and on the pitfalls of mistaking this table for a source of documentation, implementation code, or runtime behavior.
Published 15 Sept 2026· 995 words
What it stores
One row represents a single declared component of one class or interface: a method, an attribute, an event, a type, a constant, or an alias, tied to a specific object version. The table is the structural backbone that SE24 and SE80 read to build the component list shown on the class definition screen. It tells the system what exists and how it is declared (visibility, static or instance, abstract or final for methods) but it does not hold the method's implementation logic, that lives in the class include source, nor does it hold descriptive short texts, which sit in a companion text table. SEOCOMPO is populated when a class or interface is activated in the Class Builder and is rebuilt whenever the class definition changes.
Key fields
- CLSNAME - name of the class or interface the component belongs to
- CMPNAME - name of the component (method name, attribute name, event name, type name)
- VERSION - object version indicator, distinguishes the active definition from an inactive/modified one
- CMPTYPE - component category code (attribute, method, event, type, constant), drives which detail table has the rest of the definition
- EXPOSURE - visibility of the component (public, protected, private)
- STATE - whether the component is instance-based or static/class-based
- EDITORDER - display sequence used to render the component list in the same order as the Class Builder screen
How it joins the data model
- SEOCOMPO-CLSNAME = SEOCLASS-CLSNAME to get the owning class or interface and its category (class, interface, exception class)
- SEOCOMPO-CLSNAME = TADIR-OBJ_NAME (with TADIR-OBJECT = 'CLAS' or 'INTF') to find the package and transport layer the class belongs to
- SEOCOMPO-CLSNAME/CMPNAME joins to the corresponding text table for the component's own short description, since SEOCOMPO itself carries no descriptive text
- SEOCOMPO-CLSNAME/CMPNAME joins to method-parameter and exception tables when CMPTYPE indicates a method, to pull signature detail not stored here
How to read it safely
SEOCOMPO is not client-independent in the way TADIR is; class metadata is repository data and behaves like other Class Builder tables, so selection should always go through CLSNAME first, never a full table scan. Restrict on CLSNAME plus VERSION before adding CMPTYPE or EXPOSURE filters, because CMPNAME alone is not selective across the whole install (many classes reuse conventional method names like CONSTRUCTOR or GET_INSTANCE). When comparing definitions across systems, always pin VERSION to the active version, otherwise a query silently mixes an old inactive component list with the current one and produces phantom extra or missing rows.
How to prove it in the data
Symptom: a developer insists a class exposes a public method that a calling program cannot see. Select SEOCOMPO with CLSNAME equal to the class, VERSION for the active version, CMPNAME equal to the method name. Check EXPOSURE on the returned row: if it reads protected or private rather than public, the visibility, not a syntax or transport issue, is the actual blocker, and the fix is a change to the method declaration in SE24, not a debugging session in the calling program.
ECC vs S/4HANA
SEOCOMPO is unchanged core ABAP repository infrastructure and exists identically on ECC and S/4HANA, since it underpins the Class Builder itself rather than any application module. There is no CDS compatibility view for it because it is not a business data table; it is a development-tool metadata table maintained by the ABAP kernel and workbench tools regardless of which SAP product runs on top.
Common pitfalls
- Assuming a missing row means the component does not exist: check VERSION first, an inactive change may have replaced the active row temporarily during development and the active version query returns nothing until activation completes
- Reading CMPTYPE codes from memory instead of via the Class Builder or a documented value list; the coding is not self-evident and guessing produces wrong classification of methods versus events versus types
- Expecting to find method source code here; SEOCOMPO only declares that the method exists and its signature-level attributes, the implementation lives in the class include, a completely separate object
- Expecting short texts or documentation strings in SEOCOMPO; those live in a separate text table keyed the same way, and a raw SEOCOMPO query without that join will show empty description fields even for well-documented classes
- Treating EXPOSURE as a security control; it governs ABAP OO visibility at compile time only, it has no relationship to authorization objects, PFCG roles, or runtime access checks
- Comparing component counts across two systems without filtering by VERSION and by CMPTYPE consistently, which produces false positives for 'missing components' when the difference is really an inactive version or an inherited component pulled in through a superclass
Whose problem this is
This is squarely an ABAP development question, owned by whoever wrote or maintains the class in question, not by a functional consultant or basis team. Disputes over what a class exposes get resolved by opening the class in SE24/SE80 and checking the definition directly; querying SEOCOMPO by hand is a debugging shortcut for a developer, not a business data lookup for a functional analyst.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/seocompoERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.