Cet exercice va vous permettre d’avoir une vision complète sur l’utilisation des BADIs.
Avant de commencer, lisez les articles suivants :
ABAP Objects
BADIs : Introduction
L’exercice couvre volontairement les deux étapes de définition et d’implémentation du BADI sachant que l’étape de définition est réalisée par SAP.
1-Définition d’un BADI
1.1-Ecran initial
Pour créer un BAdI, utilisez le BAdI Builder (Outils -> ABAP Workbench -> Utilitaires -> Business add-ins -> Définition) (Transaction SE18).
1.2-Propriétés
Le nom de la classe d’adaptation du BADI « ZCL_EX_BADI » est généré automatiquement et ne peut être modifié.
1.3-Interface
Le nom de l’interface du BADI « ZIF_EX_BADI » est proposé automatiquement. Il peut être modifié mais il est toutefois préférable de garder la logique d’appellation proposée par SAP. Le nom proposé est construit de la façon suivante :
Préfixe de l’espace nom, Y ou Z
IF_ (pour interface)
EX_ (pour exit)
Nom du business add-in
-> Pour définir l’interface, double-cliquez sur son nom ou utilisez le Class Builder (SE24).
-> Création de la méthode d’interface « USER_EXIT »
-> Affectation des paramètres de la méthode « USER_EXIT »
1.4-Activation
2-Implémentation d’un BADI
2.1-Ecran initial
Pour l’implémentation de business add-ins, utilisez la transaction SE19 (Outils -> ABAP Workbench -> Utilitaires -> Business Add-Ins -> Implémentation).
Entrez le nom de l’implémentation et sélectionnez Créer. Une boîte de dialogue s’affiche. Entrez le nom du business add-in. L’écran de gestion correspondant s’affiche.
Vous pouvez également utiliser la transaction de définition de business add-ins pour accéder à ses implémentations. Le menu contient une entrée ‘Implémentation’, que vous pouvez utiliser pour avoir une vue d’ensemble des implémentations existantes. Vous pouvez également créer de nouvelles implémentations à ce niveau.
2.2-Classe d’implémentation
Vous pouvez affecter le nom de votre choix à la classe d’implémentation. Cependant, il est conseillé de respecter la convention d’appellation proposée. Le nom proposé est construit de la façon suivante :
Préfixe de l’espace nom, Y ou Z
CL_ (pour classe)
IM_ (pour implémentation)
Nom de l’implémentation
Dans le cas de l ‘exemple, le nom proposé pour la classe d’implémentation est « ZCL_IM_BADI »
2.3-Méthode d’interface
-> Pour mettre en oeuvre la méthode, double-cliquez sur son nom. Le système lance alors l’éditeur Class Builder (SE24). Lorsque vous avez terminé, vous devez activer vos objets.
-> Implémentation de la méthode USER_EXIT de l’interface ZIF_EX_BADI
-> Implémentation du code source de la méthode
2.4-Activation
-> Une fois l’interface implémentée, vous devez activer tous vos objets.
3-Deuxième implémentation du BADI
-> Le principal avantage des BADIs est la possibilité de réutilisation. Un business add-in peut en effet avoir plusieurs implémentations dans le même système. Dans l’exemple qui suit, nous allons implémenter une deuxième fois le business add-in ZBADI.
-> Implémentation (SE19)
-> Implémentation de la méthode USER_EXIT de l’interface ZIF_EX_BADI
4-Programme d’appel
Pour appeler une méthode de business add-in dans un programme applicatif, vous devez inclure trois instructions dans le programme :
-
Déclarez une variable de référence en référence à l’interface du business add-in (dans notre exemple, ‘ZIF’).
-
Appelez la méthode statique GET_INSTANCE de la classe de service CL_EXITHANDLER. Le système vous renvoie une instance de l’objet requis. Ceci implique une distribution étroite implicite, de façon à ce que seules les méthodes d’interface de l’objet ayant la variable de référence ‘ZIF’ soient accessibles.
-
Vous pouvez maintenant appeler toutes les méthodes du business add-in. Assurez-vous de spécifier correctement les paramètres des méthodes.
Si le business add-in est dépendant d’un filtre, vous devez transmettre une valeur appropriée pour le paramètre FLT_VAL. Si le business add-in possède plusieurs implémentations actives, ces dernières seront appelées dans l’ordre alphabétique.
Pour tester les implémentations, il suffit d’exécuter le programme ci-dessus et de double-cliquer sur une des lignes affichées.
La première implémentaion affichera le détail du vol sélectionné et la deuxième fera appraître un message d’information.