Enterprise Resource Planning PortalERPGenie.COMEnterprise Resource Planning Portal

   Advertise | BLOG

Web ERPGenie.COM

Home | Vote for us |

ERPGenie.COM -> SAP Technical -> ABAP -> Example code -> Creating a dynamic structure

Question : Subject : Dynamic structure 
does anyone know if it's possible to declare a dynamic structure? 
my program receives a record-field of 1000, and I need to overlay this record with a structure that needs to 
be dynamic. 

Reply : Subject : Dynamic structure 
if your structure changes from one defined structure to another one, you can try this: 
ASSIGN yourfield CASTING TYPE yourstructure 
or CREATE DATA yourdata TYPE yourstructure. 
If your structure has to be really dynamic - like ALV - you can use the class CL_ALV_TABLE_CREATE. 

try this example: 
===================================== 
REPORT zmaschl_create_data_dynamic . 

TYPE-POOLS: slis. 

DATA: it_fcat TYPE slis_t_fieldcat_alv, 
      is_fcat LIKE LINE OF it_fcat. 
DATA: it_fieldcat TYPE lvc_t_fcat, 
      is_fieldcat LIKE LINE OF it_fieldcat. 
DATA: new_table TYPE REF TO data. 
DATA: new_line  TYPE REF TO data. 
FIELD-SYMBOLS: <l_table> TYPE ANY TABLE, 
               <l_line>  TYPE ANY, 
               <l_field> TYPE ANY. 

* Build fieldcat 
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' 
       EXPORTING 
           i_structure_name = 'SYST' 
       CHANGING 
           ct_fieldcat      = it_fcat[]. 
   LOOP AT it_fcat INTO is_fcat WHERE NOT reptext_ddic IS initial. 
        MOVE-CORRESPONDING is_fcat TO is_fieldcat. 
        is_fieldcat-fieldname = is_fcat-fieldname. 
        is_fieldcat-ref_field = is_fcat-fieldname. 
        is_fieldcat-ref_table = is_fcat-ref_tabname. 
        APPEND is_fieldcat TO it_fieldcat. 
   ENDLOOP. 

* Create a new Table 
CALL METHOD cl_alv_table_create=>create_dynamic_table 
       EXPORTING 
        it_fieldcatalog = it_fieldcat 
       IMPORTING 
        ep_table        = new_table. 

* Create a new Line with the same structure of the table. 
ASSIGN new_table->* TO <l_table>. 
CREATE DATA new_line LIKE LINE OF <l_table>. 
ASSIGN new_line->* TO <l_line>. 

* Test it... 
   DO 30 TIMES. 
      ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <l_line> TO <l_field>. 
      <l_field> = sy-index. 
      INSERT <l_line> INTO TABLE <l_table>. 
   ENDDO. 

   LOOP AT <l_table> ASSIGNING <l_line>. 
      ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <l_line> TO <l_field>. 
      WRITE <l_field>. 
   ENDLOOP. 

Contact Us | Polls | Add URL | Contribute | About | Privacy | Terms | Feedback | Help!

Message Board | Discussion Forum | BLOG | Consultants: Post your resume | Companies: Advertise on ERPGenie.COM | Post Job