Vous êtes sur la page 1sur 9

Home (http://www.stechno.net/fr/) /  FAQ (http://www.stechno.

net/category/faq-fr/)
/  ABAP (http://www.stechno.net/category/faq-fr/abap-fr/) /  BADIS : Introduction

BADIS : Introduction
 Posted on 20 mars 2016 (http://www.stechno.net/faq-fr/abap-fr/badis-introduction-fr.html/) by  Abdel
SIDHOM (http://www.stechno.net/fr/author/abdel/)

Happy DBAs use FlashGrid
Open storage software designed for ASM and RAC clusters Go to flashgrid.io

Avant de commencer, lisez l’article ABAP Objects.

Avantages des BADIs


Les business add-ins sont une extension naturelle des techniques d’extension conventionnelles. Ils reprennent la
couche d’administration des exits client, associée à la disponibilité des diverses composantes d’extension.

L’implémentation orientée-objet fournit des opportunités nouvelles. Il est par exemple possible d’effectuer une
extension de l’objet ‘Document’. Il est également possible de fournir une nouvelle instance de l’extension pour
chaque document individuel.

Le principal avantage de ce concept est la possibilité de réutilisation. Une fois mis en oeuvre, un business add-in
peut faire l’objet d’une nouvelle implémentation.
Par ailleurs, une implémentation peut également fournir ses propres add-ins.

Composantes
Composantes

Un business add-in contient toutes les composantes d’une extension. Actuellement, chaque business add-in peut
contenir les éléments suivants :

Extensions de programme
Extensions de menu

Dans les futures versions, les autres composantes comprises dans les exits client sont également disponibles
comme composantes add-ins.

Lorsque vous dénissez un business add-in, vous pouvez créer plusieurs composantes :

Interface
Classe générée (adaptateur add-in)

La classe générée effectue les tâches suivantes :

Filtrage : lorsque vous mettez en oeuvre un business add-in dépendant d’un ltre, la classe d’adaptation
vous garantit que seules les implémentations pertinentes sont appelées
Contrôle : la classe d’adaptation appelle les implémentations actives.

Processus
Processus

Ce graphique illustre le processus suivi par un programme contenant un appel de business add-in. Non afché :
vous devez déclarer une variable de référence à l’endroit approprié.

Dans la première étape, une classe de service existante, CL_EXITHANDLER, crée une référence d’objet. La
syntaxe utilisée est étudiée plus loin. Une fois cette étape effectuée, l’extension de programme peut être utilisée.

Lorsque vous dénissez un business add-in, le système crée une classe d’adaptation qui met en oeuvre
l’interface. Lors de l’appel (2), la méthode d’interface de la classe d’adaptation est appelée. Cette classe
recherche toutes les implémentations des business add-ins et appelle les méthodes mises en oeuvre.

Ce graphique montre la syntaxe que vous utilisez pour appeler un business add-in. Les numéros encerclés
correspondent aux appels de la page précédente.
Vous devez tout d’abord dénir une variable de référence en référence à l’interface du business add-in. Le nom
de la variable de référence ne contient pas nécessairement le nom du business add-in.

Lors de la première étape (1), une référence d’objet est créée. Ceci crée une instance de la classe d’adaptation
générée, limitée aux méthodes des interfaces (distribution étroite).

Vous pouvez utiliser cette référence d’objet pour appeler les méthodes requises (2).

Définition d’un business add-in

Pour créer un BADI, utilisez le BAdI Builder (Outils -> ABAP Workbench -> Utilitaires -> Business add-ins ->
Dénition) (Transaction SE18).

Attributs

Vous devez dénir deux attributs importants pour les business add-ins :

Réutilisable
Dépendant du ltre

Si vous souhaitez que le business add-in prenne en charge plusieurs implémentations parallèles, sélectionnez
Réutilisable. La séquence de traitement des implémentations n’est pas dénie. Même si le business add-in ne
prend pas en charge plusieurs utilisations, vous pouvez toujours lui affecter plusieurs implémentations.

Si vous dénissez l’attribut dépendant du ltre pour un business add-in, vous faites dépendre les appels vers ce
business add-in de certaines conditions. Vous devez spécier le type de ltre sous forme d’un élément de
données. La table des valeurs du domaine utilisé par l’élément de données contient les valeurs valides pour
l’implémentation.
Lorsque la méthode d’extension est appelée, une valeur de ltre doit être transmise à l’interface.

Méthodes d’interface

Le système propose un nom pour l’interface et la classe générée. Vous pouvez, en principe, modier le nom de
l’interface comme vous l’entendez. Cependant, votre business add-in sera plus facile à gérer si vous retenez le
nom proposé.

Le nom de la classe générée est construit de la façon suivante :

Préxe de l’espace nom Z ou Y


CL_ (pour indiquer une classe en général)
EX_ (pour ‘exit’)
Nom du business add-in

Si vous double-cliquez sur le nom de l’interface, le système passe au Class Builder (SE24), dans lequel vous
pouvez dénir des méthodes d’interface.
Une interface BADI peut avoir plusieurs méthodes d’interface.
Vous pouvez utiliser toutes les fonctions standard du Class Builder. Vous pouvez par exemple :

dénir des méthodes d’interface


dénir des paramètres d’interface pour les méthodes
déclarer les attributs de l’interface

Si le business add-in est dépendant du ltre, vous devez dénir un paramètre d’import FLT_VAL pour chaque
méthode. Sinon, vous dénissez les paramètres d’interface dont vous avez besoin pour l’extension.

Activation de l’interface

Lorsque vous avez terminé de travailler sur votre interface, vous devez l’activer. Vous générez ainsi la classe
d’adaptation du business add-in. Cette classe est automatiquement régénérée à chaque modication de
l’interface.

Vous pouvez également générer explicitement la classe d’adaptation à tout moment, en sélectionnant Utilitaires -
> Régénérer dans l’écran initial de la transaction de gestion du business add-in.

Programme d’appel

Pour appeler une méthode de business add-in dans un programme applicatif, vous devez inclure trois
instructions dans le programme :

1. Déclarez une variable de référence en référence à l’interface du business add-in (dans notre exemple,
exit_ref).
2. 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 exit_ref soient accessibles.
3. Vous pouvez maintenant appeler toutes les méthodes du business add-in. Assurez-vous de spécier
correctement les paramètres des méthodes. Si le business add-in est dépendant d’un ltre, 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.

Implémentation d’un business add-in


Convention d’appellation

BADI : ‘BADI’
Interface : IF_EX_’BADI’
Méthodes : Choix libre
Classe générée du BADI (non modiable) : CL_EX_’BADI’
Nom d’implémentation : Z’libre’
Classe d’implémentation : ZCL_IM_’libre’

Implémentation : écran 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’afche. Entrez le nom du
business add-in. L’écran de gestion correspondant s’afche.

Vous pouvez également utiliser la transaction de dénition 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.

Méthodes
Méthodes

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éxe de l’espace nom, Y ou Z


CL_ (pour classe)
IM_ (pour implémentation)
Nom de l’implémentation

Pour mettre en oeuvre la méthode, double-cliquez sur son nom. Le système lance alors l’éditeur Class Builder.
Lorsque vous avez terminé, vous devez activer vos objets.

Méthodes privées

La classe d’implémentation vous permet de créer vos propres méthodes, que vous appelez à partir de la
méthode de l’interface.

Activation
Activation

Utilisez l’icône Activer pour activer l’implémentation d’un business add-in. Désormais, les méthodes de
l’implémentation seront exécutées en même temps que le programme appelant.

Si vous désactivez l’implémentation, les méthodes ne seront plus appelées. Toutefois, les appels correspondants
dans le programme applicatif sont toujours traités. La différence réside dans le fait que l’instance de la classe
d’adaptation ne trouvera plus d’implémentations actives. Contrairement à l’appel CALL CUSTOMER-FUNCTION,
l’appel CALL METHOD CL_EXITHANDLER=>GET_INSTANCE est toujours exécuté même s’il n’y a plus
d’implémentations.

Ce principe est également valable pour l’instruction appelant la méthode de la classe d’adaptation.
Vous pouvez uniquement activer ou désactiver une implémentation dans son système d’origine. Tout
changement autre que dans le système d’origine constitue une modication. L’activation ou la désactivation doit
être transmise aux systèmes ultérieurs.

Un business add-in ne peut avoir qu’une seule dénition, mais plusieurs implémentations peuvent exister dans le
même système.

GdPicture.NET TWAIN SDK
Acquire & upload images from TWAIN scanners using vb.net, c#, Delphi.
Go to gdpicture.com

This entry was posted in   ABAP (http://www.stechno.net/category/faq-fr/abap-fr/).


Bookmark the   permalink (http://www.stechno.net/faq-fr/abap-fr/badis-introduction-fr.html/).

 This article was helpful

  0 people found this article useful

 BADIS : Exercice (http://www.stechno.net/faq- BADIs : Méthode de recherche 


fr/abap-fr/badis-exercice-fr.html/) (http://www.stechno.net/faq-fr/abap-fr/badis-
methode-de-recherche.html/)

Abdel SIDHOM has written 38 (http://www.stechno.net/fr/author/abdel/) articles