ABAP modularizacija: makro, podrutina i funkcijski modul
⚡ Pametni sažetak
Modularizacija u ABAP-u smješta niz naredbi u višekratno upotrebljivu jedinicu koju glavni program jednostavno poziva. Ova stranica objašnjava makroe, programe, potprograme, funkcijske module i funkcijske grupe, sa sintaksom, primjerima i kriterijima odabira za svaku tehniku.

Što je modularizacija u ABAP-u?
Kada modularizirate izvorni kod, u modul postavljate niz ABAP naredbi. Zatim, umjesto da smjestite sve naredbe u glavni program, jednostavno pozivate modul. Kada se program generira, izvorni kod u jedinici za modularizaciju tretira se kao da je zapravo 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 redovima programa koji slijede njegovu definiciju.
Makroi mogu biti korisni za duge izračune ili složene WRITE naredbe.
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
Makro se proširuje tijekom kompajliranja samo unutar jednog programa. Kada se isti kod mora dijeliti između programa, umjesto toga se koristi program za uključivanje.
Uključi programe
Programi Include služe isključivo za modularizaciju izvornog koda i nemaju sučelje parametara.
Uključivanje programa omogućuje vam 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.
Uključeni programi dijele kod, ali ne mogu primati parametre. Potprogrami dodaju taj nedostajući parametarski interfejs.
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)
💡 Savjet: Potprogrami se smatraju zastarjelima u ABAP objektima. Novi razvojni programi trebali bi smjestiti logiku za višekratnu upotrebu u metode klase i koristiti funkcijske module kada je potrebno daljinski omogućeno ili sustavno sučelje.
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]].
Svaki funkcijski modul nalazi se unutar funkcijske grupe, pa sljedeći odjeljak objašnjava kako taj kontejner funkcionira.
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").
- Izradite funkcijski modul, postavite atribute poput (Funkcionalna grupa, Aplikacija, Kratki tekst i Vrsta procesa) i Spremi.
- 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
Kako odabrati pravu tehniku modularizacije
Četiri tehnike se preklapaju, pa odluka ovisi o opsegu ponovne upotrebe i o tome je li potrebno sučelje parametara.
| Tehnika | Opseg ponovne upotrebe | Sučelje parametara | Najbolje koristiti za |
|---|---|---|---|
| Makro | Jedan program, nakon linije definicije | Pozicijske rezervirane riječi od &1 do &9 | Kratke ponovljene naredbe, dugi izračuni, složeni WRITE izlaz |
| Uključi program | Bilo koji program koji imenuje uključene | nijedan | Deklaracije dijeljenih podataka i dijeljeni izvorni kod |
| Podprogram (FORM) | Lokalno ili vanjsko s PERFORM … IN PROGRAM | KORIŠTENJE, PROMJENA, TABLICA | Logika se često ponovno koristi unutar jednog programa |
| Funkcijski modul | Cijeli sustav, uključujući udaljene pozive | UVOZ, IZVOZ, PROMJENA, TABLICA, IZNIMKE | Rutine dijeljene između aplikacija i enkapsulirane u funkcijskoj grupi |
Kratko pravilo pokriva većinu slučajeva: koristite makro za skraćeni zapis unutar jednog programa, uključeno pravilo za zajedničke deklaracije, potprogram za lokalnu logiku i funkcijski modul kad god rutina mora biti dostupna za pozivanje s bilo kojeg mjesta u sustavu. To je sve o modularnosti u ABAP-u.
