What is Clean ABAP?
Clean ABAP is SAP's official style guide for writing readable, maintainable, and testable ABAP code. Inspired by Robert C. Martin's "Clean Code," it adapts these principles to the ABAP language and ecosystem.
Naming Conventions
" Bad
DATA: lv_x TYPE string.
DATA: lt_t TYPE STANDARD TABLE OF ty_s.
" Good
DATA: customer_name TYPE string.
DATA: sales_orders TYPE STANDARD TABLE OF ty_sales_order.
Key rules:
- Use descriptive names that reveal intent
- Avoid Hungarian notation (lv_, lt_, ls_) in modern ABAP
- Use snake_case for variables and methods
- Keep names pronounceable and searchable
Methods Should Do One Thing
" Bad - method does too much
METHOD process_order.
validate_order( ).
calculate_pricing( ).
update_database( ).
send_notification( ).
ENDMETHOD.
" Good - each method has single responsibility
METHOD validate_order.
check_customer_exists( ).
check_material_available( ).
check_credit_limit( ).
ENDMETHOD.
Error Handling
" Use class-based exceptions
TRY.
process_sales_order( iv_order_id ).
CATCH zcx_order_not_found INTO DATA(lx_error).
log->add_error( lx_error->get_text( ) ).
CATCH zcx_insufficient_stock.
RAISE EXCEPTION TYPE zcx_processing_error.
ENDTRY.
ABAP Unit Testing
CLASS ltcl_calculator DEFINITION FOR TESTING
RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
METHODS: test_addition FOR TESTING.
ENDCLASS.
CLASS ltcl_calculator IMPLEMENTATION.
METHOD test_addition.
DATA(lo_calc) = NEW zcl_calculator( ).
cl_abap_unit_assert=>assert_equals(
act = lo_calc->add( 2, 3 )
exp = 5 ).
ENDMETHOD.
ENDCLASS.
Resources
The full Clean ABAP guide is available on SAP's GitHub repository. It's a living document that evolves with the language.