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.

Exempelvis:

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.