Coding-Schnipsel

Arbei­ten mit Refe­ren­zen ( hier Tabellen )

In die­sem Bei­spiel soll eine Sel­ect-Opti­on an eine Instanz-Metho­de über­ge­ben wer­den.
Mit die­sem Bei­spiel soll ver­an­schau­licht wer­den, wie mit Refe­ren­zen gear­bei­tet wer­den kann.
Auf die Klas­sen­de­fi­ni­ti­on wur­de in die­sem Bei­spiel nicht ein­ge­gan­gen so dass wir uns hier um den Metho­den­auf­ruf und die Arbei­ten inner­halb der Metho­de konzentrieren.

Defi­ni­tio­nen im rufen­den 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 ).

Imple­men­tie­rung 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.

Schreibe einen Kommentar