Modulariseerimine ABAP-is: makro, alamprogrammid ja funktsioonimoodulid

Lähtekoodi modulariseerimisel paigutate moodulisse ABAP-lausete jada. Seejärel, selle asemel, et paigutada kõik laused oma põhiprogrammi, kutsute lihtsalt moodulit. Kui programm on loodud, käsitletakse modulariseerimisüksuse lähtekoodi nii, nagu see oleks tegelikult põhiprogrammis füüsiliselt 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 saate kasutada ainult selles programmis, milles see on määratletud, ja seda saab välja kutsuda ainult selle definitsioonile järgnevatel programmi ridadel.

Makrod võivad olla kasulikud pikkade arvutuste või keeruliste 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

Kaasa programmid

Kaasa programmid on mõeldud ainult lähtekoodi modulariseerimiseks ja neil pole parameetriliidest.

Programmide kaasamine võimaldab kasutada sama lähtekoodi erinevates programmides. Need võivad olla kasulikud, kui teil on pikki andmedeklaratsioone, mida soovite erinevates programmides kasutada.

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.

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

  1. sisemine
    • Väljakutsutavas samas programmis määratletud alamprogramm.
    • Juurdepääs kõigile ABAP/4 põhiprogrammis deklareeritud andmeobjektidele.
  2. 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)

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]].

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

  1. Ava Tehing SE80.
  2. Valige rippmenüüst Programm.
  3. Kirjutage selle funktsioonirühma nimi, mida soovite luua. Üldiselt kasutaja loodud funktsioonirühmad algavad tähega "Z". nt - . Vajutage sisestusklahvi.
  4. Pange tähele, et TOP Include luuakse vaikimisi, kui kasutaja märgib TOP-i kaasamise loomise valiku.

Kuidas luua funktsioonimoodulit

  1. Looge funktsioonirühm (öelge "ZCAL").
  2. Looge funktsioonimoodul, määrake atribuudid (funktsioonirühm, rakendus, lühike tekst ja protsessi tüüp) ja salvestage.
  3. Kaasa fail "LZCALU01" sisaldab esimese funktsioonimooduli lähtekoodi.
  4. Kaasa fail "LZCALTOP" sisaldab globaalseid andmeid.
  5. Põhiprogramm "SAPLZCAL” sisaldab
    • Globaalsed andmed Kaasake fail "LZCALTOP"
    • Funktsioonimoodulid sisaldavad faili "LZCALUXX"
    • Kasutaja määratud Kaasake failid "LZCALF..", "LZCALO.." ja "LZCALI.."
  6. Liidese parameetrite ja erandite määratlemine
  7. Kirjutage lähtekood
  8. Aktiveerige funktsioonimoodul
  9. Funktsioonimooduli testimine – üksiktest ja silumine
  10. Funktsioonimooduli dokumenteerimine ja vabastamine

See on kõik ABAP-i modulaarsuse jaoks.