Modularisering i ABAP: Makro, subrutiner og funksjonsmoduler

Når du modulariserer kildekoden, plasserer du en sekvens av ABAP-setninger i en modul. Så, i stedet for å plassere alle setningene i hovedprogrammet, kaller du bare modulen. Når programmet genereres, behandles kildekoden i modulariseringsenheten som om den faktisk var fysisk til stede i hovedprogrammet.

Behov for modularisering

  • Forbedre strukturen i programmet.
  • Enkel å lese koden
  • Enkel å vedlikeholde koden
  • Unngå redundans og fremmer gjenbruk av kode

Ulike modulariseringsteknikker

  • Bruk av makroer
  • Bruk av include-filer
  • Subrutiner
  • Funksjonsmoduler

La oss se nærmere på hver av dem:

SAP- ABAP-makro

Hvis du vil gjenbruke det samme settet med utsagn mer enn én gang i et program, kan du inkludere dem i en makro.

Du kan bare bruke en makro i programmet den er definert i, og den kan bare kalles i linjer i programmet etter definisjonen.

Makroer kan være nyttige for lange beregninger eller komplekse WRITE-utsagn.

syntax

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Makroer kan bruke parametere &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.

Utgang: 2

Inkluder programmer

Inkluder-programmer er utelukkende for modularisering av kildekode, og har ingen parametergrensesnitt.

Inkluder programmer lar deg bruke samme kildekode i forskjellige programmer. De kan være nyttige hvis du har lange datadeklarasjoner som du ønsker å bruke i ulike programmer.

syntax

Include <include program Name>

Peker på Note

  • Inkluder-programmer kan ikke kalle seg selv.
  • Inkluder-programmer må inneholde fullstendige utsagn.

Eksempel:

INCLUDE ZILX0004.

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

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

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Subrutiner

Subrutiner er prosedyrer som du kan definere i hvilken som helst ABAP-program og også ringe fra et hvilket som helst program. Subrutiner kalles normalt internt, det vil si at de inneholder deler av kode eller algoritmer som brukes ofte lokalt. Hvis du vil at en funksjon skal være gjenbrukbar i hele systemet, bruk en funksjonsmodul.

Syntaks-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Navn på subrutinen

= Parametre passeres

Typer subrutiner

  1. Intern
    • Subrutine definert i samme program som kalles.
    • Kan få tilgang til alle dataobjektene som er deklarert i ABAP/4-hovedprogrammet.
  2. Ekstern
    • Subrutine definert utenfor programmet som kalles.
    • Trenger å bruke velge eller deklarere dataobjekter i vanlige deler av minnet.

Ringe en subrutine

Interne underrutiner

PERFORM <subroutine> [<pass>]

= Navn på subrutinen

= Parametre passeres

Data deklarert i hovedprogrammet er automatisk tilgjengelig.

Eksterne subrutiner

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

Peker på Note

  • Nestede anrop er tillatt i subrutiner (dvs. UTFØR innenfor et FORM … ENDFORM ).
  • Rekursive samtaler er også mulig.
  • For å definere lokale data, bruk DATA-setningen etter FORM . Hver gang du går inn i subrutinen, gjenskapes dataene (med en startverdi) og frigis på slutten (fra stabelen).
  • For å definere globale data som brukes i en subrutine, bruk LOCAL-setningen etter FORM . Verdiene lagres når du går inn i subrutinen og slippes deretter på slutten (fra stabelen)

Funksjonsmoduler

Funksjonsmoduler er generelle ABAP/4-rutiner som alle kan bruke. Faktisk er det et stort antall standard funksjonsmoduler tilgjengelig.

Funksjonsmoduler er organisert i funksjonsgrupper: Samlinger av logisk relaterte funksjoner. En funksjonsmodul tilhører alltid en funksjonsgruppe.

Syntaks-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Viktig informasjon knyttet til funksjonsmodul

  • Administrasjon
  • Import/Endre/Eksporter parametere.
  • Tabellparametere/unntak.
  • Teknisk dokumentasjon
  • Kildekode – L U01 . er funksjonsgruppen
  • Globale data – L TOPP .Globale data for funksjonsgruppen- Tilgjengelig på tvers av funksjonsmoduler i funksjonsgruppen.
  • Hovedprogram – SAPL . Inneholder listen over alle inkluderende filer for den funksjonsgruppen

Ring en funksjonsmodul

For å kalle en funksjonsmodul, bruk CALL FUNCTION-setningen:

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

Funksjonsgrupper

Funksjonsgrupper er beholdere for funksjonsmoduler. Faktisk er det et stort antall standard funksjonsgrupper.
Alle funksjonsmodulene i en funksjonsgruppe har tilgang til de globale dataene til gruppen.

Som kjørbare programmer (type 1) og modulbassenger (type M), funksjonsgrupper kan inneholde skjermer, utvalgsskjermer og lister.

Peker på Note

  • Funksjonsgrupper kan ikke utføres.
  • Navnet på en funksjonsgruppe kan være på opptil 26 tegn.
  • Når du oppretter en funksjonsgruppe eller funksjonsmodul, genereres hovedprogrammet og inkluderende programmer automatisk.
  • Funksjonsgrupper kapsler inn data.

Hvordan opprette en funksjonsgruppe

  1. Gå til Transaction SE80.
  2. Velg Program i rullegardinmenyen.
  3. Skriv navnet på funksjonsgruppen du vil opprette. Vanligvis starter brukerlagde funksjonsgrupper med "Z". f.eks – . Trykk på Enter-tasten.
  4. Merk at TOP Include opprettes som standard hvis brukeren merker av for alternativet for å opprette en TOP-inkludering.

Hvordan lage en funksjonsmodul

  1. Opprett en funksjonsgruppe (si "ZCAL").
  2. Lag en funksjonsmodul, angi attributter som (Funksjonsgruppe, Applikasjon, Kort tekst og Prosesstype) og Lagre.
  3. Inkluder filen "LZCALU01" vil ha kildekoden til den første funksjonsmodulen.
  4. Inkluder filen "LZCALTOP" vil ha globale data.
  5. Hovedprogram "SAPLZCAL” inneholder
    • Globale data inkluderer filen "LZCALTOP"
    • Funksjonsmoduler inkluderer filen "LZCALUXX"
    • Brukerdefinert Inkluder filene "LZCALF..", "LZCALO.." og "LZCALI.."
  6. Definer grensesnittparametere og unntak
  7. Skriv kildekoden
  8. Aktiver funksjonsmodul
  9. Testing av funksjonsmodulen – Enkelttest og feilsøking
  10. Dokumentere og frigi en funksjonsmodul

Det er alt for modularitet i ABAP.