TBTCS table — Background Job Status Text Table
TBTCS is the small customizing and text table that holds the human-readable descriptions for the internal background job status codes (Scheduled, Released, Ready, Active, Finished, Cancelled, and similar) stored on the job header table. SM37 and job logs read it to translate the one-character status code into text in the user's logon language. It carries no transactional volume of its own.
This page covers TBTCS, the language-dependent text table behind the internal status codes used by SAP background processing. It explains what a row represents, how the table is used from a data-model perspective, and the pitfalls of mistaking it for a transactional job table when the actual job history lives in TBTCO and TBTCP.
Published 15 Sept 2026· 898 words
What it stores
One row in TBTCS represents a single background job status code together with its descriptive text in one language. Background jobs carry an internal one-character status code on the job header (values such as scheduled, released, ready, active, finished, and cancelled or aborted). Rather than hardcoding the text for each status in every screen and report, the status field is looked up against this table so that SM37, job logs, and custom monitoring reports can render the status in the user's logon language. Because the set of possible statuses is fixed and small, this table has a low, static row count: the number of defined status codes multiplied by the number of installed logon languages. It does not grow with job execution volume and is not a place to look for job history or scheduling data.
Key fields
- SPRAS - logon language key the status text is maintained in
- STATUS - single-character internal job status code, same value domain used on the job header table's status field
- status description field - the text shown in SM37 and job logs for the given status code and language
How it joins the data model
- TBTCS-STATUS = TBTCO-STATUS (translates the job header's internal status code into displayable text)
- TBTCS-SPRAS = SY-LANGU or the requesting user's logon language, used implicitly by the display program rather than as a stored foreign key
- TBTCO-JOBNAME/JOBCOUNT is the actual job identifier; TBTCS is only ever reached indirectly through the status code, never joined on job name
How to read it safely
This is a client-independent or near-static customizing table, not a client-dependent transactional one, so there is no meaningful selectivity discussion the way there would be for TBTCO or TBTCP. The only sensible restriction is on the status code and the language key, and even without any restriction the table returns at most a few dozen rows per language. If a query against it returns thousands of rows, the join condition is wrong, most likely joined on job name or job count instead of status.
How to prove it in the data
To confirm what a status code seen in a job header actually means in a given language, select TBTCS restricting on STATUS equal to the code found in TBTCO-STATUS for the job in question, and SPRAS equal to the language of interest. The single row returned gives the text that SM37 would display for that job in that language. If no row comes back, the status value itself is suspect, not the text table.
ECC vs S/4HANA
TBTCS is part of the standard background processing infrastructure and is not a Basis area that S/4HANA restructured. Background job scheduling, execution, and status handling work the same way on S/4HANA as on ECC, so the table's shape and purpose are unchanged. There is no compatibility view replacing it and no indication it has been deprecated in favor of a newer object.
Common pitfalls
- Treating TBTCS as a log of what happened to a job. It is a static text lookup; the actual timeline, start and end times, and step results live in TBTCO and TBTCP, not here.
- Assuming a missing or blank status text means the job itself has a data problem. A missing row in TBTCS in the user's language, while the job header status code is perfectly valid, is a language customizing gap, not a job scheduling issue.
- Filtering on status text strings instead of the underlying status code when building custom reports. Text can differ by language and, in principle, across releases; the code on TBTCO is the stable value to filter and compare on.
- Expecting this table to be large or to explain performance problems on SM37. It is tiny and static; performance issues around job monitoring almost always trace back to TBTCO or TBTCP volume, indexing, or selection criteria, never to this table.
- Confusing the internal status code domain with the free-text status shown by custom job-scheduling tools built on top of SAP, which sometimes introduce their own status vocabulary layered over the standard one.
Whose problem this is
Any question that actually needs answering here belongs to Basis, since it concerns the job scheduling infrastructure rather than application data. In practice this table is rarely a focus of investigation on its own; Basis looks at it only in passing while diagnosing a status display issue in SM37, with the real analysis centered on TBTCO and TBTCP.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/tbtcsERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.