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

  1. 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.
  2. 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ą

  1. Przejdź do transakcji SE80.
  2. Wybierz Program z listy rozwijanej.
  3. 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.
  4. Należy pamiętać, że TOP Include jest tworzony domyślnie, jeśli użytkownik zaznaczy opcję tworzenia TOP Include.

Jak utworzyć moduł funkcyjny

  1. Utwórz grupę funkcji (powiedzmy „ZCAL”).
  2. Utwórz moduł funkcyjny, ustaw atrybuty takie jak (Grupa funkcyjna, Aplikacja, Krótki tekst i Typ procesu) i Zapisz.
  3. Dołącz plik „LZCALU01” będzie zawierał kod źródłowy pierwszego modułu funkcyjnego.
  4. Dołącz plik „LZCALTOP” będzie zawierał dane globalne.
  5. 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..”
  6. Zdefiniuj parametry interfejsu i wyjątki
  7. Napisz kod źródłowy
  8. Aktywuj moduł funkcyjny
  9. Testowanie modułu funkcyjnego – pojedynczy test i debugowanie
  10. Dokumentowanie i wydawanie modułu funkcyjnego

To wszystko, jeśli chodzi o modułowość w ABAP.