ABAP Development Tools (ADT) dans Eclipse offrent beaucoup plus de fonctionnalités que ce qui est visible au premier abord. Avec les bons raccourcis, modèles et fonctionnalités, vous pouvez considérablement augmenter votre productivité.
Raccourcis clavier essentiels
Les raccourcis suivants doivent être connus de tout développeur ABAP :
Navigation
| Raccourci | Fonction | Description |
|---|---|---|
| Ctrl+Shift+A | Open ABAP Development Object | Recherche rapide de n’importe quel objet |
| F3 | Navigate to Definition | Aller à la définition |
| Alt+Left/Right | Back/Forward | Avant/arrière dans la navigation |
| Ctrl+O | Quick Outline | Aperçu de toutes les méthodes et attributs |
| Ctrl+T | Type Hierarchy | Afficher la hiérarchie d’héritage |
| Ctrl+Shift+G | Where-Used List | Liste d’utilisation |
| Ctrl+H | Search | Recherche globale |
| Ctrl+L | Go to Line | Aller à une ligne spécifique |
| F4 | Open Type | Ouvrir la définition de type |
Édition de code
| Raccourci | Fonction | Description |
|---|---|---|
| Ctrl+1 | Quick Fix | Correction rapide et suggestions |
| Ctrl+Space | Code Completion | Complétion de code |
| Ctrl+Shift+F | Format Source Code | Formater le code (Pretty Printer) |
| Ctrl+/ | Toggle Comment | Commenter/décommenter la ligne |
| Ctrl+D | Delete Line | Supprimer la ligne |
| Alt+Up/Down | Move Line | Déplacer la ligne |
| Ctrl+Alt+Up/Down | Duplicate Line | Dupliquer la ligne |
| Ctrl+Shift+Enter | Insert Line Above | Insérer une nouvelle ligne au-dessus |
| Shift+Enter | Insert Line Below | Insérer une nouvelle ligne en-dessous |
Refactoring
| Raccourci | Fonction | Description |
|---|---|---|
| Alt+Shift+R | Rename | Renommer l’élément |
| Alt+Shift+M | Extract Method | Extraire le code dans une méthode |
| Alt+Shift+L | Extract Local Variable | Extraire une variable locale |
| Alt+Shift+C | Change Method Signature | Modifier la signature de méthode |
| Alt+Shift+I | Inline | Mettre en ligne la variable/méthode |
Exécution et Debug
| Raccourci | Fonction | Description |
|---|---|---|
| F8 | Run | Exécuter |
| F9 | Toggle Breakpoint | Définir/supprimer un point d’arrêt |
| F5 | Step Into | Entrer dans la méthode (Debug) |
| F6 | Step Over | Passer par-dessus la méthode (Debug) |
| F7 | Step Return | Sortir de la méthode |
| Ctrl+F2 | Terminate | Terminer le débogage |
Gestion de l’éditeur
| Raccourci | Fonction | Description |
|---|---|---|
| Ctrl+E | Switch Editor | Basculer entre les éditeurs ouverts |
| Ctrl+W | Close Editor | Fermer l’éditeur |
| Ctrl+Shift+W | Close All | Fermer tous les éditeurs |
| Ctrl+M | Maximize/Restore | Maximiser/restaurer l’éditeur |
| Ctrl+F6 | Next Editor | Éditeur suivant |
| Ctrl+Shift+F6 | Previous Editor | Éditeur précédent |
Fonctionnalités cachées
ADT offre de nombreuses fonctionnalités moins connues mais très utiles :
1. Link with Editor
Synchronise le Project Explorer avec l’éditeur actuel :
┌──────────────────────────────────────────────────────────────┐│ Project Explorer │├──────────────────────────────────────────────────────────────┤│ ││ [🔗] Toggle Link with Editor ││ ↓ ││ Quand actif : lors de l'ouverture d'un fichier, celui-ci ││ est automatiquement marqué dans le Project Explorer ││ ││ Activer : Icône Toolbar ou View Menu → Link with Editor ││ │└──────────────────────────────────────────────────────────────┘2. Block Selection Mode
Permet la sélection et l’édition par colonnes :
" Normal: Sélection ligne par ligne" Block Mode (Alt+Shift+A): Sélection colonne par colonne
" Avant - Avec Block Selection éditer plusieurs lignes simultanément :DATA lv_field1 TYPE string.DATA lv_field2 TYPE string.DATA lv_field3 TYPE string.
" Marquer le bloc et modifier → toutes les lignes éditées simultanémentActivation : Alt+Shift+A ou Edit → Toggle Block Selection Mode
3. Compare With
Différents modes de comparaison pour le code :
Clic droit sur objet → Compare With :
┌─────────────────────────────────────────────────┐│ Local History... │ Versions locales antérieures ││ Revision... │ Révision spécifique ││ Latest from Server │ Version serveur actuelle ││ Active/Inactive │ Actif vs. Inactif ││ Each Other │ Comparer deux objets │└─────────────────────────────────────────────────┘4. Local History
Eclipse sauvegarde automatiquement les versions locales :
Clic droit → Compare With → Local History
┌──────────────────────────────────────────────────────────────┐│ Local History for ZCL_ORDER_SERVICE │├──────────────────────────────────────────────────────────────┤│ ││ 📅 Feb 13, 2026, 14:32:15 │ Version actuelle ││ 📅 Feb 13, 2026, 14:15:22 │ Avant refactoring ││ 📅 Feb 13, 2026, 13:45:08 │ Après extraction de méthode ││ 📅 Feb 13, 2026, 11:20:33 │ Version initiale ││ ││ [ Compare ] [ Replace ] [ Restore ] ││ │└──────────────────────────────────────────────────────────────┘Astuce : Récupérable même après suppression accidentelle !
5. Annotations
ADT affiche des annotations utiles en marge de ligne :
┌────┬──────────────────────────────────────────┐│ 42 │ METHOD process_data. │ ← Début de méthode│ 43 │ DATA lv_result TYPE string. ││ ⚡ │ SELECT SINGLE * │ ← Avertissement performance│ 45 │ FROM ztable ││ 46 │ INTO @DATA(ls_data) ││ 🔴 │ WHERE field = @iv_param. │ ← Point d'arrêt│ 48 │ ││ ⚠️ │ IF ls_data IS INITIAL. "TODO: Handle │ ← Marqueur TODO/FIXME│ 50 │ RETURN. ││ 51 │ ENDIF. ││ 52 │ ENDMETHOD. │└────┴──────────────────────────────────────────┘6. Breadcrumb Navigation
Affiche le chemin actuel dans le code :
┌──────────────────────────────────────────────────────────────┐│ ZCL_ORDER_SERVICE > PUBLIC SECTION > process_order ││ ↑ ↑ ↑ ││ Clic: Affiche Clic: Affiche Clic: Affiche ││ toutes les classes toutes sections toutes méthodes │└──────────────────────────────────────────────────────────────┘
Activer: Window → Preferences → General → Editors → Show breadcrumb7. Quick Access
Fenêtre de commande universelle :
Ctrl+3 → Ouvrir Quick Access
┌──────────────────────────────────────────────────────────────┐│ 🔍 [activate ] │├──────────────────────────────────────────────────────────────┤│ Commands ││ ▸ Activate Object (Ctrl+F3) ││ ▸ Activate All Inactive Objects ││ ││ Views ││ ▸ Activation Log ││ ││ Preferences ││ ▸ ABAP Development → Editors → Source Code → Activation │└──────────────────────────────────────────────────────────────┘Modèles de code
Les modèles de code accélèrent considérablement l’écriture de code répétitif.
Modèles intégrés
ADT contient de nombreux modèles prédéfinis. Tapez le nom du modèle et appuyez sur Ctrl+Space :
| Modèle | Sortie | Description |
|---|---|---|
method | Définition de méthode | Crée le squelette de méthode |
class | Définition de classe | Crée la structure de classe |
if | Bloc IF | Crée IF…ENDIF |
loop | LOOP AT | Crée un bloc LOOP |
select | SELECT-Statement | Crée une requête SELECT |
try | TRY…CATCH | Crée la gestion d’erreur |
data | Déclaration DATA | Crée une déclaration de variable |
const | CONSTANTS | Crée une constante |
Utilisation des modèles
" Tapez : loop + Ctrl+Space
" Le modèle est inséré :LOOP AT ${itab} INTO DATA(${wa}). ${cursor}ENDLOOP.
" ${itab}, ${wa} = Espaces réservés à remplir (naviguer avec Tab)" ${cursor} = Position finale du curseurCréer vos propres modèles
Window → Preferences → ABAP Development → Editors → Source Code → Templates
┌──────────────────────────────────────────────────────────────┐│ Templates │├──────────────────────────────────────────────────────────────┤│ ││ [New...] [Edit...] [Remove] [Import...] [Export...] ││ ││ ┌──────────────────────────────────────────────────────────┐ ││ │ Name │ Context │ Description │ ││ ├────────────────┼──────────┼──────────────────────────────┤ ││ │ logentry │ ABAP │ Application Log Entry │ ││ │ singleton │ ABAP │ Singleton Pattern │ ││ │ rapaction │ ABAP │ RAP Action Method │ ││ │ unittest │ ABAP │ Unit Test Method │ ││ └──────────────────────────────────────────────────────────┘ ││ │└──────────────────────────────────────────────────────────────┘Modèles personnalisés pratiques
Modèle RAP Action (rapaction) :
METHOD ${action_name} FOR MODIFY IMPORTING keys FOR ACTION ${entity}~${action_name}.
READ ENTITIES OF ${root_entity} IN LOCAL MODE ENTITY ${entity} ALL FIELDS WITH CORRESPONDING #( keys ) RESULT DATA(lt_entities).
LOOP AT lt_entities ASSIGNING FIELD-SYMBOL(<ls_entity>). ${cursor} ENDLOOP.
MODIFY ENTITIES OF ${root_entity} IN LOCAL MODE ENTITY ${entity} UPDATE FIELDS ( ${fields} ) WITH VALUE #( FOR ls_entity IN lt_entities ( %tky = ls_entity-%tky ${field_assignments} ) ) REPORTED DATA(lt_reported).
reported = CORRESPONDING #( DEEP lt_reported ).ENDMETHOD.Modèle Unit Test (unittest) :
METHOD ${test_name}. " Given ${given}
" When DATA(lo_cut) = NEW ${class_under_test}( ). DATA(lv_result) = lo_cut->${method_under_test}( ${parameters} ).
" Then cl_abap_unit_assert=>assert_equals( act = lv_result exp = ${expected} msg = '${message}' ).ENDMETHOD.Modèle Application Log (logentry) :
DATA(lo_log) = cl_bali_log=>create_with_header( header = cl_bali_header_setter=>create( object = '${log_object}" subobject = '${log_subobject}" )).
lo_log->add_item( item = cl_bali_message_setter=>create_from_sy( )).
cl_bali_log_db=>get_instance( )->save_log( log = lo_log ).Variables de modèle
| Variable | Description |
|---|---|
${cursor} | Position finale du curseur |
${word_selection} | Mot actuellement sélectionné |
${line_selection} | Ligne actuellement sélectionnée |
${date} | Date actuelle |
${time} | Heure actuelle |
${user} | Nom d’utilisateur |
${enclosing_method} | Nom de la méthode englobante |
${enclosing_type} | Nom de la classe englobante |
Quick Fixes et outils de refactoring
Quick Fix (Ctrl+1)
La fonction la plus puissante dans ADT. Disponible quand un problème ou une suggestion existe :
Créer une méthode manquante :
" Écrire un appel de méthode pour une méthode inexistante :DATA(lv_result) = calculate_total( lt_items ).
" Curseur sur calculate_total → Ctrl+1" → Choisir "Create method calculate_total"" → La signature de méthode est générée automatiquementDéclarer une variable manquante :
" Écrire du code avec une variable non déclarée :lv_status = 'ACTIVE'.
" Curseur sur lv_status → Ctrl+1" → Choisir "Declare local variable lv_status"" → DATA lv_status TYPE ??? est inséréAjouter un import :
" Utiliser une classe sans instruction USE :DATA(lo_client) = cl_web_http_client_manager=>create_by_http_destination( ... ).
" Ctrl+1 sur la classe" → Les imports manquants sont proposésQuick Fixes disponibles
| Situation | Option Quick Fix |
|---|---|
| Variable non définie | Declare local/instance variable |
| Méthode non définie | Create method |
| Type non défini | Create class/interface/type |
| Exception non gérée | Add CATCH block / Add to signature |
| Syntaxe obsolète | Convert to modern syntax |
| Code inaccessible | Remove unreachable code |
| Variable inutilisée | Remove unused declaration |
| ENDIF/ENDLOOP manquant | Insert missing statement |
Extract Method (Alt+Shift+M)
Extrait le code marqué dans une nouvelle méthode :
" Avant - Marquer le code :METHOD process_order. " --- Code marqué Début --- SELECT * FROM zorder_items INTO TABLE @DATA(lt_items) WHERE order_id = @iv_order_id.
DATA(lv_total) = REDUCE #( INIT sum = 0 FOR ls_item IN lt_items NEXT sum += ls_item-amount ). " --- Code marqué Fin ---
" Traitement ultérieur...ENDMETHOD.
" Alt+Shift+M → Entrer le nom de méthode : "calculate_order_total"
" Après :METHOD process_order. DATA(lv_total) = calculate_order_total( iv_order_id ). " Traitement ultérieur...ENDMETHOD.
METHOD calculate_order_total. SELECT * FROM zorder_items INTO TABLE @DATA(lt_items) WHERE order_id = @iv_order_id.
rv_total = REDUCE #( INIT sum = 0 FOR ls_item IN lt_items NEXT sum += ls_item-amount ).ENDMETHOD.Rename (Alt+Shift+R)
Renomme les éléments dans tout le projet :
┌──────────────────────────────────────────────────────────────┐│ Rename Method │├──────────────────────────────────────────────────────────────┤│ ││ Renommer la méthode 'process_order' en : ││ [process_sales_order ] ││ ││ ☑ Mettre à jour les références ││ ☑ Mettre à jour les entrées de text pool ││ ☐ Conserver la méthode originale comme wrapper obsolète ││ ││ Aperçu : ││ ┌──────────────────────────────────────────────────────────┐ ││ │ ✓ ZCL_ORDER_SERVICE - Définition de méthode │ ││ │ ✓ ZCL_ORDER_SERVICE - Implémentation de méthode │ ││ │ ✓ ZCL_ORDER_PROCESSOR - Appel de méthode (Ligne 45) │ ││ │ ✓ ZCL_TEST_ORDER - Appel de méthode test (Ligne 23) │ ││ └──────────────────────────────────────────────────────────┘ ││ ││ [ Preview > ] [ OK ] [ Cancel ] ││ │└──────────────────────────────────────────────────────────────┘Change Method Signature (Alt+Shift+C)
Modifie les paramètres et met à jour tous les appelants :
┌──────────────────────────────────────────────────────────────┐│ Change Method Signature: process_order │├──────────────────────────────────────────────────────────────┤│ ││ Paramètres : ││ ┌─────────┬──────────┬───────────────┬────────────────┐ ││ │ Type │ Nom │ Type │ Défaut │ ││ ├─────────┼──────────┼───────────────┼────────────────┤ ││ │ IMPORT │ iv_order │ zorder_id │ │ ││ │ IMPORT │ iv_mode │ string │ 'DEFAULT' │ NOUVEAU ││ │ RETURN │ rv_ok │ abap_bool │ │ ││ └─────────┴──────────┴───────────────┴────────────────┘ ││ ││ [Add] [Remove] [Move Up] [Move Down] ││ ││ ☑ Mettre à jour tous les appelants ││ │└──────────────────────────────────────────────────────────────┘Vues et perspectives utiles
Les vues les plus importantes
1. ABAP Element Info (F2)
Affiche la documentation et les détails de l’élément sous le curseur :
┌──────────────────────────────────────────────────────────────┐│ ABAP Element Info │├──────────────────────────────────────────────────────────────┤│ ││ METHOD process_order ││ ───────────────────── ││ ││ Importing: ││ IV_ORDER_ID TYPE ZORDER_ID - Identifiant de commande ││ IV_MODE TYPE STRING - Mode de traitement (optionnel) ││ ││ Returning: ││ RV_SUCCESS TYPE ABAP_BOOL - Résultat du traitement ││ ││ Exceptions: ││ ZCX_ORDER_ERROR - Si la commande ne peut être traitée ││ ││ Documentation: ││ Traite la commande donnée selon les règles métier. ││ La commande doit être dans le statut 'OPEN' ou 'PENDING'. ││ │└──────────────────────────────────────────────────────────────┘2. Transport Organizer
Gère les ordres de transport :
Window → Show View → Other → ABAP → Transport Organizer
┌──────────────────────────────────────────────────────────────┐│ Transport Organizer │├──────────────────────────────────────────────────────────────┤│ ││ 📁 Modifiable ││ └─ 📦 DEVK900123 - Feature: Traitement de commande ││ └─ 📄 ZCL_ORDER_SERVICE ││ └─ 📄 ZI_ORDER ││ └─ 📄 ZC_ORDER ││ ││ 📁 Released ││ └─ 📦 DEVK900120 - Bugfix: Null pointer ││ └─ 📦 DEVK900118 - Enhancement: Logging ││ │└──────────────────────────────────────────────────────────────┘3. ABAP Language Help (F1)
Ouvre l’aide contextuelle :
Curseur sur un mot-clé (par ex. REDUCE) → F1
→ Ouvre la documentation SAP dans le navigateur→ Syntaxe, exemples, restrictions4. Problems View
Affiche toutes les erreurs et avertissements :
Window → Show View → Problems
┌──────────────────────────────────────────────────────────────┐│ Problems │├──────────────────────────────────────────────────────────────┤│ ││ 🔴 Errors (2) ││ └─ Variable LV_RESULT not defined (ZCL_ORDER:45) ││ └─ Method GET_DATA not found (ZCL_ORDER:67) ││ ││ ⚠️ Warnings (5) ││ └─ Variable LV_TEMP declared but not used (ZCL_ORDER:23) ││ └─ Consider using inline declaration (ZCL_ORDER:34) ││ └─ SELECT without ORDER BY (ZCL_REPORT:89) ││ ││ ℹ️ Info (3) ││ └─ TODO: Implement error handling (ZCL_ORDER:102) ││ │└──────────────────────────────────────────────────────────────┘
" Double-clic → Saute à l'emplacement du problème5. ATC Results
Affiche les résultats de la vérification ABAP Test Cockpit :
Run → ABAP Test Cockpit → Check ABAP Development Object
┌──────────────────────────────────────────────────────────────┐│ ATC Results │├──────────────────────────────────────────────────────────────┤│ ││ Object: ZCL_ORDER_SERVICE ││ Check Variant: STANDARD ││ ││ 🔴 Priority 1 (Blocking) ││ └─ Injection SQL possible (Ligne 78) ││ ││ ⚠️ Priority 2 (Warning) ││ └─ Texte codé en dur trouvé, utilisez un symbole (Ligne 45) ││ └─ Méthode trop complexe (complexité cyclomatique > 10) ││ ││ ℹ️ Priority 3 (Information) ││ └─ Considérez l'utilisation de REF TO au lieu de TYPE REF TO ││ │└──────────────────────────────────────────────────────────────┘6. Outline View
Aperçu de la structure de l’objet actuel :
Window → Show View → Outline
┌──────────────────────────────────────────────────────────────┐│ Outline │├──────────────────────────────────────────────────────────────┤│ ││ 📦 ZCL_ORDER_SERVICE ││ ├─ 📂 PUBLIC SECTION ││ │ ├─ 📋 INTERFACES: if_order_service ││ │ ├─ ⚙️ METHODS ││ │ │ ├─ process_order ││ │ │ ├─ cancel_order ││ │ │ └─ get_status ││ │ └─ 📊 TYPES ││ │ └─ ty_order_status ││ │ ││ ├─ 📂 PRIVATE SECTION ││ │ ├─ 📦 DATA ││ │ │ ├─ mv_client ││ │ │ └─ mo_logger ││ │ └─ ⚙️ METHODS ││ │ ├─ validate_order ││ │ └─ calculate_total ││ │ ││ └─ 📂 IMPLEMENTATION ││ │└──────────────────────────────────────────────────────────────┘Changer de perspective
ADT offre des perspectives spécialisées pour différentes tâches :
Window → Perspective → Open Perspective → Other...
┌──────────────────────────────────────────────────────────────┐│ Open Perspective │├──────────────────────────────────────────────────────────────┤│ ││ ▸ ABAP Développement standard ││ ▸ ABAP Profiling Analyse de performance ││ ▸ Debug Session de débogage ││ ▸ ABAP Cross Trace Analyse de trace ││ ▸ Git Contrôle de version ││ │└──────────────────────────────────────────────────────────────┘Perspective ABAP Profiling :
Pour l’analyse de performance du code ABAP :
- ABAP Trace View
- SQL Trace Results
- Memory Analysis
- Runtime Analysis
Sauvegarder une disposition de vue personnalisée
1. Organiser les vues selon vos souhaits2. Window → Perspective → Save Perspective As...3. Donner un nom : "My ABAP Development"4. Accessible via Window → Perspective → Open PerspectiveAstuces avancées
Favoris et Bookmarks
Favoris (pour les objets fréquemment utilisés) :
Clic droit sur objet → Add to Favorites
Window → Show View → Favorites
┌──────────────────────────────────────────────────────────────┐│ Favorites │├──────────────────────────────────────────────────────────────┤│ ★ ZCL_ORDER_SERVICE ││ ★ ZI_ORDER_ROOT ││ ★ ZORDER_CONFIG ││ ★ SE80 (Transaction) │└──────────────────────────────────────────────────────────────┘Bookmarks (pour des emplacements de code) :
Clic droit sur numéro de ligne → Add Bookmark
Window → Show View → Bookmarks
┌──────────────────────────────────────────────────────────────┐│ Bookmarks │├──────────────────────────────────────────────────────────────┤│ 📑 TODO: Refactor this method (ZCL_ORDER:45) ││ 📑 Bug: Edge case not handled (ZCL_PROCESSOR:128) ││ 📑 Review: Performance optimization needed (ZCL_REPORT:67) │└──────────────────────────────────────────────────────────────┘Task Tags
ADT reconnaît automatiquement les tags de commentaire spéciaux :
" TODO: Implement retry logic" FIXME: This causes memory leak" XXX: Temporary workaround, remove after release" HACK: Quick fix for demo, refactor later
" Ceux-ci apparaissent automatiquement dans la vue Tasks :" Window → Show View → TasksMulti-Cursor Editing
Plusieurs curseurs simultanément pour l’édition parallèle :
Ctrl+Clic → Ajoute un curseur supplémentaireCtrl+Shift+L → Curseur à chaque ligne de la sélection
" Exemple : Renommer toutes les variablesDATA lv_var1 TYPE string. | ← Curseur 1DATA lv_var2 TYPE string. | ← Curseur 2DATA lv_var3 TYPE string. | ← Curseur 3
" Taper simultanément modifie toutes les lignesZen Mode (Mode Focus)
Maximise l’éditeur sans distractions :
Ctrl+M → Maximiser l'éditeurCtrl+M+M → Plein écran (Zen Mode)
Ou : Window → Appearance → Toggle Full ScreenPersonnaliser la coloration syntaxique
Window → Preferences → ABAP Development → Editors → Source Code → Syntax Coloring
Éléments personnalisables :- Mots-clés (DATA, IF, LOOP...)- Chaînes et littéraux- Commentaires- Méthodes et attributs- Variables locales vs. globalesBonnes pratiques
| Thème | Recommandation |
|---|---|
| Apprendre les raccourcis | Commencer avec les 10 plus importants, étendre progressivement |
| Utiliser Quick Fix | Ctrl+1 est la fonction la plus puissante - toujours vérifier en premier |
| Créer des modèles | Créer vos propres modèles pour les patterns récurrents |
| Organiser les vues | Sauvegarder votre propre disposition et l’enregistrer comme perspective |
| Définir des bookmarks | Utiliser les bookmarks pour les revues de code et TODOs |
| Local History | Vérifier avant les grands changements - bouée de sauvetage en cas d’erreur |
| ATC régulièrement | Vérifier continuellement la qualité du code avec ATC |
| Block Selection | Utiliser Alt+Shift+A pour les modifications en masse |
| Keyboard-first | Moins de souris = développement plus rapide |
| Changer de perspective | Utiliser des perspectives spécialisées pour le débogage et le profilage |
Thèmes complémentaires
- ABAP Cleaner - Nettoyage automatique du code
- CI/CD avec ABAP Cloud - Pipelines automatisés
- ABAP Unit Testing - Développement piloté par les tests