SAP ABAP Cleaner

SAP ABAP Cleaner

Guida SAP ABAP Cleaner

Come automatizzare il Clean Code ABAP con lo strumento ufficiale open source SAP

ABAP Cleaner è lo strumento open source di SAP che applica in automatico oltre 100 regole di pulizia al codice ABAP, allineandolo alla Clean ABAP Styleguide con un solo tasto. In questa guida vediamo cos’è, quando nasce, quando conviene usarlo, come si installa (plug-in ADT, estensione VS Code, versione standalone), come si configura e quali sono le best practice, gli errori più comuni e le opinioni della community di sviluppatori ABAP.

Indice dei contenutiSAP ABAP Cleaner

1. Cos’è ABAP Cleaner e quando nasce

2. A cosa serve e quando (non) usarlo

3. Come si integra con la Clean ABAP Styleguide

4. Requisiti hardware e software

5. Installazione passo dopo passo (tre metodi)

6. Configurazione: profili e regole di pulizia

7. Come si usa: cleanup automatico, interattivo e anteprima

8. Esempio pratico 1: pulizia di un metodo legacy in ADT

9. Esempio pratico 2: creare un profilo di team condiviso

10. Le principali best practice di ABAP Cleaner

11. Gli errori più comuni da evitare

12. Cosa dice la SAP Community: le opinioni degli sviluppatori

13. Conclusioni e formazione professionale

1. Cos’è ABAP Cleaner e quando nasce

ABAP Cleaner è uno strumento configurabile con l’ambizione di automatizzare tutto ciò che può essere automatizzato rispetto allo stile del codice ABAP. È stato creato da Jörg-Michael Grassau in SAP, inizialmente come progetto InnerSource interno, e reso pubblico come open source su GitHub nell’aprile 2023, sotto licenza Apache-2.0.

Il progetto è ospitato su github.com/SAP/abap-cleaner ed è in sviluppo continuo: alla data di questa guida la versione più recente è la v1.28.5 (rilasciata il 9 luglio 2026), preceduta da oltre 50 release successive al lancio iniziale. Lo strumento applica oggi più di 100 regole di pulizia, con centinaia di opzioni di configurazione, ed è in grado di ripulire circa 1 MB di codice al secondo.

ABAP Cleaner nasce per colmare un vuoto preciso: esistono da anni linee guida su come dovrebbe apparire un codice ABAP pulito (la Clean ABAP Styleguide, le Clean Code Checks del progetto Code Pal for ABAP, le convenzioni interne dei singoli team), ma queste guideline lasciano interamente allo sviluppatore il compito di scrivere codice pulito o di ripulire quello esistente. ABAP Cleaner automatizza gran parte di questo lavoro, lasciando comunque pieno controllo su quali regole applicare e come.

2. A cosa serve e quando (non) usarlo

I motivi principali per adottare ABAP Cleaner nel proprio flusso di sviluppo sono:

  • Automazione: elimina il lavoro manuale e ripetitivo di formattazione e allineamento del codice.
  • Uniformità: garantisce uno stile coerente su tutta la codebase, a prescindere da chi scrive.
  • Riduzione degli errori: un codice chiaro e ben strutturato è meno soggetto a bug ed è più facile da revisionare.
  • Modernizzazione: incoraggia l’uso di costrutti ABAP moderni, utile in ottica di migrazione verso S/4HANA o il Cloud.
  • Collective code ownership: facilita la lettura del codice da parte di più sviluppatori, riducendo l’effetto “stile personale”.
  • Manutenibilità: rende più semplice aggiungere funzionalità o applicare modifiche senza introdurre regressioni.

ABAP Cleaner può essere usato sia su codice nuovo che su codice esistente, sia su codice di produzione che su codice di test, con un approccio “a banda larga” (tutte le regole insieme) o mirato (una selezione ridotta). È pensato soprattutto per ABAP Object-Oriented, ma funziona anche su report e function module classici.

Quando invece è preferibile non affidarsi (o non affidarsi ciecamente) allo strumento: sulle istruzioni EML, che al momento non sono supportate e vengono lasciate invariate; su porzioni di codice legacy molto delicate, dove è indispensabile una batteria di test di regressione prima di applicare un cleanup massivo; e per tutto ciò che riguarda il refactoring semantico (nomi delle variabili, modularizzazione, testabilità), che resta e resterà un compito dello sviluppatore: uno strumento automatico non sostituisce il pensiero critico su questi aspetti.

3. Come si integra con la Clean ABAP Styleguide

La Clean ABAP Styleguide (github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md) è il documento di riferimento ufficiale SAP sulle regole di scrittura di codice ABAP pulito: convenzioni di naming, dimensione dei metodi, gestione degli errori, uso dei commenti, evitare output parameter, ridurre la profondità di annidamento e molto altro. È una guida pensata per essere applicata dallo sviluppatore, non un tool eseguibile.

ABAP Cleaner traduce in automazione concreta una parte significativa di queste regole. Non a caso viene installato con due profili preconfigurati:

  • Profilo “default”: attiva la maggior parte delle regole disponibili, con impostazioni che il team di ABAP Cleaner ritiene allineate alla Clean ABAP Styleguide e che in alcuni casi vanno oltre le sue richieste minime.
  • Profilo “essential”: attiva solo le regole esplicitamente richieste dalla Clean ABAP Styleguide, corrispondenti a circa il 40% delle regole totali disponibili.

Oltre ai due profili di base è possibile creare profili personalizzati, selezionando quali regole attivare e configurandone soglie e opzioni: un intero team può così allinearsi su una configurazione comune, esportarla e condividerla come “profilo di team”. In questo modo la Styleguide smette di essere solo un documento da leggere e diventa una configurazione applicabile con un tasto.

4. Requisiti hardware e software

I requisiti cambiano leggermente in base alla modalità di utilizzo scelta:

  • Plug-in per ABAP Development Tools (ADT): un’installazione Eclipse compatibile con ADT, in una versione “estensibile” (deve essere disponibile il menu ‘Aiuto / Installa nuovo software…’).
  • Estensione per VS Code: Java 21 o versioni successive (ad esempio SapMachine o Adoptium Temurin) installato e presente nella variabile d’ambiente PATH del sistema operativo.
  • Versione standalone (Windows, macOS, Linux): stesso requisito Java 21+, da usare tipicamente insieme a SAP GUI o da riga di comando.
  • Sistemi operativi supportati: Windows, macOS e Linux per la versione standalone; Windows e macOS per il plug-in ADT.

5. Installazione passo dopo passo (tre metodi)

Metodo 1: Plug-in per ABAP Development Tools (ADT)

  • 1. Installare ABAP Development Tools seguendo il tutorial ufficiale SAP “Install ADT” (Step 1), usando un’installazione Eclipse compatibile con ADT.
  • 2. Avviare ADT, selezionare il menu ‘Aiuto / Installa nuovo software…’.
  • 3. Incollare il link https://sap.github.io/abap-cleaner/updatesite nel campo ‘Utilizza con’, premere Invio e seguire i passaggi di installazione, confermando l’installazione di ABAP Cleaner (il contenuto non è firmato digitalmente, è normale).
  • 4. Riavviare ADT: il menu ‘Codice sorgente’ mostrerà ora le voci relative ad ABAP Cleaner.

Metodo 2: Estensione per Visual Studio Code

  • 1. Dal VS Code Marketplace (consigliato): cercare “ABAP cleaner” (editore SAP OSS) oppure aprire direttamente la pagina marketplace.visualstudio.com/items?itemName=SAPOSS.abap-cleaner e cliccare su Install.
  • 2. In alternativa, scaricare il file .vsix per la propria piattaforma dagli asset dell’ultima release su GitHub (es. abapcleaner-vscode-win32.win32.x86_64.vsix) e installarlo da VS Code con il comando ‘Extensions: Install from VSIX…’.
  • 3. Verificare che Java 21+ sia installato e raggiungibile dal PATH di sistema.

Metodo 3: Versione standalone (per SAP GUI o riga di comando)

  • 1. Installare Java 21 o superiore (SapMachine o Adoptium Temurin) e verificare che il percorso di java.exe sia incluso nella variabile PATH.
  • 2. Scaricare ed estrarre l’archivio dell’ultima release da github.com/SAP/abap-cleaner/releases, scegliendo il pacchetto per il proprio sistema operativo.
  • 3. Su macOS: spostare abapcleaner.app in una cartella diversa da Downloads (es. /Applications) e rimuovere l’attributo di quarantena con il comando xattr -dr com.apple.quarantine /Applications/abapcleaner.app, altrimenti l’app non si avvia perché non è firmata.
  • 4. Avviare ABAP Cleaner: l’app può restare in ascolto sugli appunti (clipboard) e sostituire automaticamente il codice copiato da SAP GUI con la versione ripulita.

Nota: per la versione standalone non esiste ancora un meccanismo di aggiornamento automatico, quindi conviene controllare periodicamente la pagina delle release su GitHub. Il plug-in ADT e l’estensione VS Code, invece, verificano gli aggiornamenti automaticamente.

6. Configurazione: profili e regole di pulizia

La configurazione di ABAP Cleaner ruota attorno al concetto di profilo. Ogni profilo è un insieme di regole attive, con relative opzioni e soglie.

  • Creazione profili: dal pannello di configurazione è possibile creare, copiare, eliminare, importare ed esportare profili.
  • Selezione regole: per ogni regola si può scegliere se attivarla o meno e configurarne i parametri (es. lunghezza massima riga, indentazione, soglie di annidamento).
  • Team profile: un profilo condiviso può essere esportato come file e distribuito al team via repository Git, OneDrive o altro storage condiviso, così tutti applicano le stesse regole.
  • Restrizione della sintassi: è possibile limitare le regole applicate a una specifica release ABAP, utile quando il sistema target non supporta ancora certe sintassi moderne.
  • Attivazione automatica delle novità: per ogni profilo si può scegliere se attivare automaticamente le nuove regole introdotte con gli aggiornamenti, oppure gestirle manualmente.

7. Come si usa: cleanup automatico, interattivo e anteprima

Da ABAP Development Tools (ADT)

  • Pulizia automatica con un tasto: Ctrl+4 oppure menu ‘Codice sorgente / Pulisci con ABAP Cleaner automatico’.
  • Pulizia interattiva: Ctrl+Shift+4 oppure menu ‘Codice sorgente / Pulisci con Interactive ABAP Cleaner…’, che apre una UI a confronto (diff) dove si possono disattivare o annullare le singole modifiche prima di applicarle.
  • Anteprima di sola lettura: Ctrl+Shift+5, utile quando non si dispone dell’autorizzazione di sviluppo nel sistema corrente.

Da Visual Studio Code

  • Format Selection (Ctrl+4 / ⌘4): pulisce solo le righe selezionate, o il metodo corrente se non è selezionato nulla.
  • Format Document (Ctrl+5 / ⌘5): pulisce l’intero documento, utilizzabile anche con l’opzione ‘Editor: Format on Save’.
  • Format Interactively (Ctrl+Shift+4 / ⌘⇧4): apre la UI interattiva di ABAP Cleaner.
  • Show Read-Only Preview (Ctrl+Shift+5 / ⌘⇧5): mostra il risultato senza applicarlo.

Con la versione standalone e SAP GUI

Si copia il codice da SAP GUI negli appunti, si incolla in ABAP Cleaner (o si lascia che l’app osservi gli appunti e sostituisca automaticamente il contenuto), si copia il risultato ripulito e lo si incolla di nuovo in SAP GUI: in pratica un ciclo di Ctrl+C, Ctrl+V senza mai uscire dal proprio ambiente di lavoro abituale.

8. Esempio pratico 1: pulizia di un metodo legacy in ADT

Scenario: Marco, sviluppatore ABAP in un progetto di consulenza S/4HANA, deve intervenire su una classe scritta anni fa, con sintassi obsoleta e annidamenti eccessivi. Prima di modificarla, la seleziona in ADT e lancia la pulizia interattiva (Ctrl+Shift+4) con il profilo “default”.

Codice originale:

DATA lv_result TYPE i.
MOVE 10 TO lv_result.
CALL METHOD me->calculate
  EXPORTING
    iv_input  = lv_result
  RECEIVING
    rv_output = lv_result.
IF lv_result IS NOT INITIAL.
  IF lv_result > 100.
    WRITE: / ‘Valore alto’.
  ENDIF.
ENDIF.

Codice dopo la pulizia con ABAP Cleaner:

DATA(lv_result) = 10.
lv_result = calculate( lv_result ).
 
IF lv_result IS NOT INITIAL AND lv_result > 100.
  WRITE: / ‘Valore alto’.
ENDIF.

In un solo passaggio ABAP Cleaner ha sostituito MOVE con l’operatore di assegnazione, ha convertito CALL METHOD in una chiamata funzionale, ha dichiarato la variabile inline con DATA(…) e ha unito i due IF annidati in un’unica condizione. Marco rivede il diff nella UI interattiva, conferma le modifiche che condivide e prosegue il proprio intervento funzionale sul metodo, risparmiando il lavoro manuale di riformattazione.

9. Esempio pratico 2: creare un profilo di team condiviso

Scenario: il team lead di un progetto di sviluppo custom su S/4HANA vuole che tutti gli sviluppatori del team applichino le stesse regole di pulizia, per evitare che ogni commit generi differenze di formattazione non legate alla logica funzionale.

  • Il team lead parte dal profilo “essential” (quello allineato al 100% alla Clean ABAP Styleguide) e lo duplica in un nuovo profilo chiamato “Team-Progetto-XYZ”.
  • Personalizza alcune soglie (ad esempio la lunghezza massima delle righe e la profondità di annidamento consentita) in base alle convenzioni interne del progetto.
  • Esporta il profilo dal pannello di configurazione e lo carica in un repository Git condiviso con il resto del team.
  • Ogni sviluppatore importa il profilo nel proprio ambiente (ADT o VS Code) tramite la funzione di import profili.
  • Da quel momento, la pulizia automatica (Ctrl+4) applica sempre lo stesso set di regole per tutto il team, e le pull request mostrano solo differenze funzionali, non stilistiche.

10. Le principali best practice di ABAP Cleaner

  • Partire dal profilo “essential” per allinearsi rapidamente alla Clean ABAP Styleguide, poi passare al profilo “default” (o a un profilo custom) quando il team è pronto per regole più estese.
  • Applicare la pulizia sistematicamente sul codice nuovo, fin dalla prima stesura, così da non accumulare debito tecnico.
  • Sul codice legacy, procedere con cautela: usare prima l’anteprima di sola lettura o la modalità interattiva, e disporre di test di regressione (ABAP Unit) prima di applicare un cleanup massivo.
  • Integrare ABAP Cleaner nel processo di code review, magari come passo preliminare prima dell’invio a revisione, così i reviewer si concentrano sulla logica e non sullo stile.
  • In VS Code, attivare ‘Editor: Format on Save’ con Format Document per rendere la pulizia trasparente e automatica ad ogni salvataggio.
  • Definire e condividere un profilo di team, versionato insieme al codice, per garantire che tutti applichino le stesse regole.
  • Restringere la sintassi generata alla release ABAP effettivamente supportata dal sistema di destinazione, per evitare di introdurre costrutti non disponibili in produzione.
  • Tenere sotto controllo gli aggiornamenti dello strumento e le release notes, decidendo consapevolmente se attivare automaticamente le nuove regole o valutarle una per una.

11. Gli errori più comuni da evitare

  • Lanciare un cleanup massivo (profilo “default”, tutte le regole) su codice legacy critico senza prima aver verificato l’esistenza di test di regressione: il rischio è introdurre differenze funzionali inattese, anche se lo strumento è pensato per non alterare la logica.
  • Confondere la pulizia dello stile con il refactoring semantico: ABAP Cleaner non rinomina variabili in modo significativo, non spezza metodi troppo lunghi né migliora la modularizzazione; questi restano compiti dello sviluppatore.
  • Dimenticare che le istruzioni EML non sono ancora supportate: il codice che le contiene viene lasciato invariato dalla maggior parte delle regole, quindi non aspettarsi una pulizia completa su queste porzioni.
  • Non allineare i profili all’interno del team: se ogni sviluppatore usa un profilo diverso, i commit generano continue differenze di formattazione non legate al contenuto.
  • Restare fermi su SAP GUI pensando di non poter beneficiare dello strumento: la versione standalone con clipboard watch copre proprio questo scenario, anche se con meno automazione rispetto al plug-in ADT.
  • Non aggiornare Java alla versione richiesta (21 o superiore): versioni precedenti impediscono l’avvio della versione standalone o dell’estensione VS Code.
  • Su macOS, avviare l’app standalone direttamente dalla cartella Downloads senza rimuovere l’attributo di quarantena: l’app, non essendo firmata, non si avvia.

12. Cosa dice la SAP Community: le opinioni degli sviluppatori

Sul forum ufficiale SAP Community il progetto ABAP Cleaner è stato presentato fin dal 2023 come naturale evoluzione degli sforzi SAP per il Clean Code, accanto alla Clean ABAP Styleguide e al progetto Code Pal for ABAP: l’obiettivo dichiarato è lo stesso, aiutare gli sviluppatori ABAP a rispettare le regole del Clean ABAP, con la differenza che Code Pal si concentra più sui controlli statici (quick fix su codice esistente), mentre ABAP Cleaner è pensato per essere usato durante la scrittura stessa del codice, con un approccio simile a un pretty printer.

Nei blog e nelle discussioni della community, gli sviluppatori riconoscono ad ABAP Cleaner alcuni vantaggi concreti: automazione della formattazione, riduzione degli errori grazie all’aderenza alle regole di Clean ABAP, e un ruolo utile anche in ottica di modernizzazione verso S/4HANA. Diversi post segnalano inoltre l’utilità dello strumento come materiale di onboarding per sviluppatori junior, che imparano per osmosi lo stile atteso vedendo il codice trasformarsi.

Le criticità più citate riguardano invece l’adozione a livello di team: allineare tutti gli sviluppatori su un’unica configurazione non è scontato, perché ognuno porta le proprie abitudini di scrittura, e senza un profilo condiviso il rischio è che la pulizia generi differenze di stile invece di eliminarle. Viene inoltre segnalato il rischio di applicare lo strumento in modo massivo su codice legacy senza adeguata verifica, e il limite, per chi lavora esclusivamente in SAP GUI, di non poter sfruttare l’integrazione diretta con l’IDE (superabile solo con la versione standalone e il clipboard watch).

13. Conclusioni e formazione professionale

ABAP Cleaner dimostra come SAP stia investendo concretamente nell’ammodernamento degli strumenti di sviluppo ABAP, rendendo tangibile ed eseguibile un insieme di regole che fino a pochi anni fa restava affidato solo alla disciplina individuale. Per gli sviluppatori SAP ABAP che lavorano su ambienti S/4HANA, e per le aziende di consulenza SAP che devono garantire qualità e uniformità del codice su più progetti e più team, restare aggiornati su strumenti come ABAP Cleaner, ADT, la Clean ABAP Styleguide e il Code Pal for ABAP non è più facoltativo: è parte integrante della competenza tecnica richiesta dal mercato, in un ecosistema che evolve continuamente.

Innovaformazione segue costantemente gli aggiornamenti del mondo SAP e propone il Corso SAP ABAP per aziende, erogato online su richiesta con calendario da concordare in base alle esigenze del team. Il percorso copre sia i fondamenti del linguaggio ABAP sia gli strumenti moderni di sviluppo (ABAP Development Tools, Clean ABAP, ABAP Cleaner), per portare gli sviluppatori a scrivere codice allineato agli standard SAP più recenti.

Per informazioni e preventivo sul Corso SAP ABAP: info@innovaformazione.net – tel. 347 1012275 (Dario Carrassi).

Per altri articoli tecnici sul mondo SAP consigliamo di navigare sulla sezione dedicata del nostro blog QUI.

(fonte) (fonte) (fonte)

Ti potrebbe interessare

Articoli correlati