Modularisering i ABAP: Makro, Subrutiner & Funktionsmoduler
När du modulariserar källkoden placerar du en sekvens av ABAP-satser i en modul. Sedan, istället för att placera alla påståenden i ditt huvudprogram, anropar du bara modulen. När programmet genereras behandlas källkoden i modulariseringsenheten som om den faktiskt fanns fysiskt i huvudprogrammet.
Behov av modularisering
- Förbättra strukturen i programmet.
- Lätt att läsa koden
- Lätt att underhålla koden
- Undvik redundans och främjar kodåteranvändning
Olika modulariseringstekniker
- Användning av makron
- Användning av include-filer
- Subrutiner
- Funktionsmoduler
Låt oss titta närmare på var och en av dem:
SAP- ABAP-makro
Om du vill återanvända samma uppsättning satser mer än en gång i ett program kan du inkludera dem i ett makro.
Du kan bara använda ett makro inom programmet där det är definierat, och det kan bara anropas på rader i programmet efter dess definition.
Makron kan vara användbara för långa beräkningar eller komplexa WRITE-satser.
syntax
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
Makron kan använda parametrar &N där N = 1,2,3...
Exempel:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
Utgång: 2
Inkludera program
Inkludera-program är endast för modularisering av källkod och har inget parametergränssnitt.
Inkludera program låter dig använda samma källkod i olika program. De kan vara användbara om du har långa datadeklarationer som du vill använda i olika program.
syntax
Include <include program Name>
Pekar på anteckning
- Inkludera-program kan inte anropa sig själva.
- Inkludera program måste innehålla fullständiga uttalanden.
Exempelvis:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
Subrutiner
Subrutiner är procedurer som du kan definiera i vilken som helst ABAP-program och även ringa från vilket program som helst. Subrutiner kallas normalt internt, det vill säga de innehåller kodavsnitt eller algoritmer som ofta används lokalt. Om du vill att en funktion ska kunna återanvändas i hela systemet, använd en funktionsmodul.
Syntax-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= Subrutinens namn
= Parametrar skickas
Typer av subrutiner
- Inre
- Subrutin definierad i samma program som anropas.
- Kan komma åt alla dataobjekt som deklareras i ABAP/4-huvudprogrammet.
- Yttre
- Subrutin definierad utanför programmet som anropas.
- Behöver använda alternativ eller deklarera dataobjekt i gemensamma delar av minnet.
Ringer en subrutin
Interna subrutiner
PERFORM <subroutine> [<pass>]
= Subrutinens namn
= Parametrar skickas
Data som deklareras i huvudprogrammet är automatiskt tillgänglig.
Externa subrutiner
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>].
Pekar på anteckning
- Kapslade samtal är tillåtna i subrutiner (dvs. UTFÖR i ett FORM ... ENDFORM ).
- Rekursiva samtal är också möjliga.
- För att definiera lokala data, använd DATA-satsen efter FORM . Varje gång du går in i subrutinen återskapas data (med ett initialt värde) och släpps i slutet (från stacken).
- För att definiera globala data som används inom en subrutin, använd LOCAL-satsen efter FORM . Värdena sparas när du går in i subrutinen och släpps sedan i slutet (från stacken)
Funktionsmoduler
Funktionsmoduler är generella ABAP/4-rutiner som alla kan använda. Faktum är att det finns ett stort antal standardfunktionsmoduler tillgängliga.
Funktionsmoduler är organiserade i funktionsgrupper: Samlingar av logiskt relaterade funktioner. En funktionsmodul tillhör alltid en funktionsgrupp.
Syntax-
FUNCTION <function module> <Statements> ENDFUNCTION.
Viktig information associerad med funktionsmodul
- Administration
- Importera/Ändra/Exportera parametrar.
- Tabellparametrar/undantag.
- Dokumentation
- Källkod – L U01 . är funktionsgruppen
- Globala data – L UPP .Globala data för funktionsgruppen- Tillgänglig över funktionsmoduler i funktionsgruppen.
- Huvudprogram – SAPL . Innehåller listan över alla inkluderade filer för den funktionsgruppen
Ring en funktionsmodul
För att anropa en funktionsmodul, använd CALL FUNCTION-satsen:
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]].
Funktionsgrupper
Funktionsgrupper är behållare för funktionsmoduler. Faktum är att det finns ett stort antal standardfunktionsgrupper.
Alla funktionsmoduler i en funktionsgrupp kan komma åt gruppens globala data.
Som körbara program (typ 1) och modulpooler (typ M), funktionsgrupper kan innehålla skärmar, urvalsskärmar och listor.
Pekar på anteckning
- Funktionsgrupper kan inte köras.
- Namnet på en funktionsgrupp kan vara upp till 26 tecken långt.
- När du skapar en funktionsgrupp eller funktionsmodul genereras huvudprogrammet och inkluderingsprogrammen automatiskt.
- Funktionsgrupper kapslar in data.
Hur man skapar en funktionsgrupp
- Gå till Transaction SE80.
- Välj Program i rullgardinsmenyn.
- Skriv namnet på den funktionsgrupp som du vill skapa. Vanligtvis börjar användargjorda funktionsgrupper med "Z". t.ex - . Tryck på Enter-tangenten.
- Observera att TOP Include skapas som standard om användaren markerar alternativet att skapa en TOP-inkludering.
Hur man skapar en funktionsmodul
- Skapa en funktionsgrupp (säg "ZCAL").
- Skapa en funktionsmodul, ställ in attribut som (Funktionsgrupp, Applikation, Kort text och Processtyp) och Spara.
- Inkludera filen "LZCALU01" kommer att ha källkoden för den första funktionsmodulen.
- Inkludera filen "LZCALTOP" kommer att ha globala data.
- Huvudprogram "SAPLZCAL” innehåller
- Globala data Inkludera filen "LZCALTOP"
- Funktionsmoduler inkluderar filen "LZCALUXX"
- Användardefinierad Inkludera filerna "LZCALF..", "LZCALO.." och "LZCALI.."
- Definiera gränssnittsparametrar och undantag
- Skriv källkoden
- Aktivera funktionsmodul
- Testa funktionsmodulen – Single Test & Debugging
- Dokumentera och släppa en funktionsmodul
Det är allt för modularitet i ABAP.