Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

resolving data-reference at runtime ( cl_abap_typedescr)

Former Member
0 Likes
1,052

Hi all,

At runtime, I need to find out if a data-reference of created data

refers to a data-element or not.

In will give you an example of what I mean:

 
data: dummy         TYPE bukrs,
      descr_ref     TYPE REF TO cl_abap_typedescr, 
      descr_datael  TYPE REF TO cl_abap_elemdescr,
      p_datael      type string value ''.

descr_ref = cl_abap_typedescr=>describe_by_data( dummy ).
MOVE descr_ref ?TO descr_datael.
p_datael = descr_datael->help_id. "p_datael has now value BUKRS

How is this done, if we work with a datareferences?

I'm pretty sure it should be feasible - but I'm stuck here...

Task: same as above - find out data-element of dummy.


data: dummy         TYPE ref to data,
      descr_ref     TYPE REF TO cl_abap_typedescr, 
      descr_datael  TYPE REF TO cl_abap_elemdescr,
      p_datael      type string value ''.

create dummy type bukrs.
descr_ref = cl_abap_typedescr=>describe_by_data( dummy ).
"descr_ref->type_kind this time indicates, that we work with referenced data.
"How to progress from here on?

Thanks in advance. Points will be granted if issue can be solved!

1 ACCEPTED SOLUTION
Read only

uwe_schieferstein
Active Contributor
0 Likes
922

Hello Edwin

The sample report ZUS_SDN_RTTI_DATA_ELEMENT shows how to address your question.


*&---------------------------------------------------------------------*
*& Report  ZUS_SDN_RTTI_DATA_ELEMENT
*&
*&---------------------------------------------------------------------*
*& Thread: resolving data-reference at runtime ( cl_abap_typedescr)
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="770681"></a>
*&---------------------------------------------------------------------*

REPORT  zus_sdn_rtti_data_element.

DATA: gdo_dummy         TYPE REF TO data,
      go_typedescr      TYPE REF TO cl_abap_typedescr,
      go_elemdescr      TYPE REF TO cl_abap_elemdescr,
      p_datael      TYPE string VALUE ''.


PARAMETERS:
  p_rolln   TYPE  rollname  DEFAULT 'BUKRS'.

START-OF-SELECTION.


  CREATE DATA gdo_dummy TYPE (p_rolln).

  go_typedescr = cl_abap_typedescr=>describe_by_data_ref( gdo_dummy ).
  go_elemdescr ?= go_typedescr.

  IF ( go_elemdescr->kind = cl_abap_elemdescr=>kind_elem  AND
       go_elemdescr->help_id = 'BUKRS' ).
    MESSAGE 'Is of TYPE BUKRS' TYPE 'S'.
  ELSE.
    MESSAGE 'Is not of TYPE BUKRS' TYPE 'S'.
  ENDIF.


END-OF-SELECTION.

Regards

Uwe

3 REPLIES 3
Read only

uwe_schieferstein
Active Contributor
0 Likes
923

Hello Edwin

The sample report ZUS_SDN_RTTI_DATA_ELEMENT shows how to address your question.


*&---------------------------------------------------------------------*
*& Report  ZUS_SDN_RTTI_DATA_ELEMENT
*&
*&---------------------------------------------------------------------*
*& Thread: resolving data-reference at runtime ( cl_abap_typedescr)
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="770681"></a>
*&---------------------------------------------------------------------*

REPORT  zus_sdn_rtti_data_element.

DATA: gdo_dummy         TYPE REF TO data,
      go_typedescr      TYPE REF TO cl_abap_typedescr,
      go_elemdescr      TYPE REF TO cl_abap_elemdescr,
      p_datael      TYPE string VALUE ''.


PARAMETERS:
  p_rolln   TYPE  rollname  DEFAULT 'BUKRS'.

START-OF-SELECTION.


  CREATE DATA gdo_dummy TYPE (p_rolln).

  go_typedescr = cl_abap_typedescr=>describe_by_data_ref( gdo_dummy ).
  go_elemdescr ?= go_typedescr.

  IF ( go_elemdescr->kind = cl_abap_elemdescr=>kind_elem  AND
       go_elemdescr->help_id = 'BUKRS' ).
    MESSAGE 'Is of TYPE BUKRS' TYPE 'S'.
  ELSE.
    MESSAGE 'Is not of TYPE BUKRS' TYPE 'S'.
  ENDIF.


END-OF-SELECTION.

Regards

Uwe

Read only

Former Member
0 Likes
922

pretty easily earned points, right?

Thanks anyway

Read only

0 Likes
922

Hello Edwin

Sometimes you do not see the wood for the trees...

Kind Regards

Uwe