Introduction
Application des techniques et concepts de base
Utilisation des classes locales
Lecture des données de la base de données
Utilisation d'objets de données structurés
Utilisation de tables internes complexes
Implémentation de mises à jour de base de données à l'aide d'objets de gestion
Description du modèle de programmation d'applications ABAP RESTful

Définition d'une classe locale

Objective

After completing this lesson, you will be able to définissez une classe locale dans une classe globale.

Classes locales

Classes locales et globales

Les classes dans ABAP peuvent être locales ou globales.

Les classes globales sont stockées de manière centralisée et sont contenues dans leur propre objet du Repository appelé pool de classes. Une classe globale peut servir de programme principal. Les classes globales peuvent également contenir une logique à réutiliser par d'autres programmes ABAP, y compris d'autres classes globales.

Les classes locales sont définies comme faisant partie d'un programme ABAP, par exemple une classe globale. Vous pouvez les utiliser uniquement dans le programme ou la classe dans laquelle ils sont définis. Les classes locales sont utiles pour les entités ou les fonctions dont vous n'avez besoin que dans un seul programme.

La syntaxe ABAP des classes locales et globales est presque identique. Dans ce cours, vous travaillerez avec des classes locales dans votre classe globale. La classe globale avec la méthode if_oo_adt_classrun~main ne servira que de type de programme principal.

Classes locales dans les classes globales

Comme illustré dans la figure ci-dessous, lorsque vous ouvrez une classe globale dans ADT, la zone activée se trouve dans l'onglet Classe globale, d'abord. Vous trouverez ici le code source de la classe globale elle-même. Pour afficher ou saisir le code source des classes locales, vous devez accéder à l'onglet Types locaux.

ADT fournit un modèle de code source pour la classe locale. Pour utiliser ce modèle, procédez comme suit :

  1. Dans l'éditeur ABAP, saisissez lcl et appuyez sur Ctrl + Espace.
  2. Dans la liste qui s'affiche, sélectionnez lcl - Local class et appuyez sur Entrée.
  3. Adaptez le nom de la nouvelle classe locale.

Pour les cours de ce cours, vous devez supprimer l'option Créer privé de l'instruction CLASS … DEFINITION.

Comment créer une classe locale dans une classe globale

attributs

Code source d'une classe dans ABAP

Dans ABAP, le code source d'une classe comporte deux parties : la définition et l'implémentation. La partie définition d'une classe est subdivisée en trois sections maximum, appelées sections de visibilité de la classe.

Définition
La partie définition d'une classe contient la définition et la déclaration de tous les éléments de la classe, c'est-à-dire les types, les constantes, les attributs et les méthodes. Elle commence par CLASS <nom_classe> DEFINITION. et se termine par ENDCLASS.
Implémentation
La partie implémentation d'une classe contient le code exécutable de la classe, à savoir l'implémentation de ses méthodes. Elle commence par CLASS <nom_classe> IMPLEMENTATION et se termine par ENDCLASS. La partie implémentation d'une classe est facultative. Elle devient obligatoire dès que la définition de classe contient des méthodes exécutables.
Sections Visibilité

Chaque section de visibilité d'une classe commence par l'une des instructions PUBLIC SECTION, PROTECTED SECTION, PRIVATE SECTION et se termine implicitement lorsque la section suivante commence. La dernière section se termine par l'instruction ENDCLASS. Toutes les déclarations d'une classe doivent se trouver dans l'une des sections. En d'autres termes : aucune déclaration n'est autorisée entre le début de la définition de classe et le début de la première section.

La section dans laquelle se trouve une déclaration définit la visibilité de l'élément déclaré de la classe.

Les trois sections de visibilité d'une classe sont facultatives ; si vous n'avez pas besoin d'une section particulière, vous n'avez pas besoin de la déclarer. Mais si une définition de classe se compose de plusieurs sections, elles doivent suivre l'ordre SECTION PUBLIQUE - SECTION PROTECTÉE - SECTION PRIVÉE.

Partie de définition d'une classe

La vidéo suivante présente les différents types de composants que vous pouvez définir dans une classe. Vous pouvez définir n'importe lequel de ces composants dans n'importe quelle section de visibilité de la classe.

Exemple : attributs de la classe de liaison aérienne

Commençons par implémenter notre modèle UML dans ABAP et commençons par les attributs de la classe de connexion. Pour déclarer un attribut, utilisez l'instruction DATA dans la section de visibilité appropriée.

L'attribut conn_counter est souligné, ce qui désigne un attribut statique. Vous déclarez des attributs statiques à l'aide de l'instruction CLASS-DATA. La syntaxe de CLASS-DATA est identique à celle de DATA.

Remarque

Nous commençons par les attributs publics à ce stade. Plus tard dans le cours, lorsque nous discuterons de l'encapsulation, nous les transformerons en attributs privés.

Définir une classe locale

Dans cet exercice, vous définissez une classe locale dans une classe globale.

Modèle :

  • Aucune

Solution :

  • /LRN/CL_S4D400_CLS_LOCAL_CLASS (classe globale)

Tâche 1: Créer une classe globale

Dans votre propre package, créez une nouvelle classe ABAP.

Étapes

  1. Créez une nouvelle classe globale qui implémente l'interface IF_OO_ADT_CLASSRUN (nom proposé : ZCL_##_LOCAL_CLASS, où ## correspond à votre numéro de groupe).

    1. Sélectionnez FichierNouvelleclasse ABAP.

    2. Saisissez le nom de votre package dans la zone Package. Dans la zone Nom, saisissez le nom ZCL_##_LOCAL_CLASS, où ## est votre numéro de groupe. Saisissez une description.

    3. Dans le cadre Interfaces, sélectionnez Ajouter.

    4. Saisissez IF_OO_ADT_CLASSRUN. Lorsque l'interface apparaît dans la liste des occurrences, double-cliquez dessus pour l'ajouter à la définition de classe.

    5. Cliquez sur Next.

    6. Sélectionnez votre ordre de transport et cliquez sur Terminer.

Tâche 2: Définir une classe locale

Définissez une classe locale lcl_connection et déclarez certains attributs publics.

Étapes

  1. Dans la classe globale, créez une nouvelle classe locale lcl_connection. Utilisez la saisie semi-automatique du code pour générer le code, mais assurez-vous de supprimer l'option create private du code généré.

    1. Passez à l'onglet Types locaux.

    2. Saisissez lcl dans l'éditeur et appuyez sur Ctrl + Espace.

    3. Double-cliquez sur lcl - class dans la fenêtre pop-up.

    4. Alors qu'il reste un cadre visible autour de lcl dans la ligne class lcl definition create private., complétez le nom de la classe à lcl_connection.

    5. Supprimer les mots create private à la fin de la ligne de code class lcl_connection definition..

  2. Dans la classe locale lcl_connection, déclarez les attributs publics suivants :

    attributs

    Nom de l'attributPérimètreType de données
    carrier_idInstance/DMO/CARRIER_ID
    ID_connexionInstance/DMO/CONNECTION_ID
    conn_counterStatiqueD
    1. Après la ligne PUBLIC SECTION. et avant la ligne PROTECTED SECTION., ajoutez le code suivant :

      Code Snippet
      123456
      DATA carrier_id TYPE /dmo/carrier_id. DATA connection_id TYPE /dmo/connection_id. CLASS-DATA conn_counter TYPE i.
  3. Activez la classe.

    Remarque

    Comme la méthode if_oo_adt_classrun~main ne contient pas encore de code exécutable, il n'y a rien à tester ou déboguer à ce stade.
    1. Appuyez sur Ctrl + F3 pour activer la classe.

    2. Comparez votre code dans l'onglet Types locaux à l'extrait suivant de la solution modèle :

      Code Snippet
      1234567891011121314151617181920212223
      *"* use this source file for the definition and implementation of *"* local helper classes, interface definitions and type *"* declarations CLASS lcl_connection DEFINITION. PUBLIC SECTION. DATA carrier_id TYPE /dmo/carrier_id. DATA connection_id TYPE /dmo/connection_id. CLASS-DATA conn_counter TYPE i. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS lcl_connection IMPLEMENTATION. ENDCLASS.