Das folgende Beispiel zeigt den objektorientierten Aspekt von Funktionsgruppen im einfachen Fall eines Zählers:
Stellen Sie sich eine Funktionsgruppe namens counter vor:
FUNCTION-POOL counter.
DATA count TYPE i.
FUNCTION
set_counter.
* Local Interface IMPORTING VALUE(SET_VALUE)
count = set_value.
ENDFUNCTION.
FUNCTION
increment_counter.
ADD 1 TO count.
ENDFUNCTION.
FUNCTION
get_counter.
* Local Interface: EXPORTING VALUE(GET_VALUE)
get_value = count.
ENDFUNCTION.
Die Funktionsgruppe counter arbeitet als Zähler. Sie enthält ein globales Integerfeld count und drei Funktionsbausteine set_counter, increment_counter und get_counter, die mit diesem Feld arbeiten. Zwei der Funktionsbausteine haben Ein- bzw. Ausgabeparameter und definieren somit die Datenschnittstelle der Funktionsgruppe. Im Sinne der Objektorientierung hat eine Funktionsgruppe ausschließlich private Attribute und ausschließlich öffentliche Methoden.
Ein beliebiges ABAP-Programm kann, z.B. wie folgt, mit dieser Funktionsgruppe arbeiten:
REPORT demo_function_group_counter.
DATA number TYPE i VALUE 5.
CALL FUNCTION 'SET_COUNTER'
EXPORTING
set_value =
number.
DO 3 TIMES.
CALL FUNCTION 'INCREMENT_COUNTER'.
ENDDO.
CALL FUNCTION 'GET_COUNTER'
IMPORTING
get_value =
number.
WRITE number.
Nach der Ausführung dieses Programmteils hat die Programmvariable number den Wert 8.
Das Programm hat keinen Zugriff auf das Feld count der Funktionsgruppe. Die Operationen auf diesem Feld sind vollständig in den Funktionsbausteinen gekapselt. Das Programm kann nur über den Aufruf von Funktionsbausteinen und deren Schnittstelle mit der Funktionsgruppe kommunizieren.