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.
Exemple :
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.
