Skip to content

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 NameNative ATC ClassSuppression TagAutomated QuickFix
Check Downport Compatibility (7.40+ Modern Constructs)ZCL_SKYLINT_PREF_DOWNPORT#EC PREF_DOWNPORT-
Prefer REDUCE #( ) Expression over Simple Aggregation LOOPZCL_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/ELSEZCL_SKYLINT_PREF_COND#EC PREF_COND⚡ Ready
Prefer SWITCH #( ) Expression over CASE StatementZCL_SKYLINT_PREF_SWITCH#EC PREF_SWITCH⚡ Ready
Prefer lines( ) over DESCRIBE TABLEZCL_SKYLINT_PREF_LINES#EC PREF_LINES⚡ Ready
Prefer IS NOT over NOT ... ISZCL_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 CONCATENATEZCL_SKYLINT_PREF_STR_TMPL#EC PREF_STR_TMPL⚡ Ready
Prefer RETURN over EXIT in MethodsZCL_SKYLINT_PREF_RETURN#EC PREF_RETURN⚡ Ready
Merge Nested IF StatementsZCL_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 OBJECTZCL_SKYLINT_PREF_NEW_OP#EC PREF_NEW_OPERATOR⚡ Ready
Prefer xsdbool( ) for Boolean AssignmentsZCL_SKYLINT_PREF_XSDBOOL#EC PREF_XSDBOOL⚡ Ready
Require Fully Typed Variables and ParametersZCL_SKYLINT_PREF_FULL_TYPED#EC PREF_FULL_TYPED-
Prefer CORRESPONDING #( ) OperatorZCL_SKYLINT_PREF_CORRESP#EC PREF_CORRESP⚡ Ready
Prefer Functional RETURNING ParametersZCL_SKYLINT_PREF_RETURNING#EC PREF_RETURNING-
Prefer Class-Based Exceptions over Classic EXCEPTIONSZCL_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 APPENDZCL_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 SearchZCL_SKYLINT_PREF_CHECK_SUBRC#EC PREF_CHECK_SUBRC-
Prefer Built-in String Functions over SEARCH/SHIFTZCL_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 VariableZCL_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 againZCL_SKYLINT_PREF_FINAL_DATA#EC PREF_FINAL_DATA⚡ Ready
Use a message class (SE91) instead of inline message textZCL_SKYLINT_PREF_MSG_CLS#EC PREF_MSG_CLS-
Declare Constructor in PUBLIC SECTIONZCL_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 ComparisonsZCL_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 ConventionsZCL_SKYLINT_PREF_NAMING_VARS#EC PREF_NAMING_VARS-
Enforce Class Attribute and Method Parameter Naming ConventionsZCL_SKYLINT_PREF_NAME_MEMBERS#EC PREF_NAME_MEMBERS-
Enforce Class, Interface, Type and Object Naming ConventionsZCL_SKYLINT_PREF_NAME_OBJECTS#EC PREF_NAME_OBJECTS-
Statement Indentation Must Match Block NestingZCL_SKYLINT_NO_BAD_INDENT#EC NO_BAD_INDENT⚡ Ready
Prefer an Explicit JOIN TypeZCL_SKYLINT_PREF_JOIN_TYPE#EC PREF_JOIN_TYPE⚡ Ready
Prefer TYPE STANDARD TABLE OF over TYPE TABLE OFZCL_SKYLINT_PREF_STD_TABLE#EC PREF_STD_TABLE⚡ Ready
Prefer IS SUPPLIED over IS REQUESTEDZCL_SKYLINT_PREF_IS_SUPPLIED#EC PREF_IS_SUPPLIED⚡ Ready
Prefer the Short System Field Alias SY over SYSTZCL_SKYLINT_PREF_SY#EC PREF_SY⚡ Ready
Prefer FILTER for a Simple LOOP with IF and APPENDZCL_SKYLINT_PREF_FILTER#EC PREF_FILTER-
Avoid Negated IF Conditions with ELSEZCL_SKYLINT_NO_NEG_COND#EC NO_NEG_COND-
Prefer Composition over InheritanceZCL_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 NamesZCL_SKYLINT_NO_SINGLE_LETTER#EC NO_SINGLE_LETTER-
Prefer CREATE_* Prefix for Factory Methods Returning Own ClassZCL_SKYLINT_PREF_FACTORY_NAME#EC PREF_FACTORY_NAME-
Avoid Hungarian Notation and Type PrefixesZCL_SKYLINT_NO_HUNGARIAN#EC NO_HUNGARIAN-
Avoid IS INSTANCE OF and CASE TYPE OF Type TestsZCL_SKYLINT_NO_INSTANCE_OF#EC NO_INSTANCE_OF-

← Back to All Rules Catalog

Released under the MIT License.