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.

  • 🧩 Keskeinen periaate: Modulaarisointiyksikkö luodaan ikään kuin sen lähdekoodi olisi fyysisesti läsnä kutsuvassa ohjelmassa, joten rakenne paranee ilman ajonaikaisia ​​kustannuksia.
  • ⚡ Makro: Määritellään DEFINE- ja END-OF-DEFINITION-metodeilla, käytettävissä vain sen määrittelevän ohjelman sisällä ja vasta määrittelyrivin jälkeen.
  • 📄 Sisällytä ohjelma: Ei sisällä parametrirajapintaa ja on olemassa ainoastaan ​​lähdekoodin, kuten pitkien datadeklaraatioiden, jakamiseen useiden ohjelmien välillä.
  • 🔁 Aliohjelma: Määritellään FORM- ja ENDFORM-komennoilla, kutsutaan PERFORM-komennolla ja soveltuu logiikan uudelleenkäyttöön paikallisesti yhden ohjelman sisällä.
  • 🧱 Toimintomoduuli: Järjestelmänlaajuinen rutiini, jossa on tyypitetty käyttöliittymä taulukkoparametrien tuontiin, vientiin, muuttamiseen ja poikkeuksiin.
  • 📦 Toimintoryhmä: Säiliö, jonka globaalia dataa jokainen sen sisällä oleva funktiomoduuli jakaa, ja joka luodaan automaattisesti sen TOP- ja UXX-includerien avulla.
  • 🧭 Valintasääntö: Valitse makro paikallista pikakirjoitusta varten, aliohjelma paikallista logiikkaa varten ja funktiomoduuli, kun rutiinin on oltava uudelleenkäytettävissä koko järjestelmässä.

Modulaarisuus ABAP:ssa

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

  1. Sisäinen
    • Samassa kutsuttavassa ohjelmassa määritetty aliohjelma.
    • Voi käyttää kaikkia ABAP/4-pääohjelmassa ilmoitettuja tietoobjekteja.
  2. 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

  1. Siirry Transaction SE80:een.
  2. Valitse avattavasta valikosta Ohjelma.
  3. 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ä.
  4. Huomaa, että TOP Include luodaan oletusarvoisesti, jos käyttäjä valitsee TOP-sisällytyksen luomisvaihtoehdon.

Toimintomoduulin luominen

  1. Luo toimintoryhmä (sano "ZCAL").
  2. Luo funktiomoduuli, aseta ominaisuudet, kuten (funktioryhmä, sovellus, lyhyt teksti ja prosessityyppi) ja tallenna.
  3. Sisällytä tiedosto "LZCALU01" sisältää ensimmäisen toimintomoduulin lähdekoodin.
  4. Sisällytä tiedosto "LZCALTOP" sisältää globaaleja tietoja.
  5. 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.."
  6. Määritä liitäntäparametrit ja poikkeukset
  7. Kirjoita lähdekoodi
  8. Aktivoi toimintomoduuli
  9. Toimintomoduulin testaus – yksi testi ja virheenkorjaus
  10. 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.

UKK

Makro laajennetaan luontivaiheessa, ja se toimii vain sen ohjelman sisällä, joka sen määrittelee. Aliohjelma on todellinen proseduuri, jolla on tyypitetty parametrirajapinta ja jota voidaan kutsua myös toisesta ohjelmasta PERFORM-komennolla.

Funktiomoduulia, jonka käsittelytyypiksi on asetettu Remote-Enabled Module, voidaan kutsua toisesta SAP järjestelmästä tai ulkoisesta sovelluksesta. Sen parametrit on välitettävä arvoittain, ja poikkeukset käsitellään järjestelmävirheinä.

Makroa ei voida askeltaa läpi debuggerissa, koska se laajennetaan ennen luomista. Siirrä logiikka aliohjelmaan tai metodiin, kun rivi riviltä tapahtuvaa debuggingia tarvitaan, ja pidä makrot rajoitettuina lyhyisiin lauseisiin.

ABAP-kehitystyökalujen tekoälykoodiassistentit voivat laatia funktiomoduulin rungon, sen parametrirajapinnan ja poikkeukset pelkän kuvauksen pohjalta. Kehittäjä tarkistaa edelleen logiikan, aktivoi moduulin ja testaa sen ennen siirtoa.

Tekoälytyökalut skannaavat ohjelman, havaitsevat toistuvat lohkot ja ehdottavat, missä aliohjelmaa, metodia tai funktiomoduulia tulisi käyttää.tracted. Ehdotus nopeuttaa refaktorointia, vaikka yksikkötestaus on edelleen välttämätöntä identtisen käyttäytymisen varmistamiseksi.

Tiivistä tämä viesti seuraavasti: