Modularisierung in ABAP: Makros, Unterprogramme und Funktionsmodule

Wenn Sie Quellcode modularisieren, platzieren Sie eine Folge von ABAP-Anweisungen in einem Modul. Anstatt dann alle Anweisungen in Ihrem Hauptprogramm zu platzieren, rufen Sie einfach das Modul auf. Bei der Generierung des Programms wird der Quellcode in der Modularisierungseinheit so behandelt, als ob er tatsächlich physisch im Hauptprogramm vorhanden wäre.

Notwendigkeit der Modularisierung

  • Verbessern Sie die Struktur des Programms.
  • Der Code ist leicht zu lesen
  • Einfache Pflege des Codes
  • Vermeiden Sie Redundanz und promotestet die Wiederverwendung von Code

Verschiedene Modularisierungstechniken

  • Verwendung von Makros
  • Verwendung von Include-Dateien
  • Unterprogramme
  • Funktionsbausteine

Schauen wir uns jeden von ihnen im Detail an:

SAP-ABAP-Makro

Wenn Sie dieselben Anweisungen mehr als einmal in einem Programm wiederverwenden möchten, können Sie sie in ein Makro einbinden.

Sie können ein Makro nur innerhalb des Programms verwenden, in dem es definiert ist, und es kann nur in den folgenden Programmzeilen aufgerufen werdenwing seine Definition.

Makros können für lange Berechnungen oder andere Zwecke nützlich seinplex WRITE-Anweisungen.

Syntax

DEFINE <macro_name>

'Macro Statements

END-OF-DEFINITION

Makros können Parameter verwenden &N wobei N = 1,2,3…

Beispiel:-

DATA: number1 TYPE I VALUE 1.

DEFINE increment.

ADD 1 to &1.

WRITE &1.

END-OF-DEFINITION.

Increment number1.

WRITE number1.

Ausgabe: 2

Programme einschließen

Include-Programme dienen ausschließlich der Modularisierung des Quellcodes und verfügen über keine Parameterschnittstelle.

Mit Include-Programmen können Sie denselben Quellcode in verschiedenen Programmen verwenden. Sie können nützlich sein, wenn Sie umfangreiche Datendeklarationen haben, die Sie in verschiedenen Programmen verwenden möchten.

Syntax

Include <include program Name>

Punkte zu beachten

  • Include-Programme können sich nicht selbst aufrufen.
  • Include-Programme müssen vollständige Anweisungen enthalten.

Beispiel:

INCLUDE ZILX0004.

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

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

PROGRAM ZRPM0001.

INCLUDE ZILX0004.

Unterprogramme

Unterroutinen sind Prozeduren, die Sie in jedem beliebigen Programm definieren können ABAP-Programm und auch aus jedem Programm aufrufen. Unterprogramme werden normalerweise intern aufgerufen, das heißt, sie enthalten Codeabschnitte oder Algorithmen, die häufig lokal verwendet werden. Wenn Sie möchten, dass eine Funktion im gesamten System wiederverwendbar ist, verwenden Sie einen Funktionsbaustein.

Syntax-

FORM <Subroutine> [<pass>].

<Statement block>.

ENDFORM.

= Name des Unterprogramms

= Parameter werden übergeben

Arten von Unterprogrammen

  1. Intern
    • Unterprogramm, das im selben Programm definiert ist, das aufgerufen wird.
    • Kann auf alle im ABAP/4-Hauptprogramm deklarierten Datenobjekte zugreifen.
  2. Extern
    • Unterprogramm, das außerhalb des aufgerufenen Programms definiert ist.
    • Muss verwendet werden Option oder deklarieren Sie Datenobjekte in gemeinsamen Teilen des Speichers.

Aufruf eines Unterprogramms

Interne Unterprogramme

PERFORM <subroutine> [<pass>]

= Name des Unterprogramms

= Parameter werden übergeben

Im Hauptprogramm deklarierte Daten sind automatisch verfügbar.

Externe Unterprogramme

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

Punkte zu beachten

  • Verschachtelte Aufrufe sind in Unterprogrammen erlaubt (z. B. PERFORM innerhalb eines FORM … ENDFORM ).
  • Auch rekursive Aufrufe sind möglich.
  • Um lokale Daten zu definieren, verwenden Sie die DATA-Anweisung nach FORM . Bei jedem Aufruf des Unterprogramms werden die Daten neu erstellt (mit einem Anfangswert) und am Ende (vom Stapel) freigegeben.
  • Um globale Daten zu definieren, die in einer Unterroutine verwendet werden, verwenden Sie die LOCAL-Anweisung nach FORM . Die Werte werden beim Betreten des Unterprogramms gespeichert und am Ende (vom Stapel) freigegeben.

Funktionsbausteine

Funktionsmodule sind allgemeine ABAP/4-Routinen, die jeder verwenden kann. Tatsächlich ist eine große Anzahl an Standardfunktionsmodulen verfügbar.

Funktionsmodule sind in Funktionsgruppen organisiert: Sammlungen logisch verwandter Funktionen. Ein Funktionsbaustein gehört immer zu einer Funktionsgruppe.

Syntax-

FUNCTION <function module>

<Statements>

ENDFUNCTION.

Wichtige Informationen zum Funktionsmodul

  • Verwaltung
  • Parameter importieren/ändern/exportieren.
  • Tabellenparameter/Ausnahmen.
  • Dokumentation
  • Quellcode – L U01 . ist die Funktionsgruppe
  • Globale Daten – L TOP .Globale Daten für die Funktionsgruppe – Zugriff über alle Funktionsmodule in der Funktionsgruppe.
  • Hauptprogramm – SAPL . Enthält die Liste aller Include-Dateien für diese Funktionsgruppe

Rufen Sie einen Funktionsbaustein auf

Um einen Funktionsbaustein aufzurufen, verwenden Sie die CALL FUNCTION-Anweisung:

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

Funktionsgruppen

Funktionsgruppen sind Container für Funktionsmodule. Tatsächlich gibt es eine große Anzahl von Standard-Funktionsgruppen.
Alle Funktionsbausteine ​​einer Funktionsgruppe können auf die globalen Daten der Gruppe zugreifen.

Wie ausführbare Programme (Typ 1) und Modulpools (Typ M) können Funktionsgruppen Dynpros, Selektionsbilder und Listen enthalten.

Punkte zu beachten

  • Funktionsgruppen können nicht ausgeführt werden.
  • Der Name einer Funktionsgruppe kann bis zu 26 Zeichen lang sein.
  • Beim Anlegen einer Funktionsgruppe oder eines Funktionsbausteins werden das Hauptprogramm und die Include-Programme automatisch generiert.
  • Funktionsgruppen kapseln Daten.

So erstellen Sie eine Funktionsgruppe

  1. Gehen Sie zur Transaktion SE80.
  2. Wählen Sie im Dropdown-Menü „Programm“ aus.
  3. Geben Sie den Namen der Funktionsgruppe ein, die Sie erstellen möchten. Im Allgemeinen beginnen benutzerdefinierte Funktionsgruppen mit „Z“. z.B - . Drücken Sie die Eingabetaste.
  4. Beachten Sie, dass das TOP-Include standardmäßig erstellt wird, wenn der Benutzer die Option zum Erstellen eines TOP-Includes aktiviert.

So erstellen Sie einen Funktionsbaustein

  1. Erstellen Sie eine Funktionsgruppe (z. B. „ZCAL“).
  2. Erstellen Sie einen Funktionsbaustein, legen Sie die Attribute fest (Funktionsgruppe, Anwendung, Kurztext und Prozesstyp) und speichern Sie.
  3. Die Include-Datei „LZCALU01“ enthält den Quellcode des ersten Funktionsmoduls.
  4. Die Include-Datei „LZCALTOP“ enthält globale Daten.
  5. Das Hauptprogramm „SAPLZCAL“ enthält
    • Globale Daten Include-Datei „LZCALTOP“
    • Funktionsbausteine ​​beinhalten die Datei „LZCALUXX“
    • Benutzerdefinierte Include-Dateien „LZCALF..“, „LZCALO..“ und „LZCALI..“
  6. Definieren Sie Schnittstellenparameter und Ausnahmen
  7. Schreiben Sie den Quellcode
  8. Funktionsbaustein aktivieren
  9. Testen des Funktionsmoduls – Einzeltest und Debugging
  10. Dokumentieren und Freigeben eines Funktionsbausteins

Das ist alles zur Modularität in ABAP.