Modularisering i ABAP: Makro, Subrutiner & Funktionsmoduler

Nรคr du modulariserar kรคllkoden placerar du en sekvens av ABAP-satser i en modul. Sedan, istรคllet fรถr att placera alla pรฅstรฅenden i ditt huvudprogram, anropar du bara modulen. Nรคr programmet genereras behandlas kรคllkoden i modulariseringsenheten som om den faktiskt fanns fysiskt i huvudprogrammet.

Behov av modularisering

  • Fรถrbรคttra strukturen i programmet.
  • Lรคtt att lรคsa koden
  • Lรคtt att underhรฅlla koden
  • Undvik redundans och frรคmjar kodรฅteranvรคndning

Olika modulariseringstekniker

  • Anvรคndning av makron
  • Anvรคndning av include-filer
  • Subrutiner
  • Funktionsmoduler

Lรฅt oss titta nรคrmare pรฅ var och en av dem:

SAP- ABAP-makro

Om du vill รฅteranvรคnda samma uppsรคttning satser mer รคn en gรฅng i ett program kan du inkludera dem i ett makro.

Du kan bara anvรคnda ett makro inom programmet dรคr det รคr definierat, och det kan bara anropas pรฅ rader i programmet efter dess definition.

Makron kan vara anvรคndbara fรถr lรฅnga berรคkningar eller komplexa WRITE-satser.

syntax

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Makron kan anvรคnda parametrar &N dรคr N = 1,2,3...

Exempel:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Utgรฅng: 2

Inkludera program

Inkludera-program รคr endast fรถr modularisering av kรคllkod och har inget parametergrรคnssnitt.

Inkludera program lรฅter dig anvรคnda samma kรคllkod i olika program. De kan vara anvรคndbara om du har lรฅnga datadeklarationer som du vill anvรคnda i olika program.

syntax

Include <include program Name>

Pekar pรฅ anteckning

  • Inkludera-program kan inte anropa sig sjรคlva.
  • Inkludera program mรฅste innehรฅlla fullstรคndiga uttalanden.

Exempel:

INCLUDE ZILX0004.

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

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

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Subrutiner

Subrutiner รคr procedurer som du kan definiera i vilken som helst ABAP-program och รคven ringa frรฅn vilket program som helst. Subrutiner kallas normalt internt, det vill sรคga de innehรฅller kodavsnitt eller algoritmer som ofta anvรคnds lokalt. Om du vill att en funktion ska kunna รฅteranvรคndas i hela systemet, anvรคnd en funktionsmodul.

Syntax-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Subrutinens namn

= Parametrar skickas

Typer av subrutiner

  1. Inre
    • Subrutin definierad i samma program som anropas.
    • Kan komma รฅt alla dataobjekt som deklareras i ABAP/4-huvudprogrammet.
  2. Yttre
    • Subrutin definierad utanfรถr programmet som anropas.
    • Behรถver anvรคnda alternativ eller deklarera dataobjekt i gemensamma delar av minnet.

Ringer en subrutin

Interna subrutiner

PERFORM <subroutine> [<pass>]

= Subrutinens namn

= Parametrar skickas

Data som deklareras i huvudprogrammet รคr automatiskt tillgรคnglig.

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

Pekar pรฅ anteckning

  • Kapslade samtal รคr tillรฅtna i subrutiner (dvs. UTFร–R i ett FORM ... ENDFORM ).
  • Rekursiva samtal รคr ocksรฅ mรถjliga.
  • Fรถr att definiera lokala data, anvรคnd DATA-satsen efter FORM . Varje gรฅng du gรฅr in i subrutinen รฅterskapas data (med ett initialt vรคrde) och slรคpps i slutet (frรฅn stacken).
  • Fรถr att definiera globala data som anvรคnds inom en subrutin, anvรคnd LOCAL-satsen efter FORM . Vรคrdena sparas nรคr du gรฅr in i subrutinen och slรคpps sedan i slutet (frรฅn stacken)

Funktionsmoduler

Funktionsmoduler รคr generella ABAP/4-rutiner som alla kan anvรคnda. Faktum รคr att det finns ett stort antal standardfunktionsmoduler tillgรคngliga.

Funktionsmoduler รคr organiserade i funktionsgrupper: Samlingar av logiskt relaterade funktioner. En funktionsmodul tillhรถr alltid en funktionsgrupp.

Syntax-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Viktig information associerad med funktionsmodul

  • Administration
  • Importera/ร„ndra/Exportera parametrar.
  • Tabellparametrar/undantag.
  • Dokumentation
  • Kรคllkod โ€“ L U01 . รคr funktionsgruppen
  • Globala data โ€“ L UPP .Globala data fรถr funktionsgruppen- Tillgรคnglig รถver funktionsmoduler i funktionsgruppen.
  • Huvudprogram โ€“ SAPL . Innehรฅller listan รถver alla inkluderade filer fรถr den funktionsgruppen

Ring en funktionsmodul

Fรถr att anropa en funktionsmodul, anvรคnd CALL FUNCTION-satsen:

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 รคr behรฅllare fรถr funktionsmoduler. Faktum รคr att det finns ett stort antal standardfunktionsgrupper.
Alla funktionsmoduler i en funktionsgrupp kan komma รฅt gruppens globala data.

Som kรถrbara program (typ 1) och modulpooler (typ M), funktionsgrupper kan innehรฅlla skรคrmar, urvalsskรคrmar och listor.

Pekar pรฅ anteckning

  • Funktionsgrupper kan inte kรถras.
  • Namnet pรฅ en funktionsgrupp kan vara upp till 26 tecken lรฅngt.
  • Nรคr du skapar en funktionsgrupp eller funktionsmodul genereras huvudprogrammet och inkluderingsprogrammen automatiskt.
  • Funktionsgrupper kapslar in data.

Hur man skapar en funktionsgrupp

  1. Gรฅ till Transaction SE80.
  2. Vรคlj Program i rullgardinsmenyn.
  3. Skriv namnet pรฅ den funktionsgrupp som du vill skapa. Vanligtvis bรถrjar anvรคndargjorda funktionsgrupper med "Z". t.ex - . Tryck pรฅ Enter-tangenten.
  4. Observera att TOP Include skapas som standard om anvรคndaren markerar alternativet att skapa en TOP-inkludering.

Hur man skapar en funktionsmodul

  1. Skapa en funktionsgrupp (sรคg "ZCAL").
  2. Skapa en funktionsmodul, stรคll in attribut som (Funktionsgrupp, Applikation, Kort text och Processtyp) och Spara.
  3. Inkludera filen "LZCALU01" kommer att ha kรคllkoden fรถr den fรถrsta funktionsmodulen.
  4. Inkludera filen "LZCALTOP" kommer att ha globala data.
  5. Huvudprogram "SAPLZCALโ€ innehรฅller
    • Globala data Inkludera filen "LZCALTOP"
    • Funktionsmoduler inkluderar filen "LZCALUXX"
    • Anvรคndardefinierad Inkludera filerna "LZCALF..", "LZCALO.." och "LZCALI.."
  6. Definiera grรคnssnittsparametrar och undantag
  7. Skriv kรคllkoden
  8. Aktivera funktionsmodul
  9. Testa funktionsmodulen โ€“ Single Test & Debugging
  10. Dokumentera och slรคppa en funktionsmodul

Det รคr allt fรถr modularitet i ABAP.

Sammanfatta detta inlรคgg med: