
Unterprogramme
Unterprogramme dienten früher hauptsächlich der internen Modularisierung eines Programms. Sie werden zwischen den Anweisungen FORM und ENDFORM implementiert. Die Zusätze USING und CHANGING zur Anweisung FORM legen die Parameterschnittstelle fest. Der Zusatz RAISING deklariert Ausnahmen, die aus dem Unterprogramm an den Aufrufer propagiert werden können. Unterprogramme werden mit der Anweisung PERFORM aufgerufen. Die Zuordnung zwischen Aktual- und Formalparametern erfolgt dabei über die Parameterposition. Zum Aufruf von in einem anderen Programm definierten Unterprogrammen dient der Zusatz IN PROGRAM.
Unterprogramme sind weitestgehend obsolet und in neuen Programmen durch Methoden in lokalen Klassen zu ersetzen.
Beispiel
Definition und Aufruf eines Unterprogramms..
DATA: num1 TYPE i,
num2 TYPE i,
mean TYPE p DECIMALS 2.
START-OF-SELECTION.
num1 = 4.
num2 = 5.
PERFORM mean_value USING num1 num2
CHANGING mean.
FORM mean_value USING p1 TYPE i p2 TYPE i
CHANGING result TYPE numeric.
result = ( p1 + p2 ) / 2.
ENDFORM.
Funktionsbausteine
Funktionsbausteine stellen wiederverwendbare Funktionalität zur Verfügung. Ein Funktionsbaustein ist stets Bestandteil genau einer Funktionsgruppe und hat innerhalb eines SAP-Systems einen eindeutigen Namen. Neben ihrem lokalen Datenbereich haben Funktionsbausteine auch Zugriff auf globale Daten der Funktionsgruppe. Eine Funktionsgruppe kann als abstrakte finale Klasse aufgefaßt werden, deren statische Methoden die Funktionsbausteine sind.
Funktionsbausteine und ihre Parameterschnittstellen werden mit dem Function Builder definiert und zwischen den Anweisungen FUNCTION und ENDFUNCTION implementiert. Der Aufruf eines Funktionsbausteins erfolgt mittels der Anweisung CALL FUNCTION. Die Zuordnung zwischen Aktual- und Formalparametern erfolgt dabei über die Parameter-Namen.
Normale Funktionsbausteine sind weitestgehend obsolet und in neuen Anwendungen durch Methoden in globalen Klassen zu ersetzen.
Durch die Angabe des Zusatzes DESTINATION zur Anweisung CALL FUNCTION wird der Funktionsbaustein-Aufruf zu einem RFC-Aufruf. Über Remote Function Call (RFC) ist es möglich, Funktionsbausteine auf anderen Applikationsservern des selben Systems oder in einem anderen SAP-System aufzurufen. Der aufgerufene Funktionsbaustein läuft auf dem Ziel-Server im Kontext einer eigenen Benutzeranmeldung ab. Damit ein Funktionsbaustein über RFC aufrufbar ist, muß er im Function Builder als remote-fähig gekennzeichnet werden. RFC-Aufrufe fungieren auch als externe Schnittstelle zu Fremdsystemen.
Beispiel
Aufruf eines Funktionsbausteins zum Auslesen einer Datenbanktabelle.
DATA flight_tab TYPE STANDARD TABLE OF spfli.
CALL FUNCTION 'READ_SPFLI_INTO_TABLE'
EXPORTING id = 'LH'
IMPORTING itab = flight_tab.