In diesem Beispiel soll eine Select-Option an eine Instanz-Methode übergeben werden.
Mit diesem Beispiel soll veranschaulicht werden, wie mit Referenzen gearbeitet werden kann.
Auf die Klassendefinition wurde in diesem Beispiel nicht eingegangen so dass wir uns hier um den Methodenaufruf und die Arbeiten innerhalb der Methode konzentrieren.
Definitionen im rufenden Programm:
*** DATENDEKLARATION ***
Select-Option SO_AUFNR for caufv-aufnr.
types
gr_ty_aufnr type range of caufv-aufnr.
data:
gr_aufnr type gr_ty_aufnr,
go_aufnr type ref to gr_ty_aufnr.
*** Aufruf im Report ***
gr_aufnr[] = so_aufnr[]. " Damit wir keinen Typisierungsfehler beim Aufruf der Methode bekommen.
get reference of gr_aufnr into go_aufnr.
* Aufruf der Instanz-Methode
lcl_ctrl->transfer_referenz( io_ref = go_aufnr ).
Implementierung der Methode
METHODS:
transfer_referenz importing io_ref type ref to data.
METHOD transfer_referenz.
FIELD-SYMBOLS: <LF_REF_TAB> TYPE ANY TABLE:
ASSIGN IO_REF->* TO <LF_REF_TAB>.
* Nun kann mit <LF_REF_TAB> ähnlich wie mit einer internen Tabelle gearbeitet werden.
LOOP AT <LF_REF_TAB> assigning field-symbol(<LF_REF>).
* Alle Änderungen in der Tabelle wirken sich direkt auf die Tabelle GR_AUFNR im rufenden Report aus.
ENDLOOP.
ENDMETHOD.
