SCI — Code Inspector for Static ABAP Checks
SCI opens the Code Inspector, which runs a named set of static ABAP checks against a defined object set (programs, classes, packages, or a transport request) using a check variant. The output is a saved snapshot of findings tied to that one run, not a live check, which is the main source of confusion when developers assume the list updates automatically after code changes.
This page covers what SCI actually scans and saves, the real sequence for defining an inspection and variant, and the recurring diagnostic traps: wrong or empty object sets, lenient variants that hide real problems, stale results, and background job failures. It also covers how SCI's role changed with the arrival of the ABAP Test Cockpit on S/4HANA.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,219 words
Purpose
SCI opens the Code Inspector, the ABAP Workbench tool for running static checks against a defined set of repository objects - programs, classes, function groups, or entire packages - using a named check variant that bundles individual checks (extended syntax check, performance checks, security checks, naming conventions, and so on) with severity thresholds. The result is an inspection: a saved combination of object set plus variant that can be re-run at will. The structural fact that explains most confusion: SCI does not check code live as it is edited. It runs the selected checks in a batch pass and displays a snapshot list of findings tied to that specific run; nothing in the tool re-validates automatically when the underlying code changes afterward.
When it is used
Reached for before transporting custom development, as part of a quality gate in a development or change process, or when a downstream problem (dump, performance complaint, security finding) needs a broader sweep across a package rather than a single-object check. It sits earlier than transport release: a disciplined process runs SCI against the whole request before release, not after. It is not a substitute for functional testing or for a single-object extended syntax check during active editing, which is faster for one object mid-edit. SCI is for a scoped or scheduled batch pass across many objects, packages, or an entire transport request, often run unattended as a background job feeding a quality report to the development lead.
How to use it in practice
- Start SCI, choose Create under Inspections, and give the inspection a name.
- Define the object set: single objects, a package, a transport request, or the result of a search, and save the set separately so it can be reused across inspections.
- Choose or build a check variant: use a delivered variant or copy one and switch individual checks on or off with their severity thresholds.
- Run the inspection interactively for a quick look, or schedule it as a background job when the object set is large.
- Open the result list and double-click a finding to jump straight to the flagged line in the object.
- Mark a deliberately accepted finding with an exemption so it does not reappear on every future run of the same inspection.
Key data objects
- TADIR - directory entry for every object in the inspection's object set; used to resolve which objects actually exist and belong to the package or request being scanned.
- REPOSRC - holds the ABAP source read at scan time; if the active version differs from what was last activated, the findings reflect whichever version was actually read.
- Inspection and check variant definitions - saved as Code Inspector's own repository objects rather than as flat customizing tables, so there is no single table listing all findings; the result list lives inside the inspection object itself, or in the job log and spool if run in background.
How to prove it in the data
There is no dedicated results table to query with SE16. To confirm a finding, re-run the same inspection with the same object set and same variant and compare the result list line for line against the earlier one. For background runs, open the job in SM37 and read the spool, which lists every finding with its message text and object and line reference. To confirm scope before trusting any result, check TADIR for the object type and package to be sure the object set actually included the object in question; a typo in a package name silently produces an empty or partial object set with no error raised.
ECC vs S/4HANA
SCI still exists unchanged on S/4HANA as the underlying Code Inspector engine; nothing about the transaction itself changed. What changed is how it gets used: the ABAP Test Cockpit, which runs on top of the same Code Inspector checks, became the standard tool for custom-code adjustment during an S/4HANA conversion, remote analysis of a system's whole custom namespace, and release-relevant quality gates. Consultants doing S/4HANA readiness work are usually pointed at that cockpit rather than at SCI directly, even though the checks executing underneath are the same ones configured here.
Common pitfalls and how to diagnose them
- Empty or wrong object set: the inspection reports clean because the object set resolved to zero objects or the wrong ones. Check the object set definition and TADIR for the package or request name before trusting a green result.
- Variant too lenient: the check that matters (performance, security, DB access) is switched off in the variant used, or its severity is set to information, so it never surfaces in the priority-filtered view. Open the variant and check every relevant check's on/off flag and threshold, not only the ones shown by default.
- Stale result: the displayed list is from an earlier run and the code has changed since. Re-run the inspection rather than trusting the timestamp in the header alone.
- Unfixable generated code flagged: findings land against generated includes, screen exits, or framework-generated methods that cannot be edited directly. Trace back to the tool that generated the code rather than editing the flagged include.
- Severity misread: the same check produces a warning under one variant and an error under another. Before escalating a finding as release-blocking, confirm which variant and threshold produced it.
- Background job failure: a scheduled inspection over a large package or a transport with many objects times out or fails on missing authorization for one object, and the summary shows a partial run with nothing obviously wrong. Check the SM37 job log detail, not just the job status.
- Inactive object: the object exists only as an inactive or private version, and the check either skips it or reports against the wrong version. Activate the object first, then re-run.
Whose problem this is
Development and ABAP team problem, not functional or Basis, except when a scheduled inspection needs a background job or authorizations Basis controls. A clean handover names the inspection and variant used, states the object set scope (single object, package, or transport), lists open findings by severity with any exemptions already applied, and states whether the run being discussed was interactive or the latest scheduled job, so the receiving developer does not have to guess which result is current.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tcodes/sciERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.