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

  1. interni
    • Potprogram definiran u istom programu koji se poziva.
    • Može pristupiti svim podatkovnim objektima deklariranim u glavnom programu ABAP/4.
  2. 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

  1. Idi na transakciju SE80.
  2. Na padajućem izborniku odaberite Program.
  3. Napišite naziv funkcionalne grupe koju želite stvoriti. Općenito korisničke grupe funkcija počinju sa "Z". npr. – . Pritisnite tipku Enter.
  4. 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

  1. Stvorite grupu funkcija (recite "ZCAL").
  2. Stvorite funkcijski modul, postavite atribute poput (Function group, Application, Short Text i Process Type) i Spremite.
  3. Uključite datoteku "LZCALU01" imat će izvorni kod prvog funkcijskog modula.
  4. Uključi datoteku “LZCALTOP” imat će globalne podatke.
  5. 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..”
  6. Definirajte parametre sučelja i iznimke
  7. Napišite izvorni kod
  8. Aktivirajte funkcijski modul
  9. Testiranje funkcijskog modula – pojedinačni test i otklanjanje pogrešaka
  10. Dokumentiranje i puštanje funkcijskog modula

To je sve o modularnosti u ABAP-u.