Modularyzacja w ABAP: makro, podprogramy i moduły funkcyjne
Kiedy modularyzujesz kod źródłowy, umieszczasz w module sekwencję instrukcji ABAP. Następnie, zamiast umieszczać wszystkie instrukcje w programie głównym, po prostu wywołujesz moduł. Kiedy program jest generowany, kod źródłowy w jednostce modularyzacji jest traktowany tak, jakby faktycznie był fizycznie obecny w programie głównym.
Potrzeba modularyzacji
- Popraw strukturę programu.
- Łatwy do odczytania kod
- Łatwy w utrzymaniu kodu
- Unikaj redundancji i promuj ponowne wykorzystywanie kodu
Różne techniki modularyzacji
- Stosowanie makr
- Korzystanie z plików dołączanych
- Podprogramy
- Moduły funkcyjne
Przyjrzyjmy się szczegółowo każdemu z nich:
SAP- Makro ABAP
Jeśli chcesz wielokrotnie używać tego samego zestawu instrukcji w programie, możesz uwzględnić je w makrze.
Makro można używać wyłącznie w programie, w którym zostało zdefiniowane, i można je wywołać wyłącznie w wierszach programu następujących po jego definicji.
Makra mogą być przydatne w przypadku długich obliczeń lub złożonych poleceń WRITE.
Składnia
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
Makra mogą używać parametrów &N gdzie N = 1,2,3…
Przykład:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
Wyjście: 2
Dołącz programy
Programy dołączane służą wyłącznie do modularyzacji kodu źródłowego i nie mają interfejsu parametrów.
Dołącz programy umożliwiają użycie tego samego kodu źródłowego w różnych programach. Mogą być przydatne, jeśli masz długie deklaracje danych, których chcesz używać w różnych programach.
Składnia
Include <include program Name>
Punkty do uwagi
- Programy dołączane nie mogą same się wywoływać.
- Programy dołączane muszą zawierać pełne instrukcje.
Przykład:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
Podprogramy
Podprogramy to procedury, które można zdefiniować w dowolnym programu ABAP i również wywoływać z dowolnego programu. Podprogramy są zazwyczaj wywoływane wewnętrznie, to znaczy zawierają sekcje kodu lub algorytmów, które są często używane lokalnie. Jeśli chcesz, aby funkcja była wielokrotnego użytku w całym systemie, użyj modułu funkcji.
Składnia-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= Nazwa podprogramu
= Parametry są przekazywane
Rodzaje podprogramów
- Wewnętrzne
- Podprogram zdefiniowany w tym samym wywoływanym programie.
- Ma dostęp do wszystkich obiektów danych zadeklarowanych w głównym programie ABAP/4.
- Zewnętrzny
- Podprogram zdefiniowany poza wywoływanym programem.
- Należy skorzystać z opcję lub zadeklaruj obiekty danych we wspólnych częściach pamięci.
Wywołanie podprogramu
Podprogramy wewnętrzne
PERFORM <subroutine> [<pass>]
= Nazwa podprogramu
= Parametry są przekazywane
Dane zadeklarowane w programie głównym są dostępne automatycznie.
Podprogramy zewnętrzne
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>].
Punkty do uwagi
- W podprogramach dozwolone są wywołania zagnieżdżone (tj. PERFORM w obrębie FORM… ENDFORM).
- Możliwe są także wywołania rekurencyjne.
- Aby zdefiniować dane lokalne, użyj instrukcji DATA po FORM. Za każdym razem, gdy wchodzisz do podprogramu, dane są odtwarzane (z wartością początkową) i na końcu zwalniane (ze stosu).
- Aby zdefiniować dane globalne używane w podprogramie, użyj instrukcji LOCAL po FORM . Wartości są zapisywane po wejściu do podprogramu i na koniec zwalniane (ze stosu)
Moduły funkcyjne
Moduły funkcyjne to procedury ABAP/4 ogólnego przeznaczenia, z których może korzystać każdy. W rzeczywistości dostępna jest duża liczba standardowych modułów funkcyjnych.
Moduły funkcyjne są zorganizowane w grupy funkcyjne: zbiory logicznie powiązanych funkcji. Moduł funkcyjny zawsze należy do grupy funkcyjnej.
Składnia-
FUNCTION <function module> <Statements> ENDFUNCTION.
Ważne informacje związane z modułem funkcyjnym
- Administracja
- Import/Zmiana/Eksport parametrów.
- Parametry tabeli/wyjątki.
- Dokumenty
- Kod źródłowy – L U01 . jest grupą funkcyjną
- Dane globalne – L TOP .Globalne dane dla grupy funkcyjnej - Dostępne pomiędzy modułami funkcyjnymi w grupie funkcyjnej.
- Program Główny – SAPL . Zawiera listę wszystkich plików dołączanych dla tej grupy funkcji
Wywołaj moduł funkcyjny
Aby wywołać moduł funkcyjny, użyj instrukcji 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]].
Grupy funkcyjne
Grupy funkcyjne to kontenery na moduły funkcyjne. W rzeczywistości istnieje duża liczba standardowych grup funkcyjnych.
Wszystkie moduły funkcyjne w grupie funkcyjnej mają dostęp do globalnych danych grupy.
Podobnie jak programy wykonywalne (typ 1) i pule modułów (typ M), grupy funkcyjne mogą zawierać ekrany, ekrany wyboru i listy.
Punkty do uwagi
- Grupy funkcyjne nie mogą być wykonywane.
- Nazwa grupy funkcji może mieć maksymalnie 26 znaków.
- Kiedy tworzysz grupę funkcyjną lub moduł funkcyjny, program główny i programy dołączane są generowane automatycznie.
- Grupy funkcyjne hermetyzują dane.
Jak utworzyć grupę funkcyjną
- Przejdź do transakcji SE80.
- Wybierz Program z listy rozwijanej.
- Wpisz nazwę grupy funkcyjnej, którą chcesz utworzyć. Ogólnie rzecz biorąc, grupy funkcji utworzone przez użytkownika zaczynają się od „Z”. np - . Naciśnij klawisz Enter.
- Należy pamiętać, że TOP Include jest tworzony domyślnie, jeśli użytkownik zaznaczy opcję tworzenia TOP Include.
Jak utworzyć moduł funkcyjny
- Utwórz grupę funkcji (powiedzmy „ZCAL”).
- Utwórz moduł funkcyjny, ustaw atrybuty takie jak (Grupa funkcyjna, Aplikacja, Krótki tekst i Typ procesu) i Zapisz.
- Dołącz plik „LZCALU01” będzie zawierał kod źródłowy pierwszego modułu funkcyjnego.
- Dołącz plik „LZCALTOP” będzie zawierał dane globalne.
- Program główny”SAPLZCAL” zawiera
- Dane globalne Dołącz plik „LZCALTOP”
- Moduły funkcyjne zawierają plik „LZCALUXX”
- Zdefiniowane przez użytkownika Dołącz pliki „LZCALF..”, „LZCALO..” i „LZCALI..”
- Zdefiniuj parametry interfejsu i wyjątki
- Napisz kod źródłowy
- Aktywuj moduł funkcyjny
- Testowanie modułu funkcyjnego – pojedynczy test i debugowanie
- Dokumentowanie i wydawanie modułu funkcyjnego
To wszystko, jeśli chodzi o modułowość w ABAP.