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.

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ů
- 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.
- 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í
- Přejít na transakci SE80.
- V rozbalovací nabídce vyberte Program.
- 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.
- 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
- Vytvořte skupinu funkcí (řekněte „ZCAL“).
- Vytvořte funkční modul, nastavte atributy jako (Funkční skupina, Aplikace, Krátký text a Typ procesu) a uložte.
- Zahrnutý soubor “LZCALU01” bude mít zdrojový kód prvního funkčního modulu.
- Zahrnutý soubor „LZCALTOP“ bude mít globální data.
- 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..“
- Definujte parametry rozhraní a výjimky
- Napište zdrojový kód
- Aktivujte funkční modul
- Testování funkčního modulu – Single Test & Debugging
- 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.
