Modularisatie in ABAP: macro-, subroutines en functiemodules

Wanneer u de broncode modulariseert, plaatst u een reeks ABAP-instructies in een module. Vervolgens roept u gewoon de module aan, in plaats van alle instructies in uw hoofdprogramma te plaatsen. Wanneer het programma wordt gegenereerd, wordt de broncode in de modularisatie-eenheid behandeld alsof deze feitelijk fysiek aanwezig is in het hoofdprogramma.

Behoefte aan modularisering

  • Verbeter de structuur van het programma.
  • Gemakkelijk om de code te lezen
  • Makkelijk om de code te onderhouden
  • Vermijd redundantie en promohergebruik van tes-code

Verschillende modularisatietechnieken

  • Gebruik van macro's
  • Gebruik van include-bestanden
  • subroutines
  • Functiemodules

Laten we ze allemaal in detail bekijken:

SAP-ABAP-macro

Als u dezelfde set instructies meerdere keren in een programma wilt gebruiken, kunt u deze in een macro opnemen.

U kunt een macro alleen gebruiken binnen het programma waarin deze is gedefinieerd, en deze kan alleen worden aangeroepen in regels van het programma.wing zijn definitie.

Macro's kunnen handig zijn voor lange berekeningen of complex SCHRIJF uitspraken.

Syntaxis

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Macro's kunnen parameters gebruiken &N waarbij N = 1,2,3…

Voorbeeld:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Uitgang: 2

Inclusief programma's

Inclusief programma's zijn uitsluitend bedoeld voor het modulariseren van de broncode en hebben geen parameterinterface.

Met Programma's opnemen kunt u dezelfde broncode in verschillende programma's gebruiken. Ze kunnen handig zijn als u lange gegevensdeclaraties heeft die u in verschillende programma's wilt gebruiken.

Syntaxis

Include <include program Name>

Punten om op te letten

  • Inclusief programma's kunnen zichzelf niet aanroepen.
  • Inclusief programma's moeten volledige instructies bevatten.

Voorbeeld:

INCLUDE ZILX0004.

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

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

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

subroutines

Subroutines zijn procedures die u in elk programma kunt definiëren ABAP-programma en ook bellen vanuit elk programma. Subroutines worden normaal gesproken intern aangeroepen, dat wil zeggen dat ze delen van code of algoritmen bevatten die lokaal vaak worden gebruikt. Als u wilt dat een functie in het hele systeem herbruikbaar is, gebruikt u een functiemodule.

Syntaxis-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Naam van de subroutine

= Parameters worden doorgegeven

Soorten subroutines

  1. Intern
    • Subroutine gedefinieerd in hetzelfde programma dat wordt aangeroepen.
    • Heeft toegang tot alle dataobjecten die zijn gedeclareerd in het ABAP/4-hoofdprogramma.
  2. Extern
    • Subroutine gedefinieerd buiten het opgeroepen programma.
    • Moet gebruik maken van de optie of declareer data-objecten in gemeenschappelijke delen van het geheugen.

Een subroutine aanroepen

Interne subroutines

PERFORM <subroutine> [<pass>]

= Naam van de subroutine

= Parameters worden doorgegeven

Gegevens die in het hoofdprogramma zijn gedeclareerd, zijn automatisch beschikbaar.

Externe subroutines

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

Punten om op te letten

  • Geneste oproepen zijn toegestaan ​​in subroutines (dwz PERFORM binnen een FORM … ENDFORM ).
  • Recursieve oproepen zijn ook mogelijk.
  • Om lokale gegevens te definiëren, gebruikt u de DATA-instructie na FORM . Elke keer dat u de subroutine betreedt, worden de gegevens opnieuw aangemaakt (met een initiële waarde) en aan het einde vrijgegeven (van de stapel).
  • Om globale gegevens te definiëren die binnen een subroutine worden gebruikt, gebruikt u de LOCAL-instructie na FORM . De waarden worden bij het betreden van de subroutine opgeslagen en aan het einde vrijgegeven (van de stapel)

Functiemodules

Functiemodules zijn ABAP/4-routines voor algemeen gebruik die iedereen kan gebruiken. Er zijn namelijk een groot aantal standaardfunctiemodules beschikbaar.

Functiemodules zijn georganiseerd in functiegroepen: verzamelingen van logisch gerelateerde functies. Een Functiemodule behoort altijd tot een Functiegroep.

Syntaxis-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Belangrijke informatie Geassocieerd met functiemodule

  • Administratie
  • Parameters importeren/wijzigen/exporteren.
  • Tabelparameters/uitzonderingen.
  • Documentatie
  • Broncode – L U01 . is de Functiegroep
  • Mondiale gegevens – L TOP .Globale gegevens voor de functiegroep - Toegankelijk voor alle functiemodules in de functiegroep.
  • Hoofdprogramma – SAPL . Bevat de lijst met alle include-bestanden voor die functiegroep

Roep een functiemodule aan

Om een ​​functiemodule aan te roepen, gebruikt u de CALL FUNCTION-instructie:

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

Functiegroepen

Functiegroepen zijn containers voor functiemodules. Er zijn feitelijk een groot aantal standaardfunctiegroepen.
Alle functiemodules in een functiegroep hebben toegang tot de globale gegevens van de groep.

Zoals uitvoerbare programma's (type 1) en modulezwembaden (type M), functiegroepen kunnen schermen, selectieschermen en lijsten bevatten.

Punten om op te letten

  • Functiegroepen kunnen niet worden uitgevoerd.
  • De naam van een functiegroep kan maximaal 26 tekens lang zijn.
  • Wanneer u een functiegroep of functiemodule aanmaakt, worden het hoofdprogramma en de include-programma's automatisch gegenereerd.
  • Functiegroepen kapselen gegevens in.

Hoe u een functiegroep maakt

  1. Ga naar Transactie SE80.
  2. Selecteer Programma in de vervolgkeuzelijst.
  3. Schrijf de naam van de functiegroep die u wilt maken. Over het algemeen beginnen door de gebruiker gemaakte functiegroepen met “Z”. bijvoorbeeld – . Druk op de Enter-toets.
  4. Houd er rekening mee dat de TOP Include standaard wordt gemaakt als de gebruiker de optie aanvinkt om een ​​TOP Include te maken.

Hoe u een functiemodule maakt

  1. Creëer een functiegroep (zeg “ZCAL”).
  2. Maak een functiemodule aan, stel de attributen in zoals (Functiegroep, Applicatie, Korte Tekst en Procestype) en Opslaan.
  3. Het opgenomen bestand “LZCALU01” heeft de broncode van de eerste functiemodule.
  4. Inclusief bestand “LZCALTOP” zal globale gegevens bevatten.
  5. Hoofdprogramma “SAPLZCAL” bevat
    • Globale gegevens Voeg bestand “LZCALTOP” toe
    • Functiemodules bevatten bestand “LZCALUXX”
    • Door gebruiker gedefinieerd Inclusief bestanden “LZCALF..”, “LZCALO..” en “LZCALI..”
  6. Definieer interfaceparameters en uitzonderingen
  7. Schrijf de broncode
  8. Functiemodule activeren
  9. De functiemodule testen – enkele test en foutopsporing
  10. Een functiemodule documenteren en vrijgeven

Dat is alles voor modulariteit in ABAP.