Objekte dynamisch instanziieren

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).

Objekte dynamisch instanziieren

Postby Lia2401 » Fri Jul 05, 2013 7:32 am

Gibt es eine Möglichkeit, Objekte dynamisch zu instanziieren?

Ich habe zwei Klassen g_cl_test1 type ref to cl_test1 und g_cl_test2 type ref to cl_test2. Abhängig von einem Parameter möchte ich nur eine von beiden instanziieren also CREATE OBJECT g_cl_test1 oder CREATE OBJECT g_cl_test2.
Das möchte ich jetzt aber dynamisch machen, also eine Art CREATE OBJECT (classname).

Weiß jemand ob das überhaupt geht? CREATE OBJECT (classname) funktioniert jedenfalls nicht.

Gruß
Jupp
Lia2401
..
..
 
Posts: 84
Joined: Wed Jul 20, 2005 5:49 pm

Re: Objekte dynamisch instanziieren

Postby Salma1291 » Fri Jul 05, 2013 9:25 am

Hi,

ja es geht, Du musst nur bei Create den Typ mitgeben

Beispiel:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.   DATA class_name    TYPE seoclsname  VALUE 'CL_HARD_WIRED_ENCRYPTOR'.
  2.   DATA meth_name_en  TYPE seocpdname  VALUE 'ENCRYPT_STRING2STRING'.
  3.   DATA meth_name_de  TYPE seocpdname  VALUE 'DECRYPT_STRING2STRING'.
  4.   DATA str_in        TYPE string.
  5.   DATA str_out       TYPE string.
  6.   DATA obj_ref       TYPE REF TO object.
  7.  
  8.   CREATE OBJECT obj_ref TYPE (class_name).
  9.  
  10.  
  11.   str_in = 'Dies ist ein Test'.
  12.  
  13.   CALL METHOD obj_ref->(meth_name_en)
  14.     EXPORTING
  15.       the_string = str_in
  16.     RECEIVING
  17.       result     = str_out.
  18.  
  19.   WRITE : / str_in.
  20.   WRITE : / str_out.
  21.  
  22.   str_in = str_out.
  23.   CALL METHOD obj_ref->(meth_name_de)
  24.     EXPORTING
  25.       the_string = str_in
  26.     RECEIVING
  27.       result     = str_out.
  28.  
  29.   WRITE : / str_in.
  30.   WRITE : / str_out.
  31.  
GeSHi ©

Jetzt noch die Parameter der Klassen auslesen und als Parametertabelle mitgeben, dann ist alles dynamisch und dafür kaum noch lesbar .


SAP ECC6.0
/Edwin
Salma1291
...
...
 
Posts: 197
Joined: Tue Feb 27, 2007 6:26 pm

Re: Objekte dynamisch instanziieren

Postby Lia2401 » Fri Jul 05, 2013 10:20 am

Ja, die dynamische Instanziierung klappt.

create object obj_ref type (clsname). Funktioniert.

Nun besitzen aber die Klassen ein Interface. Und ich möchte das Interface ansprechen.

Ich versuche das über die Zuweisung move obj_ref to Interface.
Das funktioniert aber nicht, weil obj_ref als 'Objekt definiert ist.

Gibt es eine Möglichkeit, das Interface anzusprechen?
Lia2401
..
..
 
Posts: 84
Joined: Wed Jul 20, 2005 5:49 pm

Re: Objekte dynamisch instanziieren

Postby Lia2401 » Fri Jul 05, 2013 10:45 am

Ja die gibt es mit Interface ?= obj_ref funktionierts.
Vielen Dank für die Hilfe.
Lia2401
..
..
 
Posts: 84
Joined: Wed Jul 20, 2005 5:49 pm


Return to ABAP Objects®

Who is online

Users browsing this forum: No registered users and 16 guests