← ClaudeAtlas

abap-code-patternslisted

ABAP development patterns and best practices — BAPI/RFC, dynamic programming, Clean ABAP, DDIC design, exception handling, BAL logging, ABAP OO. Use when writing, reviewing, or refactoring ABAP code; implementing ZROUTER handlers.
williamcorrea23/sap-router-skill · ★ 0 · API & Backend · score 69
Install: claude install-skill williamcorrea23/sap-router-skill
# ABAP Code Patterns Reference for ABAP development in ZROUTER_DISPATCH and related SAP projects. Validated against Clean ABAP guidelines and abaplint rules. ## Prerequisites - SAP NetWeaver 7.40+ (inline declarations, VALUE, COND, FOR) - abaplint configured (config in `package.json` `abaplint` key, or root `abaplint.json`) - Access to SE80/ADT for object creation ## 1. BAPI/RFC Pattern ```abap " BAPI call with proper commit/rollback CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' EXPORTING headdata = ls_header IMPORTING return = ls_ret. IF ls_ret-type = 'E' OR ls_ret-type = 'A'. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. RAISE EXCEPTION TYPE cx_zrouter EXPORTING mv_text = ls_ret-message. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF. ``` ## 2. GENERATE SUBROUTINE POOL (Dynamic Eval) ```abap " Compile ABAP at runtime — lighter than INSERT REPORT + SUBMIT DATA: lt_source TYPE TABLE OF string, lv_pool TYPE string. APPEND |PROGRAM.| TO lt_source. APPEND |FORM eval CHANGING cv_result TYPE string.| TO lt_source. APPEND LINES OF lt_lines TO lt_source. APPEND |ENDFORM.| TO lt_source. GENERATE SUBROUTINE POOL lt_source NAME lv_pool MESSAGE DATA(lv_msg) LINE DATA(lv_line) WORD DATA(lv_word). IF sy-subrc <> 0. RAISE EXCEPTION TYPE cx_zrouter EXPORTING mv_text = |Syntax error line { lv_line - 2 }: { lv_msg }|. ENDIF. PERFORM ('EVAL') IN PROGRAM (lv_pool) IF FOUND CHANGING cv_result. ``` ## 3. Clean ABAP Quick Rules 1. **Field