<?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: dynamic Ranges in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-ranges/m-p/2521155#M570675</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Tobias&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a sample report showing how to create range itabs dynamically.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZUS_SDN_RTTI_CREATE_RANGE
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; NOTE: create range itab dynamically
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

REPORT  ZUS_SDN_RTTI_CREATE_RANGE.


TYPE-POOLS: abap.


CONSTANTS:
  gc_range         TYPE tabname  VALUE 'RSDSSELOPT'.

DATA:
  gd_tabnam        TYPE string,
  gd_tabfield      TYPE string,
  go_table         TYPE REF TO cl_salv_table,
  go_sdescr        TYPE REF TO cl_abap_structdescr,
  go_sdescr_new    TYPE REF TO cl_abap_structdescr,
  go_tdescr        TYPE REF TO cl_abap_tabledescr,
  go_typedescr     TYPE REF TO cl_abap_typedescr,
  gdo_handle       TYPE REF TO data,
  gs_component     TYPE abap_compdescr,
  gt_components    TYPE abap_compdescr_tab,
*
  gs_comp          TYPE abap_componentdescr,
  gt_comp          TYPE abap_component_tab.
*


FIELD-SYMBOLS:

  &amp;lt;gt_range&amp;gt;        TYPE STANDARD TABLE.


PARAMETER:
  p_tabfld(61)       TYPE c  DEFAULT 'KNB1-KUNNR'.




START-OF-SELECTION.



  " Describe structure
  go_sdescr ?= cl_abap_structdescr=&amp;gt;describe_by_name( gc_range ).
  gt_components = go_sdescr-&amp;gt;components.



  REFRESH: gt_comp.
  LOOP AT gt_components INTO gs_component.
    CLEAR: gs_comp.

    IF ( gs_component-name = 'LOW'  OR
         gs_component-name = 'HIGH' ).
      " Take data description from parameter !!!
      gs_comp-type ?= cl_abap_datadescr=&amp;gt;describe_by_name( p_tabfld ).
    ELSE.
      "  Build fieldname
      CONCATENATE gc_range gs_component-name INTO gd_tabfield
                                              SEPARATED BY '-'.

     gs_comp-type ?= cl_abap_datadescr=&amp;gt;describe_by_name( gd_tabfield ).
    ENDIF.

    gs_comp-name  = gs_component-name.
    APPEND gs_comp TO gt_comp.
  ENDLOOP.


  go_sdescr_new  = cl_abap_structdescr=&amp;gt;create( gt_comp ).
  go_tdescr      = cl_abap_tabledescr=&amp;gt;create( go_sdescr_new ).
  "   Create data refence followed by table creation
  CREATE DATA gdo_handle TYPE HANDLE go_tdescr.

  ASSIGN gdo_handle-&amp;gt;* TO &amp;lt;gt_range&amp;gt;.





  DO 5 TIMES.
    APPEND INITIAL LINE TO &amp;lt;gt_range&amp;gt;.
  ENDDO.


  TRY.
      CALL METHOD cl_salv_table=&amp;gt;factory
        IMPORTING
          r_salv_table = go_table
        CHANGING
          t_table      = &amp;lt;gt_range&amp;gt;.
      go_table-&amp;gt;display( ).
    CATCH cx_salv_msg .
  ENDTRY.


  " Display component list in order to prove that indeed the field names
  " are used (instead of the data element names)
  TRY.
      CALL METHOD cl_salv_table=&amp;gt;factory
        IMPORTING
          r_salv_table = go_table
        CHANGING
          t_table      = gt_comp.
      go_table-&amp;gt;display( ).
    CATCH cx_salv_msg .
  ENDTRY.

END-OF-SELECTION.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&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>Thu, 12 Jul 2007 16:59:33 GMT</pubDate>
    <dc:creator>uwe_schieferstein</dc:creator>
    <dc:date>2007-07-12T16:59:33Z</dc:date>
    <item>
      <title>dynamic Ranges</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-ranges/m-p/2521154#M570674</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i would like to create an internal range table about a table, which Name is in a Field.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had create a Table with following Fields:&lt;/P&gt;&lt;P&gt;FALL CHAR10&lt;/P&gt;&lt;P&gt;LFDNR INT2&lt;/P&gt;&lt;P&gt;ZUORD CHAR5&lt;/P&gt;&lt;P&gt;FNAME M_COMB_FNAME&lt;/P&gt;&lt;P&gt;SIGN SIGN&lt;/P&gt;&lt;P&gt;OPTIO OPTION&lt;/P&gt;&lt;P&gt;HIGH HIGH_RANGE&lt;/P&gt;&lt;P&gt;LOW LOW_RANGE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At first i would like to create an internal range table, about a table which standing in the Field FNAME. And if there is a new Tablename in the Field FNAME, than i would like to create a new internal range table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My suggestions are:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At First to create a Fieldsymbol:&lt;/P&gt;&lt;P&gt;assign (FNAME) to  ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And now, to create the new range table.&lt;/P&gt;&lt;P&gt;But How?&lt;/P&gt;&lt;P&gt;there are "create data", but it´s not working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And then to fill the range table...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there anybody, who could help me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Jul 2007 08:17:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-ranges/m-p/2521154#M570674</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-12T08:17:31Z</dc:date>
    </item>
    <item>
      <title>Re: dynamic Ranges</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-ranges/m-p/2521155#M570675</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Tobias&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a sample report showing how to create range itabs dynamically.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZUS_SDN_RTTI_CREATE_RANGE
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; NOTE: create range itab dynamically
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*

REPORT  ZUS_SDN_RTTI_CREATE_RANGE.


TYPE-POOLS: abap.


CONSTANTS:
  gc_range         TYPE tabname  VALUE 'RSDSSELOPT'.

DATA:
  gd_tabnam        TYPE string,
  gd_tabfield      TYPE string,
  go_table         TYPE REF TO cl_salv_table,
  go_sdescr        TYPE REF TO cl_abap_structdescr,
  go_sdescr_new    TYPE REF TO cl_abap_structdescr,
  go_tdescr        TYPE REF TO cl_abap_tabledescr,
  go_typedescr     TYPE REF TO cl_abap_typedescr,
  gdo_handle       TYPE REF TO data,
  gs_component     TYPE abap_compdescr,
  gt_components    TYPE abap_compdescr_tab,
*
  gs_comp          TYPE abap_componentdescr,
  gt_comp          TYPE abap_component_tab.
*


FIELD-SYMBOLS:

  &amp;lt;gt_range&amp;gt;        TYPE STANDARD TABLE.


PARAMETER:
  p_tabfld(61)       TYPE c  DEFAULT 'KNB1-KUNNR'.




START-OF-SELECTION.



  " Describe structure
  go_sdescr ?= cl_abap_structdescr=&amp;gt;describe_by_name( gc_range ).
  gt_components = go_sdescr-&amp;gt;components.



  REFRESH: gt_comp.
  LOOP AT gt_components INTO gs_component.
    CLEAR: gs_comp.

    IF ( gs_component-name = 'LOW'  OR
         gs_component-name = 'HIGH' ).
      " Take data description from parameter !!!
      gs_comp-type ?= cl_abap_datadescr=&amp;gt;describe_by_name( p_tabfld ).
    ELSE.
      "  Build fieldname
      CONCATENATE gc_range gs_component-name INTO gd_tabfield
                                              SEPARATED BY '-'.

     gs_comp-type ?= cl_abap_datadescr=&amp;gt;describe_by_name( gd_tabfield ).
    ENDIF.

    gs_comp-name  = gs_component-name.
    APPEND gs_comp TO gt_comp.
  ENDLOOP.


  go_sdescr_new  = cl_abap_structdescr=&amp;gt;create( gt_comp ).
  go_tdescr      = cl_abap_tabledescr=&amp;gt;create( go_sdescr_new ).
  "   Create data refence followed by table creation
  CREATE DATA gdo_handle TYPE HANDLE go_tdescr.

  ASSIGN gdo_handle-&amp;gt;* TO &amp;lt;gt_range&amp;gt;.





  DO 5 TIMES.
    APPEND INITIAL LINE TO &amp;lt;gt_range&amp;gt;.
  ENDDO.


  TRY.
      CALL METHOD cl_salv_table=&amp;gt;factory
        IMPORTING
          r_salv_table = go_table
        CHANGING
          t_table      = &amp;lt;gt_range&amp;gt;.
      go_table-&amp;gt;display( ).
    CATCH cx_salv_msg .
  ENDTRY.


  " Display component list in order to prove that indeed the field names
  " are used (instead of the data element names)
  TRY.
      CALL METHOD cl_salv_table=&amp;gt;factory
        IMPORTING
          r_salv_table = go_table
        CHANGING
          t_table      = gt_comp.
      go_table-&amp;gt;display( ).
    CATCH cx_salv_msg .
  ENDTRY.

END-OF-SELECTION.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&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>Thu, 12 Jul 2007 16:59:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-ranges/m-p/2521155#M570675</guid>
      <dc:creator>uwe_schieferstein</dc:creator>
      <dc:date>2007-07-12T16:59:33Z</dc:date>
    </item>
    <item>
      <title>Re: dynamic Ranges</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-ranges/m-p/2521156#M570676</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks, that was my answer:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          lr_strucdescr ?= CL_ABAP_STRUCTDESCR=&amp;gt;describe_by_name( &amp;lt;fs&amp;gt; ).&lt;/P&gt;&lt;P&gt;          lr_tabledescr ?= cl_abap_tabledescr=&amp;gt;create( p_line_type = lr_strucdescr ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          create data lr_data_struct TYPE HANDLE lr_strucdescr.&lt;/P&gt;&lt;P&gt;          ASSIGN lr_data_struct-&amp;gt;* TO &amp;lt;fs_struct&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          create data lr_data_table TYPE HANDLE lr_tabledescr.&lt;/P&gt;&lt;P&gt;          ASSIGN lr_data_table-&amp;gt;* TO &amp;lt;fs_table&amp;gt; .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regard&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Jul 2007 14:14:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/dynamic-ranges/m-p/2521156#M570676</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-07-13T14:14:53Z</dc:date>
    </item>
  </channel>
</rss>

