Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Apprendre à programmer avec ABAP
  3. Les classes
Extrait - Apprendre à programmer avec ABAP Les fondamentaux du développement sur SAP (avec exercices et corrigés)
Extraits du livre
Apprendre à programmer avec ABAP Les fondamentaux du développement sur SAP (avec exercices et corrigés) Revenir à la page d'achat du livre

Les classes

Introduction à l’ABAP Objet

Ce chapitre est une esquisse de la programmation orientée objet, qui est de plus en plus utilisée en ABAP. Le sujet étant très étendu et complexe, il est proposé ici d’en voir une définition globale afin de pouvoir la reconnaître dans un programme ABAP et de l’utiliser d’une manière simplifiée.

Dans le chapitre Qu’est-ce que la programmation ?, la programmation orientée objet se définissait comme un programme non pas découpé en séquences exécutées les unes à la suite des autres, mais divisé en objets communiquant entre eux.

Un objet est défini par des attributs et des méthodes. Il avait été pris comme exemple une machine à laver (représentée dans le schéma ci-dessous par OBJET1. Les caractéristiques de la machine à laver (ou attributs) pourraient être la marque et le modèle, et ses méthodes (ou traitements) seraient de laver, rincer...

images/09RI01.png

Un autre objet connaissant les caractéristiques de l’objet de la machine à laver pourrait interagir avec lui et ils communiqueraient alors entre eux à travers les différents traitements.

images/09RI02.png

Par exemple, une fois que l’identifiant de OBJET1 (la machine à laver) est connu, OBJET2 va lui envoyer un message avec un traitement...

Caractéristiques des classes

La classe est l’élément technique qui permet de créer un objet et d’en assurer le traitement grâce à des méthodes. En programmation, on appelle ceci l’encapsulation, qui est une notion phare en programmation orientée objet.

Chaque méthode possède des paramètres en entrée, ainsi qu’en sortie. Ainsi, on pourrait penser qu’une méthode dans une classe est la même chose qu’un module fonction dans un groupe de fonctions, sauf que la fonction est un traitement indépendant ne faisant pas partie d’un ensemble comme l’objet. De ce fait, le groupe de fonctions agit comme un conteneur de fonctions, au contraire de la classe.

Les deux schémas suivants aident à comprendre la différence entre le module fonction et la classe.

images/09RI03.png
images/09RI04.png

L’éditeur des classes se fait via la transaction SE24. Comme évoqué dans le chapitre Premiers pas sur SAP - Connexion et fenêtre d’accueil, il est possible d’y accéder par ces différents moyens :

  • Depuis n’importe quel écran en renseignant la transaction dans la zone de commande et en spécifiant si elle doit être exécutée dans une même session (/nSE24) ou dans une nouvelle (/oSE24).

  • À partir de la fenêtre d’accueil, dans le menu SAP par un double clic sur la ligne Class Builder (éditeur de classes) ou par un clic droit puis Exécuter : Class Builder.

    Menu SAP - Outils - ABAP Workbench - Développement - SE24 Class Builder 

images/11RI28.png

L’écran d’accueil de la gestion des classes est assez sobre avec un champ pour renseigner la classe et trois boutons pour Afficher, Modifier ou Créer.

Type d’objet - Afficher [F7]

Type d’objet - Modifier [F6]

Type d’objet - Créer [F5]

images/09RI06.png

La barre d’outils également n’a pas de grandes nouveautés avec (de gauche à droite) :

images/09RI07.png
  • Contrôler

    Type d’objet - Contrôler - Syntaxe [Ctrl][F2]

  • Activer

    Type d’objet - Activer [Ctrl][F3]

  • Tester/Exécuter

    Type d’objet - Exécuter - Dans environnement de test [F8]

  • Cas d’emploi

    Utilitaires - Cas d’emploi [Ctrl][Shift][F3]

  • Manuel en ligne

    Saut - Aide à l’application [Ctrl][F8]

  • Supprimer

    Type d’objet - Autres...

Les méthodes

Comme défini en début de chapitre, les méthodes sont des traitements membres d’une classe agissant sur un objet ou non. Dans l’onglet correspondant de l’éditeur de classe, les méthodes sont listées en suivant toujours la règle : celles en bleu viennent d’un héritage et celles en noir sont spécifiques à la classe.

Tout d’abord, la barre d’outils de cet onglet présente les options suivantes :

images/09RI28.png
  • Trois boutons Paramètre, Exceptions et Code srce dont les caractéristiques seront détaillées dans la suite de cette section.

  • Propriétés de la méthode

  • Documentation de la méthode

  • Cas d’emploi

  • Insérer une méthode

  • Supprimer une méthode

  • Couper

  • Copier

  • Coller

  • Trier l’ordre d’affichage des méthodes

  • Rechercher des noms de méthodes

  • Continuer la recherche

  • Redéfinir la méthode permet pour des sous-classes de redéfinir une méthode héritée et de l’adapter à la classe qui a hérité.

  • Supprimer la redéfinition va annuler la redéfinition de la méthode héritée.

  • Filtre permet d’afficher (case décochée) ou de masquer (case cochée) les méthodes héritées, assurant ainsi une meilleure visibilité.

Vient ensuite une liste des méthodes de la classe dont les caractéristiques principales se présentent sous cette forme :

images/09RI29.png
  • Méthode (nom de la méthode)

  • Type pouvant être :

  • Instance method (méthode d’instance) : pour ce genre de méthode, il est nécessaire de générer l’instance de la classe via l’instruction CREATE OBJECT et une variable d’objet faisant référence à cette classe.

Exemple avec la classe CL_GUI_ALV_GRID et l’appel de la méthode SET_TABLE_FOR_FIRST_DISPLAY :


DATA: o_alv TYPE REF TO cl_gui_alv_grid. 
 
CREATE OBJECT o_alv... 
 
CALL METHOD o_alv->set_table_for_first_display 
  EXPORTING  
    ...  
  CHANGING  
    ...  
  EXCEPTIONS 
    ...
 
  • Static method (méthode statique) pour ce genre de méthode...

Création d’une classe

Le but de cette partie sera simplement de créer une classe simple avec deux méthodes : une méthode CONSTRUCTOR et une méthode effectuant une sélection dans la table ZDRIVER_CAR.

 Ouvrez l’éditeur des classes via la transaction SE24.

Pour rappel, il est possible d’y accéder par ces différents moyens : depuis n’importe quel écran, en renseignant la transaction dans la zone de commande et en spécifiant si elle doit être exécutée dans une même session (/nSE24) ou dans une nouvelle (/oSE24), ou à partir de la fenêtre d’accueil, dans le menu SAP par un double clic sur la ligne Class Builder (éditeur de classe) ou par un clic droit puis Exécuter : Class Builder.

 Dans la fenêtre d’accueil de l’éditeur, renseignez le nom de la classe à créer (ZCL_DRIVER par exemple), puis cliquez sur le bouton Créer.

images/09RI43.png

 Dans la fenêtre des propriétés, renseignez une description et laissez Génér. Instance à Public, le Type de classe à Classe ABAP normale et l’option Etat final cochée (empêchant de ce fait de créer une sous-classe), puis cliquez sur Sauvegarder.

images/09RI44.png

 Dans la nouvelle fenêtre pop-up, renseignez une classe de développement ou créez-la comme objet local.

 Deux méthodes vont être créées :

images/09RI45.png

1.

CONSTRUCTOR

  • Type : Instance Method

  • Visibilité : Public

  • Description : Constructeur

  • Paramètre :

    • Nom : IV_DRIVER_ID

    • Passage par val. et facultatif non cochés

    • Méth. catégor. : Type

    • Type...

Exercice

À l’instar de la section Création d’une classe, le but de cet exercice est de créer une classe retournant tous les livres de la table ZBOOKS selon une catégorie définie dans une méthode CONSTRUCTOR.

Le programme affichera par la suite le résultat à l’écran (colonnes TITLE, AUTHOR et YEAR_BOOK).