SAP tableObjectTSTCAModuleABAP

TSTCA table — Authorization objects checked per transaction code

TSTCA stores, per client, the additional authorization objects that the kernel enforces when a user starts a given transaction code, beyond the standard S_TCODE check. One row equals one transaction code plus one authorization object that must be satisfied for that transaction to run. It is maintained through the transaction's properties in SE93, not through SU24.

TSTCA is the runtime table behind the hard authorization check that fires when a transaction code is started, separate from the SU24 authorization proposal tables that only feed role maintenance defaults. This page covers what each row represents, how to read it during an authorization failure, and the pitfalls of confusing it with SU24 or program-level AUTHORITY-CHECK statements.

Published 15 Sept 2026· 908 words

What it stores

One row in TSTCA represents a single pairing of a transaction code and an authorization object that must be checked before the transaction is allowed to start, in a given client. This is separate from and additional to the mandatory S_TCODE check that every dialog transaction goes through. Rows are created when a developer or Basis administrator opens the transaction in its maintenance transaction and assigns one or more authorization objects to it directly, or when such an assignment is transported between systems as part of the transaction's object. The table is intentionally small: most transactions have zero or one extra object listed here, and only a subset of transactions carry additional hard-coded object checks at the tcode-start level, as opposed to checks embedded later in the program logic itself.

Key fields

  • MANDT - client, always the first restriction in any selection
  • TCD - transaction code being started, joins to the transaction code master table
  • OBJECT - name of the authorization object that must be checked for this transaction, joins to the authorization object catalog

How it joins the data model

  • TSTCA-TCD = TSTC-TCODE - resolves the row to the transaction's master record, including its program and screen
  • TSTCA-TCD = TSTCT-TCODE - resolves the row to the transaction's short description text for reporting and audit output
  • TSTCA changes travel inside the same transport request as the transaction code object entry, alongside E071 object list entries of type R3TR TRAN

How to read it safely

Always restrict by MANDT first, then by TCD when the question is 'what does this transaction check' or by OBJECT when the question is 'which transactions are guarded by this authorization object'. The table is small enough that a full table scan is not a performance problem, but an unfiltered select still returns an unmanageable list to eyeball. When comparing systems for an authorization discrepancy, pull the TSTCA rows for the specific TCD in both systems side by side rather than trusting that a transport moved everything, since direct changes in a downstream client bypass transport comparison tools.

How to prove it in the data

Symptom: a user with S_TCODE authorization for transaction XYZ still gets an authorization failure when starting it. Select TSTCA where MANDT equals the current client and TCD equals XYZ. Each OBJECT returned is a further authorization object the kernel enforces at start. Take each object and check the user's role authorization values for it via the authorization trace; the object present in TSTCA but missing or under-scoped in the user's role is the cause of the failure, not S_TCODE itself.

ECC vs S/4HANA

TSTCA carried forward into S/4HANA with the same structure and the same maintenance path through the transaction's properties screen. No compatibility view is known for it, since it is a core authorization runtime table rather than a business or reporting table. Its role in the authorization architecture is unchanged: it remains a secondary, hard-coded check layered on top of S_TCODE, distinct from the role-based authorization concept.

Common pitfalls

  • Treating SU24 proposal values (the tables behind role menu default authorizations) as equivalent to TSTCA. SU24 only supplies default values suggested when a transaction is added to a role's menu; it does not change what the kernel actually enforces at transaction start. Editing SU24 proposals has no effect on TSTCA.
  • Assuming that removing a row from TSTCA removes an authorization requirement from the program. TSTCA only controls the transaction-start-level check performed by the kernel before the program is even called. Any AUTHORITY-CHECK statement written inside the ABAP program itself fires independently of TSTCA and cannot be disabled from here.
  • Assuming an empty result set for a transaction code means the transaction is unprotected. The S_TCODE check on the transaction code itself is a separate, system-wide mechanism and is not represented as a row in this table.
  • Confusing TSTCA with the role authorization data that actually grants field values to a user. TSTCA says what is required, not what any given user has been granted; the two must be checked separately.
  • Comparing TSTCA content across systems and concluding a transport failed, when in fact a direct change was made in one system outside the transport chain. Check the transport object list, not just the table content, before raising that conclusion.

Whose problem this is

Changes to TSTCA content are made by whoever maintains the transaction code's technical properties, typically a developer or a Basis-adjacent security administrator, and they are transport-relevant like any other transaction code change. Interpreting the table during an incident is usually done jointly by the authorization team and the ABAP developer who knows what the program itself additionally checks.

Related SAP objects

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

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