Code: Alles auswählen.
data:
LT_STACK type ABAP_CALLSTACK.
field-symbols:
<ls_stack> type ABAP_CALLSTACK_LINE.
call function 'SYSTEM_CALLSTACK'
EXPORTING
MAX_LEVEL = 1
importing
CALLSTACK = LT_STACK.
read table LT_STACK assigning <ls_stack> index 1.
if sy-subrc eq 0.
...
endif.
Code: Alles auswählen.
if lr_test is not bound.
raise exception type ZCX_REF_INITIAL exporting ID_NAME = "LR_TEST".
endif.
Code: Alles auswählen.
define CHECK_BOUND.
if &1 is not bound.
raise exception type ZCX_REF_INITIAL exporting ID_NAME = "&1".
endif.
end-of-definition.
CHECK_BOUND: lr_test, lr_test02, lr_test03.
Code: Alles auswählen.
...
lr_describer TYPE REF TO cl_abap_typedescr,
lr_describer_ref TYPE REF TO cl_abap_refdescr, " Beschreibung der Referenz
...
lr_describer_ref ?= cl_abap_typedescr=>describe_by_data( lr_xyz ).
lr_describer = lr_describer_ref->get_referenced_type( ).
lv_cls_absolute_name = lr_describer->absolute_name.
Du willst ja auch gar kein allgemeines Objekt übergeben sondern eine Referenz auf ein ebensolches. Und den Übergabeparameter der Raise-Methode vom Typ "REF TO OBJECT" zu deklarieren sollte durchaus möglich sein. Und da du zur Laufzeit dann ja eine ausgeprägte Referenz hast, sollte dann auch wieder der korrekte Klassenname gefunden werden können.John_ hat geschrieben: Denn man kann den Übergabeparameter dieser Raise Methode nicht vom allg. Typ Object haben.