Modularizacija u ABAP-u: makronaredbe, potprogrami i funkcijski moduli
Kada modularizirate izvorni kod, postavljate niz ABAP izjava u modul. Zatim, umjesto da sve iskaze smjestite u svoj glavni program, samo pozivate modul. Kada se program generira, izvorni kod u jedinici modularizacije tretira se kao da je stvarno fizički prisutan u glavnom programu.
Potreba za modularizacijom
- Poboljšajte strukturu programa.
- Lako čitljiv kod
- Jednostavan za održavanje koda
- Izbjegava redundanciju i promiče ponovnu upotrebu koda
Razne tehnike modularizacije
- Upotreba makronaredbi
- Korištenje uključenih datoteka
- Potprogrami
- Funkcijski moduli
Razmotrimo svaki od njih detaljno:
SAP- Makro ABAP
Ako želite ponovno upotrijebiti isti skup izjava više od jednom u programu, možete ih uključiti u makronaredbu.
Makro možete koristiti samo unutar programa u kojem je definiran, a može se pozvati samo u linijama programa nakon njegove definicije.
Makronaredbe mogu biti korisne za duge izračune ili složene naredbe WRITE.
Sintaksa
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
Makronaredbe mogu koristiti parametre &N gdje je N = 1,2,3…
Primjer:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
Izlaz: 2
Uključi programe
Programi Include služe isključivo za modularizaciju izvornog koda i nemaju sučelje parametara.
Programi uključivanja omogućuju korištenje istog izvornog koda u različitim programima. Mogu biti korisni ako imate dugačke deklaracije podataka koje želite koristiti u različitim programima.
Sintaksa
Include <include program Name>
Bodovi na bilješku
- Programi uključivanja ne mogu sami sebe pozvati.
- Uključi programi moraju sadržavati potpune izjave.
Primjer:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
Potprogrami
Potprogrami su postupci koje možete definirati u bilo kojem ABAP program a također i poziv iz bilo kojeg programa. Potprogrami se obično pozivaju interno, to jest, sadrže dijelove koda ili algoritama koji se često koriste lokalno. Ako želite da se funkcija može ponovno koristiti u cijelom sustavu, koristite funkcijski modul.
Sintaksa-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= Naziv potprograma
= Parametri se prosljeđuju
Vrste potprograma
- interni
- Potprogram definiran u istom programu koji se poziva.
- Može pristupiti svim podatkovnim objektima deklariranim u glavnom programu ABAP/4.
- Vanjski
- Potprogram definiran izvan programa koji se poziva.
- Treba koristiti opciju ili deklarirati podatkovne objekte u zajedničkim dijelovima memorije.
Pozivanje potprograma
Unutarnje potprograme
PERFORM <subroutine> [<pass>]
= Naziv potprograma
= Parametri se prosljeđuju
Podaci deklarirani u glavnom programu automatski su dostupni.
Vanjski potprogrami
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>].
Bodovi na bilješku
- Ugniježđeni pozivi dopušteni su u potprogramima (tj. PERFORM unutar FORM … ENDFORM).
- Mogući su i rekurzivni pozivi.
- Za definiranje lokalnih podataka upotrijebite naredbu DATA nakon FORM. Svaki put kada uđete u potprogram, podaci se ponovno kreiraju (s početnom vrijednošću) i otpuštaju na kraju (iz stoga).
- Za definiranje globalnih podataka koji se koriste unutar potprograma, koristite naredbu LOCAL nakon FORM. Vrijednosti se spremaju kada uđete u potprogram, a zatim se otpuštaju na kraju (iz hrpe)
Funkcijski moduli
Funkcijski moduli su ABAP/4 rutine opće namjene koje svatko može koristiti. Zapravo, postoji velik broj dostupnih standardnih funkcijskih modula.
Funkcijski moduli su organizirani u Funkcijske grupe: Zbirke logički povezanih funkcija. Funkcijski modul uvijek pripada funkcijskoj grupi.
Sintaksa-
FUNCTION <function module> <Statements> ENDFUNCTION.
Važne informacije povezane s funkcijskim modulom
- Administracija
- Uvoz/Promjena/Izvoz parametara.
- Parametri/iznimke tablice.
- Dokumentacija
- Izvorni kod – L U01 . je Funkcijska grupa
- Globalni podaci – L TOP .Globalni podaci za funkcijsku skupinu- Dostupni preko funkcijskih modula u funkcijskoj skupini.
- Glavni program – SAPL . Sadrži popis svih uključenih datoteka za tu funkcijsku grupu
Pozovite funkcijski modul
Za poziv funkcijskog modula upotrijebite naredbu 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]].
Funkcijske skupine
Funkcijske grupe su spremnici za funkcijske module. Zapravo, postoji veliki broj standardnih funkcionalnih grupa.
Svi funkcijski moduli u funkcijskoj grupi mogu pristupiti globalnim podacima grupe.
Poput izvršnih programa (tip 1) i bazeni modula (tip M), skupine funkcija mogu sadržavati zaslone, zaslone za odabir i popise.
Bodovi na bilješku
- Grupe funkcija se ne mogu izvršiti.
- Naziv funkcionalne grupe može imati do 26 znakova.
- Kada kreirate funkcijsku grupu ili funkcijski modul, glavni program i uključeni programi generiraju se automatski.
- Funkcijske grupe enkapsuliraju podatke.
Kako stvoriti funkcionalnu grupu
- Idi na transakciju SE80.
- Na padajućem izborniku odaberite Program.
- Napišite naziv funkcionalne grupe koju želite stvoriti. Općenito korisničke grupe funkcija počinju sa "Z". npr. – . Pritisnite tipku Enter.
- Imajte na umu da se TOP uključivanje stvara prema zadanim postavkama ako korisnik označi opciju stvaranja TOP uključivanja.
Kako stvoriti funkcijski modul
- Stvorite grupu funkcija (recite "ZCAL").
- Stvorite funkcijski modul, postavite atribute poput (Function group, Application, Short Text i Process Type) i Spremite.
- Uključite datoteku "LZCALU01" imat će izvorni kod prvog funkcijskog modula.
- Uključi datoteku “LZCALTOP” imat će globalne podatke.
- Glavni program”SAPLZCAL” sadrži
- Globalni podaci Uključi datoteku “LZCALTOP”
- Funkcijski moduli uključuju datoteku "LZCALUXX"
- Korisnički definirano Uključi datoteke “LZCALF..”, “LZCALO..” i “LZCALI..”
- Definirajte parametre sučelja i iznimke
- Napišite izvorni kod
- Aktivirajte funkcijski modul
- Testiranje funkcijskog modula – pojedinačni test i otklanjanje pogrešaka
- Dokumentiranje i puštanje funkcijskog modula
To je sve o modularnosti u ABAP-u.