Modularisation en ABAP : macros, sous-programmes et modules de fonctions
Lorsque vous modularisez le code source, vous placez une séquence d'instructions ABAP dans un module. Ensuite, au lieu de placer toutes les instructions dans votre programme principal, vous appelez simplement le module. Lorsque le programme est généré, le code source dans l'unité de modularisation est traité comme s'il était réellement présent physiquement dans le programme principal.
Besoin de modularisation
- Améliorer la structure du programme.
- Facile à lire le code
- Facile à maintenir le code
- Évite la redondance et favorise la réutilisation du code
Diverses techniques de modularisation
- Utilisation de macros
- Utilisation de fichiers d'inclusion
- Sous-programmes
- Modules fonctionnels
Examinons chacun d'eux en détail :
SAP-Macro ABAP
Si vous souhaitez réutiliser le même ensemble d'instructions plusieurs fois dans un programme, vous pouvez les inclure dans une macro.
Vous ne pouvez utiliser une macro qu'au sein du programme dans lequel elle est définie, et elle ne peut être appelée que dans les lignes du programme suivant sa définition.
Les macros peuvent être utiles pour les calculs longs ou les instructions WRITE complexes.
Syntaxe
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
Les macros peuvent utiliser des paramètres &N où N = 1,2,3…
Exemple:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
Sortie: 2
Inclure des programmes
Les programmes d'inclusion sont uniquement destinés à la modularisation du code source et n'ont pas d'interface de paramètres.
Les programmes d'inclusion vous permettent d'utiliser le même code source dans différents programmes. Ils peuvent être utiles si vous avez de longues déclarations de données que vous souhaitez utiliser dans différents programmes.
Syntaxe
Include <include program Name>
Note à noter
- Les programmes d'inclusion ne peuvent pas s'appeler eux-mêmes.
- Les programmes à inclure doivent contenir des instructions complètes.
Mise en situation :
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
Sous-programmes
Les sous-programmes sont des procédures que vous pouvez définir dans n'importe quel Programme ABAP et également appeler depuis n'importe quel programme. Les sous-programmes sont normalement appelés en interne, c'est-à-dire qu'ils contiennent des sections de code ou des algorithmes fréquemment utilisés localement. Si vous souhaitez qu'une fonction soit réutilisable dans tout le système, utilisez un module fonction.
Syntaxe-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= Nom du sous-programme
= Paramètres transmis
Types de sous-programmes
- Interne
- Sous-programme défini dans le même programme appelé.
- Peut accéder à tous les objets de données déclarés dans le programme principal ABAP/4.
- Externe
- Sous-programme défini en dehors du programme appelé.
- Il faut utiliser le option ou déclarer des objets de données dans les parties communes de la mémoire.
Appel d'un sous-programme
Sous-programmes internes
PERFORM <subroutine> [<pass>]
= Nom du sous-programme
= Paramètres transmis
Les données déclarées dans le programme principal sont automatiquement disponibles.
Sous-programmes externes
PERFORM <subroutine>(<Program>) [<pass>]. PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND]. PERFORM (<subroutine>) IN PROGRAM (<Program>) [<pass>] [IF FOUND]. PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].
Note à noter
- Les appels imbriqués sont autorisés dans les sous-programmes (c'est-à-dire PERFORM dans un FORM … ENDFORM ).
- Des appels récursifs sont également possibles.
- Pour définir des données locales, utilisez l'instruction DATA après FORM . Chaque fois que vous entrez dans le sous-programme, les données sont recréées (avec une valeur initiale) et libérées à la fin (de la pile).
- Pour définir les données globales utilisées dans un sous-programme, utilisez l'instruction LOCAL après FORM . Les valeurs sont enregistrées lorsque vous entrez dans le sous-programme puis relâchées à la fin (depuis la pile)
Modules fonctionnels
Les modules de fonction sont des routines ABAP/4 à usage général que tout le monde peut utiliser. En fait, il existe un grand nombre de modules de fonctions standards disponibles.
Les modules de fonctions sont organisés en groupes de fonctions : collections de fonctions logiquement liées. Un module fonction appartient toujours à un groupe de fonctions.
Syntaxe-
FUNCTION <function module> <Statements> ENDFUNCTION.
Informations importantes associées au module de fonction
- Administration
- Paramètres d'importation/modification/exportation.
- Paramètres/exceptions du tableau.
- Documentation
- Code source – L U01. est le groupe de fonctions
- Données globales – L TOP .Données globales pour le groupe de fonctions - Accessibles à travers les modules de fonction du groupe de fonctions.
- Programme principal – SAPL . Contient la liste de tous les fichiers d'inclusion pour ce groupe de fonctions
Appeler un module fonction
Pour appeler un module fonction, utilisez l'instruction CALL FUNCTION :
CALL FUNCTION <module> [EXPORTING f1 = a 1.... f n = a n] [IMPORTING f1 = a 1.... f n = a n] [CHANGING f1 = a 1.... f n = a n] [TABLES f1 = a 1.... f n = a n] [EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E] [OTHERS = ro]].
Groupes de fonctions
Les groupes de fonctions sont des conteneurs pour les modules de fonctions. En fait, il existe un grand nombre de groupes de fonctions standards.
Tous les modules fonction d'un groupe de fonctions peuvent accéder aux données globales du groupe.
Comme les programmes exécutables (type 1) et pools de modules (type M), les groupes de fonctions peuvent contenir des écrans, des écrans de sélection et des listes.
Note à noter
- Les groupes de fonctions ne peuvent pas être exécutés.
- Le nom d'un groupe de fonctions peut comporter jusqu'à 26 caractères.
- Lorsque vous créez un groupe de fonctions ou un module fonction, le programme principal et les programmes d'inclusion sont générés automatiquement.
- Les groupes de fonctions encapsulent les données.
Comment créer un groupe de fonctions
- Accédez à la transaction SE80.
- Sélectionnez Programme dans la liste déroulante.
- Écrivez le nom du groupe de fonctions que vous souhaitez créer. Généralement, les groupes de fonctions créés par l'utilisateur commencent par « Z ». par exemple - . Appuyez sur la touche Entrée.
- Notez que l'inclusion TOP est créée par défaut si l'utilisateur coche l'option de création d'une inclusion TOP.
Comment créer un module fonction
- Créez un groupe de fonctions (dites « ZCAL »).
- Créez un module fonction, définissez les attributs tels que (groupe de fonctions, application, texte court et type de processus) et enregistrez.
- Le fichier d'inclusion « LZCALU01 » aura le code source du premier module fonction.
- Inclure le fichier « LZCALTOP » contiendra des données globales.
- Programme principal "SAPLZCAL » contient
- Données globales Inclure le fichier « LZCALTOP »
- Les modules fonctionnels incluent le fichier « LZCALUXX »
- Fichiers d'inclusion définis par l'utilisateur « LZCALF.. », « LZCALO.. » et « LZCALI.. »
- Définir les paramètres d'interface et les exceptions
- Écrivez le code source
- Activer le module de fonction
- Test du module de fonction – Test unique et débogage
- Documenter et publier un module fonction
Tout dépend de la modularité dans ABAP.