ABAP-modularisointi: Makro-, aliohjelma- ja funktiomoduuli
⚡ Älykäs yhteenveto
ABAP-ohjelmoinnin modularisointi sijoittaa lausekkeiden sarjan uudelleenkäytettäväksi yksiköksi, jota pääohjelma yksinkertaisesti kutsuu. Tällä sivulla selitetään makrot, include-ohjelmat, aliohjelmat, funktiomoduulit ja funktioryhmät sekä esitetään syntaksi, esimerkit ja valintakriteerit kullekin tekniikalle.

Mitä on modularisointi ABAP:ssa?
Kun modularisoit lähdekoodia, sijoitat moduuliin sarjan ABAP-lauseita. Sitten, sen sijaan, että sijoittaisit kaikki lauseet pääohjelmaasi, kutsut vain moduulia. Kun ohjelma luodaan, modularisointiyksikön lähdekoodia käsitellään ikään kuin se olisi fyysisesti läsnä pääohjelmassa.
Modularisoinnin tarve
- Paranna ohjelman rakennetta.
- Helppo lukea koodi
- Koodia on helppo ylläpitää
- Vältä redundanssia ja edistää koodin uudelleenkäyttöä
Erilaisia modulointitekniikoita
- Makron käyttö
- Sisällytätiedostojen käyttö
- Aliohjelmat
- Toimintomoduulit
Tarkastellaan jokaista niistä yksityiskohtaisesti:
SAP- ABAP-makro
Jos haluat käyttää samaa lauseketta useammin kuin kerran ohjelmassa, voit sisällyttää ne makroon.
Voit käyttää makroa vain siinä ohjelmassa, jossa se on määritelty, ja sitä voi kutsua vain sen määritelmää seuraavilla ohjelmariveillä.
Makrot voivat olla hyödyllisiä pitkissä laskutoimituksissa tai monimutkaisissa WRITE-lausekkeissa.
Syntaksi
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
Makrot voivat käyttää parametreja &N jossa N = 1,2,3…
Esimerkki: -
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
Lähtö: 2
Makroa laajennetaan käännösaikana vain yhden ohjelman sisällä. Kun sama koodi on jaettava ohjelmien välillä, käytetään sen sijaan include-ohjelmaa.
Sisällytä ohjelmat
Include Programs on tarkoitettu vain lähdekoodin modulointiin, eikä niissä ole parametriliitäntää.
Sisällytysohjelmien avulla voit käyttää samaa lähdekoodia eri ohjelmissa. Ne voivat olla hyödyllisiä, jos sinulla on pitkiä datamääritelmiä, joita haluat käyttää eri ohjelmissa.
Syntaksi
Include <include program Name>
Huomautukset
- Sisällytä-ohjelmat eivät voi kutsua itseään.
- Sisällytä-ohjelmien tulee sisältää täydelliset lausunnot.
Esimerkiksi:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
Sisällytysohjelmat jakavat koodia, mutta eivät voi vastaanottaa parametreja. Aliohjelmat lisäävät puuttuvan parametrin rajapintaan.
Aliohjelmat
Aliohjelmat ovat proseduureja, jotka voit määrittää missä tahansa ABAP ohjelma ja myös soittaa mistä tahansa ohjelmasta. Alirutiineja kutsutaan yleensä sisäisesti, eli ne sisältävät koodin osia tai algoritmeja, joita käytetään usein paikallisesti. Jos haluat, että toiminto on uudelleenkäytettävissä koko järjestelmässä, käytä toimintomoduulia.
Syntaksi-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= Aliohjelman nimi
= Parametrit välitetään
Aliohjelmien tyypit
- Sisäinen
- Samassa kutsuttavassa ohjelmassa määritetty aliohjelma.
- Voi käyttää kaikkia ABAP/4-pääohjelmassa ilmoitettuja tietoobjekteja.
- Ulkoinen
- Kutsuttavan ohjelman ulkopuolella määritetty aliohjelma.
- Tarve käyttää vaihtoehto tai ilmoittaa tietoobjekteja muistin yhteisissä osissa.
Aliohjelman kutsuminen
Sisäiset aliohjelmat
PERFORM <subroutine> [<pass>]
= Aliohjelman nimi
= Parametrit välitetään
Pääohjelmassa ilmoitetut tiedot ovat automaattisesti saatavilla.
Ulkoiset aliohjelmat
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>].
Huomautukset
- Sisäkkäiset kutsut ovat sallittuja alirutiineissa (eli PERFORM sisällä FORM … ENDFORM ).
- Myös rekursiiviset puhelut ovat mahdollisia.
- Paikallisten tietojen määrittämiseksi käytä DATA-käskyä FORM -lausekkeen jälkeen. Aina kun siirryt aliohjelmaan, tiedot luodaan uudelleen (alkuarvolla) ja vapautetaan lopussa (pinosta).
- Jos haluat määrittää aliohjelman sisällä käytettävät globaalit tiedot, käytä LOCAL-käskyä FORM:n jälkeen. Arvot tallennetaan, kun siirryt aliohjelmaan, ja vapautetaan sitten lopussa (pinosta)
💡 Vinkki: Aliohjelmia pidetään ABAP-objekteissa vanhentuneina. Uudessa kehityksessä tulisi sijoittaa uudelleenkäytettävää logiikkaa luokan metodeihin ja käyttää funktiomoduuleja, kun tarvitaan etäkäyttöistä tai koko järjestelmän kattavaa rajapintaa.
Toimintomoduulit
Toimintomoduulit ovat yleiskäyttöisiä ABAP/4-rutiineja, joita kuka tahansa voi käyttää. Itse asiassa saatavilla on suuri määrä vakiotoimintomoduuleja.
Toimintomoduulit on järjestetty toimintoryhmiin: Kokoelmia loogisesti toisiinsa liittyvistä funktioista. Toimintomoduuli kuuluu aina toimintoryhmään.
Syntaksi-
FUNCTION <function module> <Statements> ENDFUNCTION.
Toimintomoduuliin liittyviä tärkeitä tietoja
- Ylläpito
- Parametrien tuonti/muuttaminen/vieminen.
- Taulukon parametrit/poikkeukset.
- Dokumentaatio
- Lähdekoodi - L U01 . on toimintoryhmä
- Globaalit tiedot – L TOP .Toimintaryhmän globaalit tiedot- Käytettävissä toimintoryhmän toimintomoduuleissa.
- Pääohjelma - SAPL . Sisältää luettelon kaikista kyseisen toimintoryhmän sisällyttämistiedostoista
Kutsu toimintomoduuli
Kun haluat kutsua funktiomoduulia, käytä CALL FUNCTION -käskyä:
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]].
Jokainen funktiomoduuli sijaitsee funktioryhmän sisällä, joten seuraavassa osiossa selitetään, miten kyseinen säilö toimii.
Toimintoryhmät
Toimintoryhmät ovat toimintomoduuleiden säiliöitä. Itse asiassa on olemassa suuri määrä vakiotoimintoryhmiä.
Kaikki toimintoryhmän toimintomoduulit voivat käyttää ryhmän yleisiä tietoja.
Kuten suoritettavat ohjelmat (tyyppi 1) ja moduulipoolit (tyyppi M), toimintoryhmät voivat sisältää näyttöjä, valintanäyttöjä ja luetteloita.
Huomautukset
- Toimintoryhmiä ei voida suorittaa.
- Toimintoryhmän nimi voi olla enintään 26 merkkiä pitkä.
- Kun luot toimintoryhmän tai toimintomoduulin, pääohjelma ja sisällystysohjelmat luodaan automaattisesti.
- Toimintoryhmät kapseloivat tiedot.
Toimintoryhmän luominen
- Siirry Transaction SE80:een.
- Valitse avattavasta valikosta Ohjelma.
- Kirjoita sen toimintoryhmän nimi, jonka haluat luoda. Yleensä käyttäjän tekemät toimintoryhmät alkavat kirjaimella "Z". esim - . Paina Enter-näppäintä.
- Huomaa, että TOP Include luodaan oletusarvoisesti, jos käyttäjä valitsee TOP-sisällytyksen luomisvaihtoehdon.
Toimintomoduulin luominen
- Luo toimintoryhmä (sano "ZCAL").
- Luo funktiomoduuli, aseta ominaisuudet, kuten (funktioryhmä, sovellus, lyhyt teksti ja prosessityyppi) ja tallenna.
- Sisällytä tiedosto "LZCALU01" sisältää ensimmäisen toimintomoduulin lähdekoodin.
- Sisällytä tiedosto "LZCALTOP" sisältää globaaleja tietoja.
- Pääohjelma "SAPLZCAL” sisältää
- Yleistiedot Sisällytä tiedosto "LZCALTOP"
- Toimintomoduulit sisältävät tiedoston "LZCALUXX"
- Käyttäjän määrittelemä Sisällytä tiedostot "LZCALF..", "LZCALO.." ja "LZCALI.."
- Määritä liitäntäparametrit ja poikkeukset
- Kirjoita lähdekoodi
- Aktivoi toimintomoduuli
- Toimintomoduulin testaus – yksi testi ja virheenkorjaus
- Toimintomoduulin dokumentointi ja vapauttaminen
Kuinka valita oikea modularisointitekniikka
Neljä tekniikkaa ovat päällekkäisiä, joten päätös riippuu uudelleenkäytön laajuudesta ja siitä, tarvitaanko parametrirajapintaa.
| Tekniikka | Uudelleenkäytön laajuus | Parametrirajapinta | Parhaiten käytetty |
|---|---|---|---|
| Makro | Yksi ohjelma, määritysrivin jälkeen | Paikkamerkit &1 - &9 | Lyhyet toistuvat lauseet, pitkät laskutoimitukset, monimutkainen WRITE-tulostus |
| Sisällytä ohjelma | Mikä tahansa ohjelma, joka nimeää include-objektin | Ei eristetty | Jaetut datailmoitukset ja jaettu lähdekoodi |
| Aliohjelma (FORM) | Paikallinen tai ulkoinen PERFORM … IN PROGRAM -komennolla | TAULUKKOJEN KÄYTTÖ, MUUTTAMINEN | Logiikkaa käytetään usein uudelleen yhden ohjelman sisällä |
| Toimintomoduuli | Koko järjestelmä, mukaan lukien etäpuhelut | TAULUKKOJEN TUONTI, VIENTI, MUUTTAMINEN, POIKKEUKSET | Sovellusten kesken jaetut ja funktioryhmään kapseloidut rutiinit |
Lyhyt sääntö kattaa useimmat tapaukset: käytä makroa lyhenteisiin ohjelmien sisällä, include-ominaisuutta jaettuihin määrittelyihin, aliohjelmaa paikalliseen logiikkaan ja funktiomoduulia aina, kun rutiinin on oltava kutsuttavissa mistä tahansa järjestelmän osasta. Siinä kaikki ABAP:n modulaarisuuden kannalta.
