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.
