Clean ABAP & Modern Syntax (49 Rules)
Modern language features, expression-oriented coding, and idiomatic Clean ABAP practices.
Category Overview
This category enforces 49 native ATC rules adhering to SAP Clean ABAP and ABAP Cloud standards. Each check executes natively inside Eclipse ADT and SAP GUI.
Rules in this Category
| Rule Name | Native ATC Class | Suppression Tag | Automated QuickFix |
|---|---|---|---|
| Check Downport Compatibility (7.40+ Modern Constructs) | ZCL_SKYLINT_PREF_DOWNPORT | #EC PREF_DOWNPORT | - |
| Prefer REDUCE #( ) Expression over Simple Aggregation LOOP | ZCL_SKYLINT_PREF_REDUCE | #EC PREF_REDUCE | ⚡ Ready |
| Modernize READ TABLE (Table Expressions & line_exists) | ZCL_SKYLINT_PREF_READ_TABLE | #EC PREF_TAB_EXPR | ⚡ Ready |
| Prefer COND #( ) Expression over IF/ELSEIF/ELSE | ZCL_SKYLINT_PREF_COND | #EC PREF_COND | ⚡ Ready |
| Prefer SWITCH #( ) Expression over CASE Statement | ZCL_SKYLINT_PREF_SWITCH | #EC PREF_SWITCH | ⚡ Ready |
| Prefer lines( ) over DESCRIBE TABLE | ZCL_SKYLINT_PREF_LINES | #EC PREF_LINES | ⚡ Ready |
| Prefer IS NOT over NOT ... IS | ZCL_SKYLINT_PREF_IS_NOT | #EC PREF_IS_NOT | ⚡ Ready |
| Method Call Parameter Naming Style (Omit or Require) | ZCL_SKYLINT_PREF_PARAM_NAME | #EC PREF_PARAM_NAME | ⚡ Ready |
| Prefer String Templates over CONCATENATE | ZCL_SKYLINT_PREF_STR_TMPL | #EC PREF_STR_TMPL | ⚡ Ready |
| Prefer RETURN over EXIT in Methods | ZCL_SKYLINT_PREF_RETURN | #EC PREF_RETURN | ⚡ Ready |
| Merge Nested IF Statements | ZCL_SKYLINT_PREF_MERGE_IFS | #EC PREF_MERGE_IFS | ⚡ Ready |
| Prefer Symbol Comparison Operators (=, <>, <, >) | ZCL_SKYLINT_PREF_SYMBOL_OP | #EC PREF_SYMBOL_OP | ⚡ Ready |
| Prefer NEW #( ) over CREATE OBJECT | ZCL_SKYLINT_PREF_NEW_OP | #EC PREF_NEW_OPERATOR | ⚡ Ready |
| Prefer xsdbool( ) for Boolean Assignments | ZCL_SKYLINT_PREF_XSDBOOL | #EC PREF_XSDBOOL | ⚡ Ready |
| Require Fully Typed Variables and Parameters | ZCL_SKYLINT_PREF_FULL_TYPED | #EC PREF_FULL_TYPED | - |
| Prefer CORRESPONDING #( ) Operator | ZCL_SKYLINT_PREF_CORRESP | #EC PREF_CORRESP | ⚡ Ready |
| Prefer Functional RETURNING Parameters | ZCL_SKYLINT_PREF_RETURNING | #EC PREF_RETURNING | - |
| Prefer Class-Based Exceptions over Classic EXCEPTIONS | ZCL_SKYLINT_PREF_CLASS_EXC | #EC PREF_CLASS_EXC | - |
| Design for Inheritance or Prohibit It (FINAL) | ZCL_SKYLINT_PREF_FINAL_CLS | #EC PREF_FINAL_CLASS | ⚡ Ready |
| Prefer INSERT ... INTO TABLE over APPEND | ZCL_SKYLINT_PREF_INSERT | #EC PREF_INSERT | ⚡ Ready |
| Use Predicate Naming for Boolean Methods (is_, has_, can_) | ZCL_SKYLINT_PREF_PRED_NAME | #EC PREF_PRED_NAME | - |
| Verify sy-subrc Promptly After Data Retrieval and Search | ZCL_SKYLINT_PREF_CHECK_SUBRC | #EC PREF_CHECK_SUBRC | - |
| Prefer Built-in String Functions over SEARCH/SHIFT | ZCL_SKYLINT_PREF_STR_FUNC | #EC PREF_STR_FUNC | ⚡ Ready |
| Prefer Calculation Assignment Operators (+=, -=, *=) | ZCL_SKYLINT_PREF_CALC_OP | #EC PREF_CALC_OP | ⚡ Ready |
| Prefer Early Return to Reduce Nesting (Guard Clauses) | ZCL_SKYLINT_PREF_EARLY_RET | #EC PREF_GUARD_METHOD | - |
| Prefer CASE over Multiple IF / ELSEIF on the Same Variable | ZCL_SKYLINT_PREF_CASE | #EC PREF_CASE | - |
| Prefer Modern Inline Declarations in ABAP 7.40+ | ZCL_SKYLINT_PREF_INLINE | #EC PREF_INLINE | - |
| Prefer FINAL( ) over DATA( ) when the variable is never written again | ZCL_SKYLINT_PREF_FINAL_DATA | #EC PREF_FINAL_DATA | ⚡ Ready |
| Use a message class (SE91) instead of inline message text | ZCL_SKYLINT_PREF_MSG_CLS | #EC PREF_MSG_CLS | - |
| Declare Constructor in PUBLIC SECTION | ZCL_SKYLINT_PREF_PUB_CTOR | #EC PREF_PUB_CTOR | - |
| Routine Declaration Hygiene (Top Placement & Order) | ZCL_SKYLINT_PREF_DECLARATIONS | #EC DEF_TOP | - |
| Prefer IS [NOT] INITIAL over lines( ) or Literal Comparisons | ZCL_SKYLINT_PREF_IS_INITIAL | #EC PREF_IS_INITIAL | ⚡ Ready |
| Modernize Downcasting (CAST #( ) Expression & Inlining) | ZCL_SKYLINT_PREF_DOWNCAST | #EC PREF_CAST | ⚡ Ready |
| Enforce Local Variable and Field-Symbol Naming Conventions | ZCL_SKYLINT_PREF_NAMING_VARS | #EC PREF_NAMING_VARS | - |
| Enforce Class Attribute and Method Parameter Naming Conventions | ZCL_SKYLINT_PREF_NAME_MEMBERS | #EC PREF_NAME_MEMBERS | - |
| Enforce Class, Interface, Type and Object Naming Conventions | ZCL_SKYLINT_PREF_NAME_OBJECTS | #EC PREF_NAME_OBJECTS | - |
| Statement Indentation Must Match Block Nesting | ZCL_SKYLINT_NO_BAD_INDENT | #EC NO_BAD_INDENT | ⚡ Ready |
| Prefer an Explicit JOIN Type | ZCL_SKYLINT_PREF_JOIN_TYPE | #EC PREF_JOIN_TYPE | ⚡ Ready |
| Prefer TYPE STANDARD TABLE OF over TYPE TABLE OF | ZCL_SKYLINT_PREF_STD_TABLE | #EC PREF_STD_TABLE | ⚡ Ready |
| Prefer IS SUPPLIED over IS REQUESTED | ZCL_SKYLINT_PREF_IS_SUPPLIED | #EC PREF_IS_SUPPLIED | ⚡ Ready |
| Prefer the Short System Field Alias SY over SYST | ZCL_SKYLINT_PREF_SY | #EC PREF_SY | ⚡ Ready |
| Prefer FILTER for a Simple LOOP with IF and APPEND | ZCL_SKYLINT_PREF_FILTER | #EC PREF_FILTER | - |
| Avoid Negated IF Conditions with ELSE | ZCL_SKYLINT_NO_NEG_COND | #EC NO_NEG_COND | - |
| Prefer Composition over Inheritance | ZCL_SKYLINT_PREF_COMPOSITION | #EC PREF_COMPOSITION | - |
| Prefer Interface Segregation (Small, Focused Interfaces) | ZCL_SKYLINT_PREF_INTF_SEGREG | #EC PREF_INTF_SEGREG | - |
| Avoid Single-Letter Variable Names | ZCL_SKYLINT_NO_SINGLE_LETTER | #EC NO_SINGLE_LETTER | - |
| Prefer CREATE_* Prefix for Factory Methods Returning Own Class | ZCL_SKYLINT_PREF_FACTORY_NAME | #EC PREF_FACTORY_NAME | - |
| Avoid Hungarian Notation and Type Prefixes | ZCL_SKYLINT_NO_HUNGARIAN | #EC NO_HUNGARIAN | - |
| Avoid IS INSTANCE OF and CASE TYPE OF Type Tests | ZCL_SKYLINT_NO_INSTANCE_OF | #EC NO_INSTANCE_OF | - |