ABAP modularizáció: Makró, alprogram és függvénymodul

⚡ Okos összefoglaló

Az ABAP modularizációja utasítások sorozatát helyezi el egy újrafelhasználható egységben, amelyet a főprogram egyszerűen meghív. Ez az oldal a makrókat, a programbefoglalókat, az alprogramokat, a függvénymodulokat és a függvénycsoportokat ismerteti, szintaxissal, példákkal és kiválasztási kritériumokkal minden egyes technikához.

  • 🧩 Alapelv: Egy modularizációs egység úgy generálódik, mintha a forráskódja fizikailag jelen lenne a hívó programban, így a struktúra futásidejű költségek nélkül javul.
  • ⚡ Makró: DEFINE és END-OF-DEFINITION paraméterekkel definiálva, csak a definiáló programon belül és csak a definíciós sor után használható.
  • 📄 Program beillesztése: Nem hordoz paraméter interfészt, és kizárólag a forráskód, például a hosszú adatdeklarációk több program közötti megosztására szolgál.
  • 🔁 Alprogram: FORM és ENDFORM segítségével deklarálható, PERFORM segítségével hívható, és egy programon belül lokálisan újrafelhasznált logikára alkalmas.
  • 🧱 Funkciómodul: Egy rendszerszintű rutin típusos felülettel a táblaparaméterek importálásához, exportálásához, módosításához és kivételek kezeléséhez.
  • 📦 Funkciócsoport: Egy konténer, amelynek globális adatait minden benne lévő függvénymodul megosztja, automatikusan generálva a TOP és UXX include-okkal.
  • 🧭 Kiválasztási szabály: Válasszon makrót a lokális rövidítésekhez, alprogramot a lokális logikához, és függvénymodult, ha a rutinnak újrafelhasználhatónak kell lennie a rendszeren.

Modularizáció az ABAP-ban

Mi a modularizáció az ABAP-ban?

Amikor modularizálod a forráskódot, ABAP utasítások egy sorozatát helyezed el egy modulban. Ezután ahelyett, hogy az összes utasítást a főprogramodba helyeznéd, egyszerűen meghívod a modult. A program generálásakor a modularizációs egységben lévő forráskódot úgy kezeli a rendszer, mintha fizikailag jelen lenne a főprogramban.

Modularizálás szükségessége

  • A program szerkezetének javítása.
  • Könnyen olvasható a kód
  • Könnyen karbantartható a kód
  • Kerülje a redundanciát, és elősegíti a kód újrafelhasználását

Különféle modularizációs technikák

  • Makrók használata
  • Az include fájlok használata
  • Alprogramok
  • Funkciómodulok

Nézzük meg mindegyiket részletesen:

SAP- ABAP makró

Ha ugyanazt az utasításkészletet egynél többször szeretné használni egy programban, akkor beépítheti őket egy makróba.

Makrót csak abban a programban használhatsz, amelyben definiálva van, és csak a program definícióját követő sorokban hívhatod meg.

A makrók hasznosak lehetnek hosszú számításokhoz vagy összetett WRITE utasításokhoz.

Szintaxis

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

A makrók használhatják a paramétereket &N ahol N = 1,2,3…

Példa:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Kimenet: 2

Egy makrót fordítási időben, egyetlen programon belül lehet kibővíteni. Ha ugyanazt a kódot kell megosztani több program között, akkor egy include programot használunk.

Programok szerepeltetése

Az Include Programok kizárólag a forráskód modularizálására szolgálnak, és nincs paraméter interfészük.

Az include programok lehetővé teszik, hogy ugyanazt a forráskódot használd különböző programokban. Hasznosak lehetnek, ha hosszú adatdeklarációid vannak, amelyeket különböző programokban szeretnél használni.

Szintaxis

Include <include program Name>

Megjegyzendő pontok

  • Az Include programok nem nevezhetik magukat.
  • Az Include programoknak teljes utasításokat kell tartalmazniuk.

Példa:

INCLUDE ZILX0004.

WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM.

================================

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Az include programok megosztják a kódot, de nem tudnak paramétereket fogadni. Az alprogramok hozzáadják a hiányzó paraméterinterfészt.

Alprogramok

Az alprogramok olyan eljárások, amelyeket bármelyikben definiálhatunk ABAP program és bármilyen programból hívni is. A szubrutinokat általában belsőleg hívják, vagyis olyan kódrészleteket vagy algoritmusokat tartalmaznak, amelyeket helyileg gyakran használnak. Ha azt szeretné, hogy egy funkció újrafelhasználható legyen a rendszerben, használjon funkciómodult.

Szintaxis-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Az alprogram neve

= Paraméterek átadása folyamatban

Az alprogramok típusai

  1. belső
    • Ugyanabban a meghívott programban definiált szubrutin.
    • Hozzáférhet a fő ABAP/4 programban deklarált összes adatobjektumhoz.
  2. Külső
    • A meghívott programon kívül definiált szubrutin.
    • Használni kell a opciót vagy deklarálnak adatobjektumokat a memória közös részein.

Szubrutin hívása

Belső szubrutinok

PERFORM <subroutine> [<pass>]

= Az alprogram neve

= Paraméterek átadása folyamatban

A főprogramban deklarált adatok automatikusan elérhetők.

Külső szubrutinok

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

Megjegyzendő pontok

  • A beágyazott hívások megengedettek az alprogramokban (pl. PERFORM egy FORM … ENDFORM-on belül).
  • Rekurzív hívások is lehetségesek.
  • A helyi adatok meghatározásához használja a DATA utasítást a FORM után. Minden alkalommal, amikor belép az alprogramba, az adatok újra létrejönnek (a kezdeti értékkel), majd a végén (a veremből) kiadják.
  • Egy szubrutinban használt globális adatok meghatározásához használja a LOCAL utasítást a FORM után. Az értékek mentésre kerülnek, amikor belépsz az alprogramba, majd a végén (a veremből) felengedik.

💡 Tipp: Az alprogramok elavultnak számítanak az ABAP objektumokban. Az új fejlesztéseknek újrafelhasználható logikát kell elhelyezniük az osztályok metódusaiban, és függvénymodulokat kell használniuk, ha távoli vagy rendszerszintű interfészre van szükség.

Funkciómodulok

A funkciómodulok általános célú ABAP/4 rutinok, amelyeket bárki használhat. Valójában nagyszámú szabványos funkciómodul áll rendelkezésre.

A funkciómodulok funkciócsoportokba vannak szervezve: Logikailag kapcsolódó függvények gyűjteményei. A függvénymodul mindig egy funkciócsoporthoz tartozik.

Szintaxis-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Fontos információk A funkciómodulhoz kapcsolódóan

  • Adminisztráció
  • Paraméterek importálása/módosítása/exportálása.
  • Táblázat paraméterei/kivételek.
  • Dokumentáció
  • Forráskód – L U01 . a Funkciócsoport
  • Globális adatok – L TOP .Globális adatok a funkciócsoporthoz- A funkciócsoport funkciómoduljai között elérhető.
  • Fő program - SAPL . Az adott funkciócsoporthoz tartozó összes szerepeltető fájl listáját tartalmazza

Hívjon egy funkciómodult

Egy függvénymodul meghívásához használja a CALL FUNCTION utasítást:

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

Minden függvénymodul egy függvénycsoporton belül található, így a következő szakasz ismerteti, hogyan működik ez a konténer.

Funkciócsoportok

A funkciócsoportok a funkciómodulok tárolói. Valójában nagyszámú szabványos funkciócsoport létezik.
A funkciócsoport összes funkciómodulja hozzáférhet a csoport globális adataihoz.

Mint a végrehajtható programok (1. típusú) és modul poolok (M típus), a funkciócsoportok képernyőket, kiválasztási képernyőket és listákat tartalmazhatnak.

Megjegyzendő pontok

  • A funkciócsoportok nem hajthatók végre.
  • Egy funkciócsoport neve legfeljebb 26 karakter hosszú lehet.
  • Amikor létrehoz egy funkciócsoportot vagy funkciómodult, a főprogram és a beillesztési programok automatikusan létrejönnek.
  • A funkciócsoportok beágyazzák az adatokat.

Funkciócsoport létrehozása

  1. Ugrás a Tranzakció SE80-ra.
  2. Válassza a Program lehetőséget a legördülő menüben.
  3. Írja be a létrehozni kívánt funkciócsoport nevét. Általában a felhasználó által készített függvénycsoportok „Z”-vel kezdődnek. például - . Nyomja meg az Enter gombot.
  4. Ne feledje, hogy a TOP Include alapértelmezés szerint létrejön, ha a felhasználó bejelöli a TOP include létrehozásának lehetőségét.

Hogyan készítsünk funkciómodult

  1. Hozzon létre egy függvénycsoportot (mondjuk „ZCAL”).
  2. Hozz létre egy függvénymodult, állítsd be az attribútumokat, mint például (Függvénycsoport, Alkalmazás, Rövid szöveg és Folyamattípus), majd mentsd el.
  3. Az „LZCALU01” fájl tartalmazza az első funkciómodul forráskódját.
  4. Az Include fájl „LZCALTOP” globális adatokat tartalmaz.
  5. Fő program"SAPLZCAL” tartalmazza
    • Globális adatok Tartalmazza az „LZCALTOP” fájlt
    • A funkciómodulok közé tartozik az „LZCALUXX” fájl
    • Felhasználó által meghatározott Tartalmazza az „LZCALF..”, „LZCALO..” és „LZCALI..” fájlokat.
  6. Adja meg az interfész paramétereit és a kivételeket
  7. Írd meg a forráskódot
  8. Aktiválja a funkciómodult
  9. A funkciómodul tesztelése – Egyszeri teszt és hibakeresés
  10. Funkciómodul dokumentálása és kiadása

A megfelelő modularizációs technika kiválasztása

A négy technika átfedésben van, így a döntés az újrafelhasználás mértékétől és attól függ, hogy szükséges-e paraméterinterfész.

Technika Újrafelhasználás hatóköre Paraméter interfész A legjobban használható
Macro Egy program, a definíciós sor után Pozícióőrzők &1-től &9-ig Rövid, ismétlődő utasítások, hosszú számítások, összetett WRITE kimenet
Program beillesztése Bármely program, amely elnevezi az include-ot Egyik sem Megosztott adatdeklarációk és megosztott forráskód
Alprogram (FORM) Helyi, vagy külső PERFORM … IN PROGRAM használatával TÁBLÁZATOK HASZNÁLATA, MÓDOSÍTÁSA A logika gyakran újrafelhasznált egy programon belül
Funkciómodul Teljes rendszer, beleértve a távoli hívásokat is TÁBLÁZATOK IMPORTÁLÁSA, EXPORTÁLÁSA, MÓDOSÍTÁSA, KIVÉTELEK Alkalmazások között megosztott és egy függvénycsoportba csomagolt rutinok

Egy rövid szabály a legtöbb esetet lefedi: használjon makrót a rövidítésekhez egy programon belül, include-ot a megosztott deklarációkhoz, alprogramot a lokális logikához és függvénymodult, amikor a rutinnak a rendszer bármely pontjáról meghívhatónak kell lennie. Ez minden az ABAP modularitásához.

GYIK

Egy makró a generáláskor kibővül, és csak a definiáló programon belül működik. Az alprogram egy valós eljárás típusos paraméterinterfésszel, amely egy másik programból a PERFORM segítségével is meghívható.

Egy olyan függvénymodul, amelynek feldolgozási típusa Távoli hozzáférésű modul, meghívható egy másikból. SAP rendszerből vagy külső alkalmazásból. Paramétereit értékenként kell átadni, és a kivételeket rendszerhibákként kezeli.

Egy makró nem futtatható végig a hibakeresőben, mivel a generálás előtt kibontásra kerül. Helyezze át a logikát egy alprogramba vagy egy metódusba, ha soronkénti hibakeresésre van szükség, és a makrókat tartsa rövid utasításokra korlátozva.

Az ABAP fejlesztőeszközökben található mesterséges intelligencia által vezérelt kódasszisztensek egy egyszerű leírásból megrajzolhatják a függvénymodul vázát, paraméterinterfészét és kivételeit. A fejlesztő továbbra is áttekinti a logikát, aktiválja a modult és teszteli azt a továbbítás előtt.

A mesterséges intelligencia eszközei átvizsgálják a programot, észlelik az ismétlődő blokkokat, és javaslatot tesznek arra, hogy hol kellene végrehajtani egy alprogramot, metódust vagy függvénymodult.tracted. A javaslat felgyorsítja a refaktorálást, bár az egységtesztelés továbbra is szükséges az azonos viselkedés megerősítéséhez.

Foglald össze ezt a bejegyzést a következőképpen: