SAP tableObjectTSTCTModuleABAP

TSTCT table — TSTCT - Transaction Code Text Table

TSTCT holds the language-dependent short description that appears next to a transaction code in the SAP menu, in SE93, and in transaction search results. One row equals one transaction code in one logon language. It has no bearing on whether the transaction can be started, is authorized, or is transported correctly - that logic lives in TSTC, TSTCA, and the authorization objects, not here.

TSTCT is the cross-client text table that supplies the human-readable name for a transaction code in a given language. This page covers its key fields, how it joins to TSTC and the language table, and the recurring mistake of treating a missing or blank description as evidence that the transaction itself is broken or missing.

Published 15 Sept 2026· 945 words

What it stores

Each row in TSTCT stores the short text label for one transaction code in one language, nothing else. When a user opens the SAP Easy Access menu, runs SE93 to inspect a transaction, or types a partial name into the transaction search, the label they see comes from TSTCT keyed by the current logon language. The table is cross-client, meaning the text is the same regardless of which client the user is logged into, but it is not automatically the same across systems unless transported. A transaction code can exist perfectly well in TSTC with a working program assignment and still have no row in TSTCT for a particular language, in which case the system falls back to another language or shows the text blank. TSTCT never determines execution behavior, screen flow, or authorization - it is purely descriptive metadata.

Key fields

  • SPRSL - language key (e.g. E for English, D for German); together with TCODE forms the primary key
  • TCODE - the transaction code the text belongs to, matches TSTC-TCODE
  • TTEXT - the short description text shown in menus and SE93

How it joins the data model

  • TSTCT-TCODE = TSTC-TCODE (join to the transaction code definition and its assigned program or object)
  • TSTCT-SPRSL = T002-SPRAS (join to the language table to resolve the language key to a readable name)
  • TSTCT-TCODE = TADIR-OBJ_NAME (with TADIR-OBJECT = 'TRAN') to find the package and transport layer of the transaction
  • TSTCT-TCODE = TSTCA-TCD (to cross-check whether the same transaction is also authorization-restricted)

How to read it safely

TSTCT is a small, flat, cross-client table, so it is not a performance risk even without restriction, but always filter on SPRSL first when doing a lookup, otherwise every language variant of the text comes back and gives a false impression of duplication. When comparing systems, remember that the same TCODE can carry different TTEXT values in each system if the underlying transport was never released, so a mismatch in text is not evidence of a functional difference. Do not use TSTCT alone to check whether a transaction exists; TSTC is the authoritative existence check, TSTCT is only the label attached to it.

How to prove it in the data

Symptom: a transaction shows correctly in the menu for English users but appears blank or shows the technical code instead of a description for German users. Select TSTCT where TCODE equals the transaction code and SPRSL equals 'D'. If no row returns, the German text was never maintained or never transported, and the English fallback (or blank) is expected behavior, not a bug in the transaction itself.

ECC vs S/4HANA

TSTCT is unchanged in S/4HANA and continues to be maintained the same way, through SE93 when creating or changing a transaction code, with the language-specific text propagated by standard translation and transport mechanisms. It has not been replaced by a CDS compatibility view and is still queried directly by tools that build transaction lists or menu trees. No structural changes are expected between ECC and S/4HANA for this table.

Common pitfalls

  • Assuming a missing TSTCT row means the transaction was deleted; check TSTC first, TSTCT only supplies the label and its absence just means no text was maintained for that language
  • Editing TSTCT directly through a table maintenance tool like SE16N instead of through SE93; the table is cross-client and the change bypasses the normal transport object recording for the transaction, causing text drift between systems
  • Interpreting different TTEXT values across a landscape as a functional discrepancy in the transaction when it is simply an untransported or manually retyped label
  • Forgetting the language fallback logic: a user logged on in a language with no TSTCT entry does not get an error, they silently get the fallback language's text, which masks the fact that translation work was never done
  • Confusing TSTCT with the authorization check table TSTCA; a blank description has nothing to do with whether the user is authorized to run the transaction
  • Searching TSTCT for a custom Z-transaction and concluding it was never created, when in fact the developer entered the program in TSTC but skipped filling in a short text on the SE93 initial screen

Whose problem this is

This is an ABAP development or Basis housekeeping question, not a functional one. When a custom transaction shows an empty or wrong description, the developer who created it in SE93 owns the fix; when the discrepancy spans multiple languages or systems, the transport team owns tracing whether the text object was released and imported. Functional consultants only encounter this table when documenting or auditing which transactions exist for a process area.

Related SAP objects

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

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