<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: RTTI in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/rtti/m-p/2058329#M425110</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello John&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If the instantiation of a class is protected or even private then you need to search for &amp;lt;b&amp;gt;static methods&amp;lt;/b&amp;gt; within the same class that return an instance of the class or for &amp;lt;b&amp;gt;factory classes&amp;lt;/b&amp;gt; (e.g. CL_RECA_MESSAGE_LIST is instantiated using CF_RECA_MESSAGE_LIST).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The significance of RTTI is - at least - twofold:&lt;/P&gt;&lt;P&gt;- Get all relevant information about a (data) object at runtime&lt;/P&gt;&lt;P&gt;- Create any type of data object at runtime (-&amp;gt; hint: TYPE HANDLE statement).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 26 Mar 2007 10:15:51 GMT</pubDate>
    <dc:creator>uwe_schieferstein</dc:creator>
    <dc:date>2007-03-26T10:15:51Z</dc:date>
    <item>
      <title>RTTI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/rtti/m-p/2058327#M425108</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;what is RTTI?&lt;/P&gt;&lt;P&gt;what is the significance of CL_ABAP_TYPEDESCR and all its inherited class.&lt;/P&gt;&lt;P&gt;In the instantiation why are these classes protected?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Mar 2007 09:38:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/rtti/m-p/2058327#M425108</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-03-26T09:38:33Z</dc:date>
    </item>
    <item>
      <title>Re: RTTI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/rtti/m-p/2058328#M425109</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi&lt;/P&gt;&lt;P&gt;good&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Abbreviation RTTI. Determining data types during program run time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;example-&amp;gt;&lt;/P&gt;&lt;P&gt;Here is an example of RTTI. Check whether two data types are identical.&lt;/P&gt;&lt;P&gt;REPORT ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS conv_exc DEFINITION INHERITING FROM cx_static_check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS:  type1 TYPE c LENGTH 30,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;             type2 TYPE c LENGTH 30.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: dref1 TYPE REF TO data,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      dref2 TYPE REF TO data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS: &amp;lt;data1&amp;gt; TYPE ANY,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;               &amp;lt;data2&amp;gt; TYPE ANY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: descr_ref1 TYPE REF TO cl_abap_typedescr,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      descr_ref2 TYPE REF TO cl_abap_typedescr,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      mess    TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CREATE DATA: dref1 TYPE (type1),&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                   dref2 TYPE (type2).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ASSIGN: dref1-&amp;gt;* TO &amp;lt;data1&amp;gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;              dref2-&amp;gt;* TO &amp;lt;data2&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CATCH cx_sy_create_data_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MESSAGE 'Create data error!' TYPE 'I' DISPLAY LIKE 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDTRY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  descr_ref1 = cl_abap_typedescr=&amp;gt;describe_by_data( &amp;lt;data1&amp;gt; ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  descr_ref1 = cl_abap_typedescr=&amp;gt;describe_by_data( &amp;lt;data1&amp;gt; ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF descr_ref1 &amp;lt;&amp;gt; descr_ref2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        RAISE EXCEPTION TYPE conv_exc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        &amp;lt;data2&amp;gt; = &amp;lt;data1&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CATCH conv_exc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CONCATENATE `Assignment from type `&lt;/P&gt;&lt;P&gt;                  descr_ref2-&amp;gt;absolute_name&lt;/P&gt;&lt;P&gt;                  ` to `&lt;/P&gt;&lt;P&gt;                  descr_ref1-&amp;gt;absolute_name&lt;/P&gt;&lt;P&gt;                  ` not allowed!`&lt;/P&gt;&lt;P&gt;         INTO mess.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MESSAGE mess TYPE 'I' DISPLAY LIKE 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDTRY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Examples of RTTI and Objects&lt;/P&gt;&lt;P&gt;REPORT ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLASS conv_exc DEFINITION INHERITING FROM cx_static_check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS:  otype1 TYPE c LENGTH 30,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;             otype2 TYPE c LENGTH 30.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: oref1 TYPE REF TO object,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      oref2 TYPE REF TO object.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: descr_ref1 TYPE REF TO cl_abap_typedescr,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      descr_ref2 TYPE REF TO cl_abap_typedescr,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      mess    TYPE string.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CREATE OBJECT: oref1 TYPE (otype1),&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;                     oref2 TYPE (otype2).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CATCH cx_sy_create_object_error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MESSAGE 'Create object error!' TYPE 'I' DISPLAY LIKE 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CATCH cx_root.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MESSAGE 'Other error!' TYPE 'I' DISPLAY LIKE 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LEAVE PROGRAM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDTRY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  descr_ref1 = &lt;/P&gt;&lt;P&gt;    cl_abap_typedescr=&amp;gt;DESCRIBE_BY_OBJECT_REF( oref1 ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  descr_ref2 = &lt;/P&gt;&lt;P&gt;    cl_abap_typedescr=&amp;gt;DESCRIBE_BY_OBJECT_REF( oref2 ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  TRY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF descr_ref1 &amp;lt;&amp;gt; descr_ref2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        RAISE EXCEPTION TYPE conv_exc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        oref1 = oref2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CATCH conv_exc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      CONCATENATE `Assignment from type `&lt;/P&gt;&lt;P&gt;                  descr_ref2-&amp;gt;absolute_name&lt;/P&gt;&lt;P&gt;                  ` to `&lt;/P&gt;&lt;P&gt;                  descr_ref1-&amp;gt;absolute_name&lt;/P&gt;&lt;P&gt;                  ` not allowed!`&lt;/P&gt;&lt;P&gt;         INTO mess.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      MESSAGE mess TYPE 'I' DISPLAY LIKE 'E'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDTRY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks&lt;/P&gt;&lt;P&gt;mrutyun^&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Mar 2007 09:57:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/rtti/m-p/2058328#M425109</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-03-26T09:57:45Z</dc:date>
    </item>
    <item>
      <title>Re: RTTI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/rtti/m-p/2058329#M425110</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello John&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If the instantiation of a class is protected or even private then you need to search for &amp;lt;b&amp;gt;static methods&amp;lt;/b&amp;gt; within the same class that return an instance of the class or for &amp;lt;b&amp;gt;factory classes&amp;lt;/b&amp;gt; (e.g. CL_RECA_MESSAGE_LIST is instantiated using CF_RECA_MESSAGE_LIST).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The significance of RTTI is - at least - twofold:&lt;/P&gt;&lt;P&gt;- Get all relevant information about a (data) object at runtime&lt;/P&gt;&lt;P&gt;- Create any type of data object at runtime (-&amp;gt; hint: TYPE HANDLE statement).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;  Uwe&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Mar 2007 10:15:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/rtti/m-p/2058329#M425110</guid>
      <dc:creator>uwe_schieferstein</dc:creator>
      <dc:date>2007-03-26T10:15:51Z</dc:date>
    </item>
  </channel>
</rss>

