Skip to main content

check: Quality checks

Syntax checks, ATC runs, the find → inspect → fix loop, ABAP Unit, CDS syntax, and ATC exemptions.

Related guides: quality-checks.

9 commands.

abapctl check syntax

READ IDEMP

Syntax-check ABAP source against SAP without writing it

OptionRequiredDescription
object (positional)yesobject (object/name argument)
--connectionnoconnection profile name
--sourcenopath to source file (omit to check active version)
--adt-typenoADT object type (e.g. PROG/P, DDLS/DF, CLAS/OC). Use when a name is shared by multiple object types
abapctl check syntax ZCL_FOO --source ./ZCL_FOO.clas.abap

abapctl check atc

READ IDEMP

Run single-object ATC check for Clean Core compliance

OptionRequiredDescription
object (positional)yesobject (object/name argument)
--connectionnoconnection profile name
--variantnoATC check variant
--adt-typenoADT object type (e.g. PROG/P, DDLS/DF, CLAS/OC). Use when a name is shared by multiple object types
abapctl check atc ZCL_FOO

abapctl check atc-inspect

READ IDEMP

Inspect ATC findings' quickfix metadata (kinds, doc URLs, tags); read-only. To apply a fix, use check atc-fix.

OptionRequiredDescription
object (positional)yesobject (object/name argument)
--variantyesATC check variant (required); see check atc-variants
--connectionnoconnection profile name
--filternofilter findings by quickfix kind
--max-verdictsnomaximum verdicts to retrieve (defaults to clean_core.max_verdicts)
--adt-typenoADT object type (e.g. PROG/P, DDLS/DF, CLAS/OC). Use when a name is shared by multiple object types
abapctl check atc-inspect ZCL_FOO

abapctl check atc-fix

DESTR

Apply an ATC finding's quick fix (preview by default; --apply to write). For cursor-position fixes use refactor quickfix.

read-only without --apply; --apply opts in to writing the fix (no --yes needed)

OptionRequiredDescription
object (positional)yesobject (object/name argument)
--variantyesATC check variant (required); see check atc-variants
--connectionnoconnection profile name
--applynowrite the fix(es): bare = all non-conflicting, [index] = only the Nth listed fix
--dry-runnopreview only (the default; accepted for symmetry with other write commands)
--no-activatenowhen applying, write source but do not activate
--transportnotransport request to write against (overrides the lock default)
--allnobulk auto-quickfix across the worklist (not yet implemented)
--max-verdictsnomaximum verdicts to retrieve (defaults to clean_core.max_verdicts)
--adt-typenoADT object type (e.g. PROG/P, DDLS/DF, CLAS/OC). Use when a name is shared by multiple object types
abapctl check atc-fix ZCL_FOO --dry-run

abapctl check unit

READ IDEMP

Run ABAP Unit tests for a single object

OptionRequiredDescription
object (positional)yesobject (object/name argument)
--connectionnoconnection profile name
--junitnouse async flow and output JUnit XML (requires the async ABAP Unit run; not on all stacks)
--adt-typenoADT object type (e.g. PROG/P, DDLS/DF, CLAS/OC). Use when a name is shared by multiple object types
abapctl check unit ZCL_FOO

abapctl check atc-variants

READ IDEMP

List available ATC check variants

OptionRequiredDescription
--connectionnoconnection profile name
abapctl check atc-variants

abapctl check cds-syntax

READ IDEMP

Syntax-check CDS DDL source against SAP

OptionRequiredDescription
object (positional)yesobject (object/name argument)
--connectionnoconnection profile name
--sourcenopath to source file (checks draft; omit to check active version)
--adt-typenoADT object type (e.g. PROG/P, DDLS/DF, CLAS/OC). Use when a name is shared by multiple object types
abapctl check cds-syntax ZCL_FOO --source ./ZCL_FOO.clas.abap

abapctl check atc-exempt-proposal

READ IDEMP

Get ATC exemption proposal for a finding

OptionRequiredDescription
markerId (positional)yesmarkerId (object/name argument)
--connectionnoconnection profile name
abapctl check atc-exempt-proposal MARKER_ID

abapctl check atc-exempt

WRITE

Request an ATC exemption for a finding

OptionRequiredDescription
markerId (positional)yesmarkerId (object/name argument)
--reasonyesexemption reason (FPOS or OTHR)
--justificationyesjustification text
--connectionnoconnection profile name
--approvernoapprover username
abapctl check atc-exempt MARKER_ID