<?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: casting in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/casting/m-p/1819340#M350357</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi , &lt;/P&gt;&lt;P&gt;          Please check out the program .&lt;/P&gt;&lt;P&gt;REPORT  ZDIN_CLASS1                              .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS abap.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interfaces and classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;INTERFACE if_add.&lt;/P&gt;&lt;P&gt;METHODS add IMPORTING summand TYPE i.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;INTERFACE if_subtract.&lt;/P&gt;&lt;P&gt;METHODS subtract IMPORTING subtrahend TYPE i.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;INTERFACE if_add_subtract.&lt;/P&gt;&lt;P&gt;INTERFACES: if_add, if_subtract.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;CLASS cl_stack DEFINITION.&lt;/P&gt;&lt;P&gt;PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;INTERFACES if_add_subtract.&lt;/P&gt;&lt;P&gt;ALIASES: add FOR if_add~add,&lt;/P&gt;&lt;P&gt;subtract FOR if_subtract~subtract.&lt;/P&gt;&lt;P&gt;DATA amount TYPE i VALUE '100' READ-ONLY.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;CLASS cl_stack IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;METHOD if_add~add.&lt;/P&gt;&lt;P&gt;amount = amount + summand.&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;P&gt;METHOD if_subtract~subtract.&lt;/P&gt;&lt;P&gt;amount = amount - subtrahend.&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Global data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: iref1 TYPE REF TO if_add,&lt;/P&gt;&lt;P&gt;iref2 TYPE REF TO if_subtract,&lt;/P&gt;&lt;P&gt;oref TYPE REF TO object.&lt;/P&gt;&lt;P&gt;DATA: ptab TYPE abap_parmbind_tab,&lt;/P&gt;&lt;P&gt;ptab_line LIKE LINE OF ptab,&lt;/P&gt;&lt;P&gt;para TYPE i.&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS &amp;lt;amount&amp;gt; TYPE i.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Main program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Object instantiation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CREATE OBJECT iref1 TYPE cl_stack.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Method call (short form)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;iref1-&amp;gt;add( '10' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Widening cast&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TRY.&lt;/P&gt;&lt;P&gt;iref2 ?= iref1.&lt;/P&gt;&lt;P&gt;iref2-&amp;gt;subtract( '20' ).&lt;/P&gt;&lt;P&gt;CATCH cx_sy_move_cast_error.&lt;/P&gt;&lt;P&gt;MESSAGE 'Casting error' TYPE 'I'.&lt;/P&gt;&lt;P&gt;ENDTRY.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Narrowing Cast&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;oref = iref2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Dynamic Access&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ASSIGN oref-&amp;gt;('AMOUNT') TO &amp;lt;amount&amp;gt;.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;BREAK-POINT. "Value of &amp;lt;amount&amp;gt; is 90.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Dynamic Invoke&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TRY.&lt;/P&gt;&lt;P&gt;GET REFERENCE OF para INTO ptab_line-value.&lt;/P&gt;&lt;P&gt;ptab_line-name = 'SUMMAND'.&lt;/P&gt;&lt;P&gt;para = 30.&lt;/P&gt;&lt;P&gt;INSERT ptab_line INTO TABLE ptab.&lt;/P&gt;&lt;P&gt;CALL METHOD oref-&amp;gt;('ADD') PARAMETER-TABLE ptab.&lt;/P&gt;&lt;P&gt;BREAK-POINT. "Value of &amp;lt;amount&amp;gt; is 120.&lt;/P&gt;&lt;P&gt;CLEAR ptab.&lt;/P&gt;&lt;P&gt;ptab_line-name = 'SUBTRAHEND'.&lt;/P&gt;&lt;P&gt;para = 40.&lt;/P&gt;&lt;P&gt;INSERT ptab_line INTO TABLE ptab.&lt;/P&gt;&lt;P&gt;CALL METHOD oref-&amp;gt;('SUBTRACT') PARAMETER-TABLE ptab.&lt;/P&gt;&lt;P&gt;BREAK-POINT. "Value of &amp;lt;amount&amp;gt; is 80.&lt;/P&gt;&lt;P&gt;CATCH cx_sy_dyn_call_error.&lt;/P&gt;&lt;P&gt;MESSAGE 'Dynamic invoke error' TYPE 'I'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You will understand what's the use .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please reward if useful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 24 Jan 2007 11:31:22 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-01-24T11:31:22Z</dc:date>
    <item>
      <title>casting</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/casting/m-p/1819339#M350356</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;what is the use of upcasting and down casting&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jan 2007 09:00:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/casting/m-p/1819339#M350356</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-01-24T09:00:44Z</dc:date>
    </item>
    <item>
      <title>Re: casting</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/casting/m-p/1819340#M350357</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi , &lt;/P&gt;&lt;P&gt;          Please check out the program .&lt;/P&gt;&lt;P&gt;REPORT  ZDIN_CLASS1                              .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS abap.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Interfaces and classes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;INTERFACE if_add.&lt;/P&gt;&lt;P&gt;METHODS add IMPORTING summand TYPE i.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;INTERFACE if_subtract.&lt;/P&gt;&lt;P&gt;METHODS subtract IMPORTING subtrahend TYPE i.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;INTERFACE if_add_subtract.&lt;/P&gt;&lt;P&gt;INTERFACES: if_add, if_subtract.&lt;/P&gt;&lt;P&gt;ENDINTERFACE.&lt;/P&gt;&lt;P&gt;CLASS cl_stack DEFINITION.&lt;/P&gt;&lt;P&gt;PUBLIC SECTION.&lt;/P&gt;&lt;P&gt;INTERFACES if_add_subtract.&lt;/P&gt;&lt;P&gt;ALIASES: add FOR if_add~add,&lt;/P&gt;&lt;P&gt;subtract FOR if_subtract~subtract.&lt;/P&gt;&lt;P&gt;DATA amount TYPE i VALUE '100' READ-ONLY.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;P&gt;CLASS cl_stack IMPLEMENTATION.&lt;/P&gt;&lt;P&gt;METHOD if_add~add.&lt;/P&gt;&lt;P&gt;amount = amount + summand.&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;P&gt;METHOD if_subtract~subtract.&lt;/P&gt;&lt;P&gt;amount = amount - subtrahend.&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;P&gt;ENDCLASS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Global data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: iref1 TYPE REF TO if_add,&lt;/P&gt;&lt;P&gt;iref2 TYPE REF TO if_subtract,&lt;/P&gt;&lt;P&gt;oref TYPE REF TO object.&lt;/P&gt;&lt;P&gt;DATA: ptab TYPE abap_parmbind_tab,&lt;/P&gt;&lt;P&gt;ptab_line LIKE LINE OF ptab,&lt;/P&gt;&lt;P&gt;para TYPE i.&lt;/P&gt;&lt;P&gt;FIELD-SYMBOLS &amp;lt;amount&amp;gt; TYPE i.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Main program&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Object instantiation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CREATE OBJECT iref1 TYPE cl_stack.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Method call (short form)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;iref1-&amp;gt;add( '10' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Widening cast&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TRY.&lt;/P&gt;&lt;P&gt;iref2 ?= iref1.&lt;/P&gt;&lt;P&gt;iref2-&amp;gt;subtract( '20' ).&lt;/P&gt;&lt;P&gt;CATCH cx_sy_move_cast_error.&lt;/P&gt;&lt;P&gt;MESSAGE 'Casting error' TYPE 'I'.&lt;/P&gt;&lt;P&gt;ENDTRY.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Narrowing Cast&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;oref = iref2.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Dynamic Access&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ASSIGN oref-&amp;gt;('AMOUNT') TO &amp;lt;amount&amp;gt;.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;BREAK-POINT. "Value of &amp;lt;amount&amp;gt; is 90.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Dynamic Invoke&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TRY.&lt;/P&gt;&lt;P&gt;GET REFERENCE OF para INTO ptab_line-value.&lt;/P&gt;&lt;P&gt;ptab_line-name = 'SUMMAND'.&lt;/P&gt;&lt;P&gt;para = 30.&lt;/P&gt;&lt;P&gt;INSERT ptab_line INTO TABLE ptab.&lt;/P&gt;&lt;P&gt;CALL METHOD oref-&amp;gt;('ADD') PARAMETER-TABLE ptab.&lt;/P&gt;&lt;P&gt;BREAK-POINT. "Value of &amp;lt;amount&amp;gt; is 120.&lt;/P&gt;&lt;P&gt;CLEAR ptab.&lt;/P&gt;&lt;P&gt;ptab_line-name = 'SUBTRAHEND'.&lt;/P&gt;&lt;P&gt;para = 40.&lt;/P&gt;&lt;P&gt;INSERT ptab_line INTO TABLE ptab.&lt;/P&gt;&lt;P&gt;CALL METHOD oref-&amp;gt;('SUBTRACT') PARAMETER-TABLE ptab.&lt;/P&gt;&lt;P&gt;BREAK-POINT. "Value of &amp;lt;amount&amp;gt; is 80.&lt;/P&gt;&lt;P&gt;CATCH cx_sy_dyn_call_error.&lt;/P&gt;&lt;P&gt;MESSAGE 'Dynamic invoke error' TYPE 'I'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You will understand what's the use .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please reward if useful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 24 Jan 2007 11:31:22 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/casting/m-p/1819340#M350357</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-01-24T11:31:22Z</dc:date>
    </item>
    <item>
      <title>Re: casting</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/casting/m-p/1819341#M350358</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Govindu,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Upcasting or Narrowing Cast can be used to prepare for generic access. A user who is not interested in the finer/specific points of the subclass instances but simply wants to access the shared/inherited components, can use a superclass reference (with narrowing cast)  for this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With widening cast/downcating there is no restriction that only inherited components of subclass can be accessed. When specific components of subclass instances  need to be addressed, widening cast can be used. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Award points if found useful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Indrajit&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jan 2007 07:41:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/casting/m-p/1819341#M350358</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-01-25T07:41:08Z</dc:date>
    </item>
  </channel>
</rss>

