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