ABAP-i modulariseerimine: makro-, alamprogrammi- ja funktsioonimoodul
⚡ Nutikas kokkuvõte
ABAP-i modulariseerimine paigutab lausejada korduvkasutatavasse ühikusse, mida põhiprogramm lihtsalt kutsub. See leht selgitab makrosid, kaasamisprogramme, alamprogramme, funktsioonimooduleid ja funktsioonirühmi koos süntaksi, näidete ja iga tehnika valikukriteeriumidega.
Mis on ABAP-i modulariseerimine?
Lähtekoodi modulariseerimisel paigutatakse moodulisse ABAP-lausete jada. Seejärel, selle asemel, et kõik laused põhiprogrammi paigutada, kutsutakse lihtsalt moodul välja. Programmi genereerimisel käsitletakse modulariseerimisüksuses olevat lähtekoodi nii, nagu see oleks füüsiliselt põhiprogrammis olemas.
Modulariseerimise vajadus
- Parandage programmi struktuuri.
- Lihtne koodi lugeda
- Koodi lihtne hooldada
- Väldi üleliigsust ja soodustab koodi taaskasutamist
Erinevad modulariseerimistehnikad
- Makrode kasutamine
- Kaasamisfailide kasutamine
- Alamprogrammid
- Funktsioonimoodulid
Vaatleme igaüks neist üksikasjalikumalt:
SAP- ABAP makro
Kui soovite sama lausekomplekti programmis rohkem kui korra kasutada, saate need makrosse lisada.
Makrot saab kasutada ainult selle programmi sees, milles see on defineeritud, ja seda saab kutsuda ainult programmi ridades pärast selle definitsiooni.
Makrod võivad olla kasulikud pikkade arvutuste või keerukate WRITE-lausete jaoks.
Süntaks
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
Makrod võivad kasutada parameetreid &N kus N = 1,2,3…
Näide: -
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
Väljund: 2
Makrot laiendatakse kompileerimise ajal ainult ühe programmi sees. Kui sama koodi tuleb programmide vahel jagada, kasutatakse selle asemel kaasamisprogrammi.
Kaasa programmid
Kaasa programmid on mõeldud ainult lähtekoodi modulariseerimiseks ja neil pole parameetriliidest.
Lisamisprogrammid võimaldavad teil kasutada sama lähtekoodi erinevates programmides. Need võivad olla kasulikud, kui teil on pikki andmedeklaratsioone, mida soovite kasutada erinevates programmides.
Süntaks
Include <include program Name>
Märkimist vajavad punktid
- Kaasa programmid ei saa end nimetada.
- Kaasamise programmid peavad sisaldama täielikke avaldusi.
Näide:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
Include programmid jagavad koodi, aga ei saa parameetreid vastu võtta. Alamprogrammid lisavad puuduva parameetri liidesesse.
Alamprogrammid
Alamprogrammid on protseduurid, mida saate määratleda mis tahes ABAP programm ja helistage ka mis tahes programmist. Alamprogramme kutsutakse tavaliselt sisemiselt, see tähendab, et need sisaldavad koodi või algoritmide osi, mida kasutatakse sageli kohapeal. Kui soovite, et funktsioon oleks kogu süsteemis korduvkasutatav, kasutage funktsioonimoodulit.
süntaks-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= Alamprogrammi nimi
= Parameetrid edastatakse
Alamprogrammide tüübid
- sisemine
- Väljakutsutavas samas programmis määratletud alamprogramm.
- Juurdepääs kõigile ABAP/4 põhiprogrammis deklareeritud andmeobjektidele.
- Väline
- Väljakutsutavat programmi defineeritud alamprogramm.
- Vaja kasutada suvandit või deklareerida andmeobjekte mälu ühisosades.
Alamprogrammi kutsumine
Sisemised alamprogrammid
PERFORM <subroutine> [<pass>]
= Alamprogrammi nimi
= Parameetrid edastatakse
Põhiprogrammis deklareeritud andmed on automaatselt saadaval.
Välised alamprogrammid
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>].
Märkimist vajavad punktid
- Pesastatud kõned on alamprogrammides lubatud (st PERFORM vormis FORM … ENDFORM ).
- Võimalikud on ka rekursiivsed kõned.
- Kohalike andmete määratlemiseks kasutage DATA-lauset pärast FORM . Iga kord, kui alamprogrammi sisenete, luuakse andmed uuesti (algväärtusega) ja vabastatakse lõpus (virust).
- Alamprogrammis kasutatavate globaalsete andmete määratlemiseks kasutage käsku LOCAL pärast FORM . Väärtused salvestatakse alamprogrammi sisenemisel ja seejärel vabastatakse lõpus (virust)
💡 Näpunäide: ABAP-objektides peetakse alamrutiine iganenuks. Uues arenduses tuleks klassi meetoditesse paigutada korduvkasutatav loogika ning funktsioonimooduleid kasutada siis, kui on vaja kaugjuurdepääsuga või süsteemiülest liidest.
Funktsioonimoodulid
Funktsioonimoodulid on üldotstarbelised ABAP/4 rutiinid, mida saavad kasutada kõik. Tegelikult on saadaval suur hulk standardseid funktsioonimooduleid.
Funktsioonimoodulid on jaotatud funktsioonirühmadeks: loogiliselt seotud funktsioonide kogumid. Funktsioonimoodul kuulub alati funktsioonirühma.
süntaks-
FUNCTION <function module> <Statements> ENDFUNCTION.
Oluline teave, mis on seotud funktsioonimooduliga
- haldus
- Parameetrite importimine/muutmine/eksportimine.
- Tabeli parameetrid/erandid.
- dokumentatsioon
- Lähtekood – L U01 . on funktsioonirühm
- Globaalsed andmed – L TOP .Funktsioonirühma globaalsed andmed- Juurdepääs funktsioonirühma funktsioonimoodulitele.
- Põhiprogramm - SAPL . Sisaldab kõigi selle funktsioonirühma kaasamisfailide loendit
Funktsioonimooduli kutsumine
Funktsioonimooduli kutsumiseks kasutage käsku 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]].
Iga funktsioonimoodul asub funktsioonirühma sees, seega selgitatakse järgmises osas, kuidas see konteiner töötab.
Funktsioonirühmad
Funktsioonirühmad on funktsioonimoodulite konteinerid. Tegelikult on olemas suur hulk standardseid funktsioonirühmi.
Kõik funktsioonirühma funktsioonimoodulid pääsevad juurde rühma globaalsetele andmetele.
Nagu käivitatavad programmid (tüüp 1) ja moodulibasseinid (tüüp M), võivad funktsioonirühmad sisaldada ekraane, valikukuvasid ja loendeid.
Märkimist vajavad punktid
- Funktsioonirühmi ei saa käivitada.
- Funktsioonirühma nimi võib olla kuni 26 tähemärki pikk.
- Funktsioonirühma või funktsioonimooduli loomisel genereeritakse põhiprogramm ja kaasamisprogrammid automaatselt.
- Funktsioonirühmad kapseldavad andmeid.
Kuidas luua funktsioonirühma
- Ava Tehing SE80.
- Valige rippmenüüst Programm.
- Kirjutage selle funktsioonirühma nimi, mida soovite luua. Üldiselt kasutaja loodud funktsioonirühmad algavad tähega "Z". nt - . Vajutage sisestusklahvi.
- Pange tähele, et TOP Include luuakse vaikimisi, kui kasutaja märgib TOP-i kaasamise loomise valiku.
Kuidas luua funktsioonimoodulit
- Looge funktsioonirühm (öelge "ZCAL").
- Loo funktsioonimoodul, määra atribuudid nagu (funktsioonirühm, rakendus, lühike tekst ja protsessi tüüp) ja salvesta.
- Kaasa fail "LZCALU01" sisaldab esimese funktsioonimooduli lähtekoodi.
- Kaasa fail "LZCALTOP" sisaldab globaalseid andmeid.
- Põhiprogramm "SAPLZCAL” sisaldab
- Globaalsed andmed Kaasake fail "LZCALTOP"
- Funktsioonimoodulid sisaldavad faili "LZCALUXX"
- Kasutaja määratud Kaasake failid "LZCALF..", "LZCALO.." ja "LZCALI.."
- Liidese parameetrite ja erandite määratlemine
- Kirjutage lähtekood
- Aktiveerige funktsioonimoodul
- Funktsioonimooduli testimine – üksiktest ja silumine
- Funktsioonimooduli dokumenteerimine ja vabastamine
Kuidas valida õige modulariseerimistehnika
Need neli tehnikat kattuvad, seega sõltub otsus taaskasutamise ulatusest ja sellest, kas parameetriliides on vajalik.
| Tehnika | Taaskasutuse ulatus | Parameetriliides | Parim kasutada |
|---|---|---|---|
| Makro | Üks programm pärast definitsioonirida | Positsionaalsed kohahoidjad &1 kuni &9 | Lühikesed korduvad laused, pikad arvutused, keeruline WRITE-väljund |
| Kaasa programm | Iga programm, mis nimetab kaasatava faili | mitte ükski | Jagatud andmedeklaratsioonid ja jagatud lähtekood |
| Alamprogramm (FORM) | Kohalik või väline PERFORM … IN PROGRAM abil | TABELITE KASUTAMINE, MUUTMINE | Loogikat taaskasutatakse sageli ühe programmi sees |
| Funktsioonimoodul | Kogu süsteem, sh kaugkõned | TABELITE IMPORTIMINE, EKSPORTIMINE, MUUTMINE, ERANDID | Rakenduste vahel jagatud ja funktsioonirühma kapseldatud rutiinid |
Lühireegel katab enamiku juhtumeid: kasutage makrot ühe programmi sees kiirsõnade jaoks, jagatud deklaratsioonide jaoks lisamoodulit, lokaalse loogika jaoks alamprogrammi ja funktsioonimoodulit alati, kui rutiini peab saama süsteemist kõikjalt välja kutsuda. See on kõik ABAP-i modulaarsuse seisukohast.

