Modularizace ABAP: Makro, podprogram a funkční modul

⚡ Chytré shrnutí

Modularizace v ABAP umisťuje sekvenci příkazů do opakovaně použitelné jednotky, kterou hlavní program jednoduše volá. Tato stránka vysvětluje makra, programy, podprogramy, funkční moduly a skupiny funkcí, včetně syntaxe, příkladů a kritérií výběru pro každou techniku.

  • 🧩 Základní princip: Modularizační jednotka je generována, jako by její zdrojový kód byl fyzicky přítomen ve volajícím programu, takže se struktura vylepšuje bez nákladů na běh programu.
  • ⚡ Makro: Definováno pomocí DEFINE a END-OF-DEFINITION, použitelné pouze uvnitř programu, který jej definuje, a pouze po definičním řádku.
  • 📄 Zahrnout program: Neobsahuje žádné rozhraní pro parametry a existuje pouze pro sdílení zdrojového kódu, jako jsou deklarace dlouhých dat, mezi několika programy.
  • 🔁 Podprogram: Deklarováno pomocí FORM a ENDFORM, voláno pomocí PERFORM a vhodné pro logiku znovu použitou lokálně v rámci jednoho programu.
  • 🧱 Funkční modul: Systémová rutina s typovaným rozhraním pro import, export, změnu parametrů tabulky a výjimky.
  • ???? Funkční skupina: Kontejner, jehož globální data sdílí každý funkční modul uvnitř něj, generovaný automaticky s jeho zahrnutými prvky TOP a UXX.
  • 🧭 Pravidlo výběru: Vyberte makro pro lokální zkratku, podprogram pro lokální logiku a funkční modul, pokud musí být rutina opakovaně použitelná v celém systému.

Modularizace v ABAP

Co je modularizace v ABAP?

Při modularizaci zdrojového kódu umístíte do modulu sekvenci příkazů ABAP. Poté, místo umístění všech příkazů do hlavního programu, jednoduše zavoláte modul. Při generování programu se se zdrojovým kódem v modularizační jednotce zachází, jako by byl fyzicky přítomen v hlavním programu.

Potřeba modularizace

  • Zlepšit strukturu programu.
  • Snadné čtení kódu
  • Snadná údržba kódu
  • Vyhněte se redundanci a podporuje opětovné použití kódu

Různé modularizační techniky

  • Použití maker
  • Použití začleněných souborů
  • Podprogramy
  • Funkční moduly

Podívejme se podrobně na každý z nich:

SAP- Makro ABAP

Pokud chcete v programu použít stejnou sadu příkazů více než jednou, můžete je zahrnout do makra.

Makro lze použít pouze v programu, ve kterém je definováno, a lze jej volat pouze v řádcích programu následujících po jeho definici.

Makra mohou být užitečná pro dlouhé výpočty nebo složité příkazy WRITE.

Syntax

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Makra mohou používat parametry &N kde N = 1,2,3…

Příklad:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Výstup: 2

Makro je rozbaleno během kompilace pouze v rámci jednoho programu. Pokud musí být stejný kód sdílen mezi programy, použije se místo toho program include.

Zahrnout programy

Programy Include jsou určeny výhradně pro modularizaci zdrojového kódu a nemají žádné parametrické rozhraní.

Vložené programy vám umožňují používat stejný zdrojový kód v různých programech. Mohou být užitečné, pokud máte dlouhé deklarace dat, které chcete použít v různých programech.

Syntax

Include <include program Name>

Upozorňuje na poznámky

  • Zahrnout programy nemohou volat samy sebe.
  • Zahrnout programy musí obsahovat úplné příkazy.

Příklad:

INCLUDE ZILX0004.

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

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

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Zahrnuté programy sdílejí kód, ale nemohou přijímat parametry. Podprogramy přidávají toto chybějící rozhraní parametrů.

Podprogramy

Podprogramy jsou procedury, které můžete definovat v libovolném program ABAP a také volání z libovolného programu. Podprogramy jsou normálně volány interně, to znamená, že obsahují části kódu nebo algoritmy, které se často používají lokálně. Pokud chcete, aby funkce byla opakovaně použitelná v celém systému, použijte funkční modul.

Syntax-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Název podprogramu

= Předávané parametry

Typy podprogramů

  1. Interní
    • Podprogram definovaný ve stejném volaném programu.
    • Má přístup ke všem datovým objektům deklarovaným v hlavním programu ABAP/4.
  2. Externí
    • Podprogram definovaný mimo volaný program.
    • Je třeba použít možnost nebo deklarovat datové objekty ve společných částech paměti.

Volání podprogramu

Interní podprogramy

PERFORM <subroutine> [<pass>]

= Název podprogramu

= Předávané parametry

Data deklarovaná v hlavním programu jsou automaticky dostupná.

Externí podprogramy

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

Upozorňuje na poznámky

  • Vnořená volání jsou povolena v podprogramech (tj. PERFORM v rámci FORM … ENDFORM ).
  • Možné jsou i rekurzivní hovory.
  • Chcete-li definovat lokální data, použijte příkaz DATA za FORM . Při každém vstupu do podprogramu jsou data znovu vytvořena (s počáteční hodnotou) a uvolněna na konci (ze zásobníku).
  • Chcete-li definovat globální data použitá v rámci podprogramu, použijte příkaz LOCAL po FORM . Hodnoty se uloží, když vstoupíte do podprogramu a poté se uvolní na konci (ze zásobníku)

💡 Tip: Podprogramy jsou v objektech ABAP považovány za zastaralé. Nový vývoj by měl umisťovat opakovaně použitelnou logiku do metod třídy a používat funkční moduly, pokud je vyžadováno vzdálené nebo systémové rozhraní.

Funkční moduly

Funkční moduly jsou rutiny ABAP/4 pro všeobecné použití, které může používat kdokoli. Ve skutečnosti je k dispozici velké množství standardních funkčních modulů.

Funkční moduly jsou organizovány do funkčních skupin: Kolekce logicky souvisejících funkcí. Funkční modul vždy patří do funkční skupiny.

Syntax-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Důležité informace Související s funkčním modulem

  • Administrativa
  • Import/Změna/Export parametrů.
  • Parametry/Výjimky tabulky.
  • Dokumentace
  • Zdrojový kód - L U01 . je funkční skupina
  • Globální data – L NAHORU .Globální data pro funkční skupinu- Přístupná napříč funkčními moduly ve funkční skupině.
  • Hlavní program – SAPL . Obsahuje seznam všech zahrnutých souborů pro danou funkční skupinu

Zavolejte funkční modul

Chcete-li zavolat funkční modul, použijte příkaz 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]].

Každý funkční modul se nachází uvnitř funkční skupiny, takže následující část vysvětluje, jak tento kontejner funguje.

Funkční skupiny

Funkční skupiny jsou kontejnery pro funkční moduly. Ve skutečnosti existuje velké množství standardních skupin funkcí.
Všechny funkční moduly ve funkční skupině mají přístup ke globálním datům skupiny.

Stejně jako spustitelné programy (typ 1) a modulové bazény (typ M) mohou skupiny funkcí obsahovat obrazovky, obrazovky výběru a seznamy.

Upozorňuje na poznámky

  • Skupiny funkcí nelze spustit.
  • Název funkční skupiny může mít až 26 znaků.
  • Když vytvoříte funkční skupinu nebo funkční modul, hlavní program a zahrnuté programy se vygenerují automaticky.
  • Funkční skupiny zapouzdřují data.

Jak vytvořit skupinu funkcí

  1. Přejít na transakci SE80.
  2. V rozbalovací nabídce vyberte Program.
  3. Napište název skupiny funkcí, kterou chcete vytvořit. Obecně Skupiny funkcí vytvořené uživatelem začínají na „Z“. např. – . Stiskněte klávesu Enter.
  4. Všimněte si, že zahrnout TOP je vytvořeno ve výchozím nastavení, pokud uživatel zaškrtne možnost vytvoření zahrnout TOP.

Jak vytvořit funkční modul

  1. Vytvořte skupinu funkcí (řekněte „ZCAL“).
  2. Vytvořte funkční modul, nastavte atributy jako (Funkční skupina, Aplikace, Krátký text a Typ procesu) a uložte.
  3. Zahrnutý soubor “LZCALU01” bude mít zdrojový kód prvního funkčního modulu.
  4. Zahrnutý soubor „LZCALTOP“ bude mít globální data.
  5. Hlavní program"SAPLZCAL“ obsahuje
    • Globální data Zahrnout soubor „LZCALTOP“
    • Funkční moduly obsahují soubor „LZCALUXX“
    • Uživatelsky definované Zahrnout soubory „LZCALF..“, „LZCALO..“ a „LZCALI..“
  6. Definujte parametry rozhraní a výjimky
  7. Napište zdrojový kód
  8. Aktivujte funkční modul
  9. Testování funkčního modulu – Single Test & Debugging
  10. Dokumentace a uvolnění funkčního modulu

Jak vybrat správnou techniku ​​modularizace

Tyto čtyři techniky se překrývají, takže rozhodnutí závisí na rozsahu opětovného použití a na tom, zda je vyžadováno rozhraní parametrů.

Technika Rozsah opětovného použití Rozhraní parametrů Nejlépe se používá pro
Makro Jeden program, za definiční řádkou Poziční zástupné symboly &1 až &9 Krátké opakované příkazy, dlouhé výpočty, složitý výstup WRITE
Zahrnout program Jakýkoli program, který pojmenovává zahrnutí Nevyplněno Sdílené deklarace dat a sdílený zdrojový kód
Podprogram (FORMULÁŘ) Lokální nebo externí s PERFORM … IN PROGRAM POUŽÍVÁNÍ, ZMĚNA, TABULEK Logika často opakovaně používaná v rámci jednoho programu
Funkční modul Celý systém, včetně vzdálených hovorů IMPORT, EXPORT, ZMĚNA TABULEK, VÝJIMKY Rutiny sdílené mezi aplikacemi a zapouzdřené ve skupině funkcí

Stručné pravidlo pokrývá většinu případů: použijte makro pro zkrácený zápis uvnitř jednoho programu, include pro sdílené deklarace, podprogram pro lokální logiku a funkční modul, kdykoli musí být rutina volatelná z libovolného místa v systému. To je vše k modularitě v ABAP.

Nejčastější dotazy

Makro je rozbaleno v době generování a funguje pouze uvnitř programu, který ho definuje. Podprogram je skutečná procedura s rozhraním pro typované parametry, kterou lze také volat z jiného programu pomocí příkazu PERFORM.

Funkční modul, jehož typ zpracování je nastaven na Modul s dálkovým povolením, lze volat z jiného SAP systému nebo z externí aplikace. Jeho parametry musí být předány jako hodnota a výjimky jsou zpracovávány jako systémové selhání.

Makro nelze v ladicím programu krok za krokem procházet, protože je před generováním rozbaleno. Pokud je vyžadováno ladění řádek po řádku, přesuňte logiku do podprogramu nebo metody a makra omezte na krátké příkazy.

Asistenti AI kódu v rámci vývojových nástrojů ABAP mohou navrhnout kostru funkčního modulu, jeho rozhraní parametrů a výjimky z jednoduchého popisu. Vývojář stále kontroluje logiku, aktivuje modul a před transportem jej testuje.

Nástroje umělé inteligence skenují program, detekují opakované bloky a navrhují, kde by měl být podprogram, metoda nebo funkční modul odstraněn.tracted. Návrh urychluje refaktoring, ačkoliv jednotkové testování je stále nutné k potvrzení identického chování.

Shrňte tento příspěvek takto: