SAP tableObjectTSTCModuleABAP

TSTC table — TSTC Transaction Code Table

TSTC holds one row per transaction code, mapping it to the ABAP program and initial screen it starts, or to the start parameters it passes if it is a parameter or variant transaction. It is the table SE93 reads and writes. Existence of a row does not guarantee the transaction can actually be executed by a given user.

TSTC is the base dictionary table behind every transaction code in the system, linking the tcode to a program and screen. This page covers the fields that matter for diagnosing missing or broken transactions, the joins into TRDIR, TADIR, TSTCT and TSTCA, and the pitfalls consultants hit when they assume a TSTC entry proves a transaction is runnable.

Published 15 Sept 2026· 987 words

What it stores

One row in TSTC represents a single transaction code defined in the system: the four-to-twenty character code a user types into the command field, together with the ABAP program and initial screen number that code launches. For parameter or variant transactions, the row instead carries the additional start parameters that get applied when the transaction runs, and the program field is left blank. Every transaction created through SE93, whether standard SAP delivered or custom Z/Y, results in a row here. It is the runtime lookup table the kernel consults the moment a user enters a transaction code, before any authorization or lock checks happen. It says nothing on its own about whether the transaction is currently usable.

Key fields

  • MANDT - client
  • TCODE - the transaction code itself, primary key of the table
  • PGMNA - name of the ABAP program the transaction starts; blank for parameter transactions and for entry points that are not classic reports
  • DYPNO - screen number within PGMNA used as the initial screen
  • CPARAM - additional start parameters, populated for parameter and variant transactions (skip initial screen, forced mode, SET/GET parameter values)

How it joins the data model

  • TSTC-TCODE = TSTCT-TCODE (short description of the transaction, per language)
  • TSTC-TCODE = TADIR-OBJ_NAME where TADIR-OBJECT = 'TRAN' (package assignment, original system, development class of the transaction as an object)
  • TSTC-PGMNA = TRDIR-NAME (confirms the target program exists, is active, and check its program type)
  • TSTC-TCODE = TSTCA-TCODE (authorization object(s) checked when the transaction is started)
  • TSTC-TCODE = E071-OBJ_NAME where E071-OBJECT = 'TCOD' (transport request line item for the transaction record)

How to read it safely

Always filter on TCODE, the key field; lookups are single-value so there is rarely a reason to scan without one. The table is small relative to most application tables (tens of thousands of rows across a system), so a full read is not expensive, but restricting on TCODE first still avoids pulling in unrelated entries when joining to TRDIR or TADIR. Transaction codes are case-sensitive and always uppercase internally, so a value copied from a document with trailing blanks or lower case will not match and will look like a missing entry when it is actually a formatting problem in the selection.

How to prove it in the data

Symptom: a user reports 'transaction XYZ does not exist' or gets a 'transaction cannot be started' message. Select single from TSTC where TCODE = 'XYZ'. No row at all means the transaction was never created in this client/system, or existed and was deleted; check TADIR for a matching TRAN entry and E071 in the relevant transport request to see if it should have arrived. A row with PGMNA blank and CPARAM populated is a parameter transaction, not a data error; resolve the underlying target transaction from CPARAM before concluding anything is broken.

ECC vs S/4HANA

TSTC exists in S/4HANA in the same shape and role as in ECC; the transaction code dispatch mechanism was not replaced or restructured for HANA. It is still maintained through SE93 and read the same way. A transaction code being present in TSTC has no bearing on whether a corresponding Fiori app tile exists in the launchpad catalog, and the reverse is also true; the two are separate frameworks and separate tables entirely.

Common pitfalls

  • A row existing in TSTC does not mean the transaction is executable. Authorization object failures live in TSTCA, and the transaction can be locked independently of TSTC by a separate lock mechanism (checked via SM01); both can block execution while TSTC looks perfectly normal.
  • PGMNA blank is expected and correct for parameter transactions and for object-oriented or non-classic entry points. Consultants sometimes flag this as a broken transaction when it is simply a different transaction type.
  • If a program referenced in PGMNA is deleted, renamed, or never transported, TSTC still shows the row and SE93 still displays it, but calling the transaction throws a runtime dump. The fix is on the program side (TRDIR/transport), not by editing TSTC.
  • TSTCT holds only the description shown in SE93 and the menu; editing it does not change what the transaction does. Mixing this up with TSTC when 'fixing' a transaction wastes a cycle.
  • A custom transaction can run correctly in the system where it was created even if it was never assigned to a package properly in TADIR. The gap only surfaces at transport time, when there is no clean object entry to move, and the transaction silently fails to appear in the target system.
  • Copy-pasted transaction codes from spreadsheets or emails frequently carry trailing spaces or lower case letters; a select against TSTC with an unclean value returns nothing and gets misread as proof the transaction does not exist.

Whose problem this is

TSTC is a development object maintained through SE93 and owned by the ABAP/Basis or development team, transported like any other workbench object. Functional consultants should not edit it directly. When a transaction appears missing, locked, or misrouted, raise it as a development/transport question rather than attempting a fix in the table itself.

Related SAP objects

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

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