Modularisering i ABAP: Makro, underrutiner og funktionsmoduler

Når du modulariserer kildekoden, placerer du en sekvens af ABAP-sætninger i et modul. Så, i stedet for at placere alle udsagn i dit hovedprogram, kalder du bare modulet. Når programmet er genereret, behandles kildekoden i modulariseringsenheden, som om den faktisk var fysisk til stede i hovedprogrammet.

Behov for modularisering

  • Forbedre strukturen af ​​programmet.
  • Nem at læse koden
  • Nem at vedligeholde koden
  • Undgå redundans og fremmer genbrug af kode

Forskellige modulariseringsteknikker

  • Brug af makroer
  • Brug af include-filer
  • Subrutiner
  • Funktionsmoduler

Lad os se nærmere på hver af dem:

SAP- ABAP makro

Hvis du vil genbruge det samme sæt sætninger mere end én gang i et program, kan du inkludere dem i en makro.

Du kan kun bruge en makro i det program, hvor den er defineret, og den kan kun kaldes i linjer i programmet efter dens definition.

Makroer kan være nyttige til lange beregninger eller komplekse WRITE-udsagn.

Syntaks

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Makroer kan bruge parametre &N hvor N = 1,2,3...

Eksempel:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Output: 2

Inkluder programmer

Inkluder-programmer er udelukkende til modularisering af kildekode og har ingen parametergrænseflade.

Inkluder programmer giver dig mulighed for at bruge den samme kildekode i forskellige programmer. De kan være nyttige, hvis du har lange dataerklæringer, som du vil bruge i forskellige programmer.

Syntaks

Include <include program Name>

Peger på note

  • Inkluder programmer kan ikke kalde sig selv.
  • Inkluder programmer skal indeholde fuldstændige udsagn.

Eksempel:

INCLUDE ZILX0004.

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

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

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Subrutiner

Underrutiner er procedurer, som du kan definere i enhver ABAP program og ring også fra ethvert program. Subrutiner kaldes normalt internt, det vil sige, at de indeholder sektioner af kode eller algoritmer, der ofte bruges lokalt. Hvis du ønsker, at en funktion skal kunne genbruges i hele systemet, skal du bruge et funktionsmodul.

Syntaks-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Navn på underrutinen

= Parametre passeres

Typer af underrutiner

  1. Intern
    • Subrutine defineret i samme program, der kaldes.
    • Kan få adgang til alle dataobjekter erklæret i ABAP/4-hovedprogrammet.
  2. Ekstern
    • Underrutine defineret uden for det program, der kaldes.
    • Skal bruge vælge eller deklarere dataobjekter i fælles dele af hukommelsen.

Opkald til en underrutine

Interne underrutiner

PERFORM <subroutine> [<pass>]

= Navn på underrutinen

= Parametre passeres

Data deklareret i hovedprogrammet er automatisk tilgængelige.

Eksterne underrutiner

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

Peger på note

  • Indlejrede opkald er tilladt i underrutiner (dvs. UDFØR inden for en FORM … ENDFORM ).
  • Rekursive opkald er også mulige.
  • For at definere lokale data skal du bruge DATA-sætningen efter FORM . Hver gang du går ind i subrutinen, genskabes dataene (med en startværdi) og frigives til sidst (fra stakken).
  • For at definere globale data, der bruges i en underrutine, skal du bruge LOCAL-sætningen efter FORM . Værdierne gemmes, når du går ind i subrutinen og frigives derefter til sidst (fra stakken)

Funktionsmoduler

Funktionsmoduler er generelle ABAP/4-rutiner, som alle kan bruge. Faktisk er der et stort antal standardfunktionsmoduler tilgængelige.

Funktionsmoduler er organiseret i funktionsgrupper: Samlinger af logisk relaterede funktioner. Et funktionsmodul tilhører altid en funktionsgruppe.

Syntaks-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Vigtig information knyttet til funktionsmodul

  • Administration
  • Import/Ændring/Eksport af parametre.
  • Tabel parametre/undtagelser.
  • Dokumentation
  • Kildekode – L U01. er Funktionsgruppen
  • Globale data – L TOP .Globale data for funktionsgruppen- Tilgængelig på tværs af funktionsmoduler i funktionsgruppen.
  • Hovedprogram – SAPL . Indeholder listen over alle inkluderede filer for denne funktionsgruppe

Kald et funktionsmodul

For at kalde et funktionsmodul skal du bruge CALL FUNCTION-sætningen:

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

Funktionsgrupper

Funktionsgrupper er beholdere til funktionsmoduler. Faktisk er der et stort antal standardfunktionsgrupper.
Alle funktionsmodulerne i en funktionsgruppe kan få adgang til gruppens globale data.

Som eksekverbare programmer (type 1) og modulpuljer (type M), funktionsgrupper kan indeholde skærmbilleder, valgskærme og lister.

Peger på note

  • Funktionsgrupper kan ikke udføres.
  • Navnet på en funktionsgruppe kan være op til 26 tegn langt.
  • Når du opretter en funktionsgruppe eller funktionsmodul, genereres hovedprogrammet og inkluderende programmer automatisk.
  • Funktionsgrupper indkapsler data.

Sådan opretter du en funktionsgruppe

  1. Gå til Transaction SE80.
  2. Vælg Program i dropdown-menuen.
  3. Skriv navnet på den funktionsgruppe, du vil oprette. Generelt brugerlavede funktionsgrupper starter med "Z". f.eks - . Tryk på Enter-tasten.
  4. Bemærk, at TOP-inkluderingen oprettes som standard, hvis brugeren markerer muligheden for at oprette en TOP-inkludering.

Sådan opretter du et funktionsmodul

  1. Opret en funktionsgruppe (sig "ZCAL").
  2. Opret et funktionsmodul, indstil attributterne som (Funktionsgruppe, Applikation, Kort tekst og Procestype) og Gem.
  3. Inkluder filen "LZCALU01" vil have kildekoden til det første funktionsmodul.
  4. Inkluder fil "LZCALTOP" vil have globale data.
  5. Hovedprogram "SAPLZCAL” indeholder
    • Globale data Inkluder filen "LZCALTOP"
    • Funktionsmoduler inkluderer filen "LZCALUXX"
    • Brugerdefineret Inkluder filerne "LZCALF..", "LZCALO.." og "LZCALI.."
  6. Definer grænsefladeparametre og undtagelser
  7. Skriv kildekoden
  8. Aktiver funktionsmodul
  9. Test af funktionsmodulet – Enkelttest og fejlfinding
  10. Dokumentation og frigivelse af et funktionsmodul

Det er alt for modularitet i ABAP.