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

How to populate data into Dynamic Internal Table.

Former Member
0 Likes
1,540

Hi Experts,

I had created one Dynamic Internal table and one static internal table.I want to move data from Static Internal table to Dynamic interal table.And aslo the number of coloum of these two tables are not same.

So please help me for solving this issue.

Thanks,

<u><i><b>Seema.</b></i></u>

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
980

hi Seema,

Check out this sample program

type-pools: slis.
 
field-symbols: <dyn_table> type standard table,
               <dyn_wa>.
 
data: alv_fldcat type slis_t_fieldcat_alv,
      it_fldcat type lvc_t_fcat.
 
selection-screen begin of block b1 with frame title text-001.
parameters: p_flds(5) type c.
selection-screen end of block b1.
 
start-of-selection.
 
* build the dynamic internal table
  perform build_dyn_itab.
 
* write 5 records to the alv grid
  do 5 times.
    perform build_report.
  enddo.
 
* call the alv grid.
  perform call_alv.
 
 
************************************************************************
*  Build_dyn_itab
************************************************************************
form build_dyn_itab.
 
  data: new_table type ref to data,
        new_line  type ref to data,
        wa_it_fldcat type lvc_s_fcat.
 
* Create fields .
  do p_flds times.
    clear wa_it_fldcat.
    wa_it_fldcat-fieldname = sy-index.
    wa_it_fldcat-datatype = 'CHAR'.
    wa_it_fldcat-intlen = 5.
    append wa_it_fldcat to it_fldcat .
  enddo.
 
* Create dynamic internal table and assign to FS
  call method cl_alv_table_create=>create_dynamic_table
               exporting
                  it_fieldcatalog = it_fldcat
               importing
                  ep_table        = new_table.
 
  assign new_table->* to <dyn_table>.
 
* Create dynamic work area and assign to FS
  create data new_line like line of <dyn_table>.
  assign new_line->* to <dyn_wa>.
 
endform.
 
*********************************************************************
*      Form  build_report
*********************************************************************
form build_report.
 
  data: fieldname(20) type c.
  data: fieldvalue(5) type c.
  data: index(3) type c.
  field-symbols: <fs1>.
 
  do p_flds times.
 
    index = sy-index.
 
* Set up fieldvalue
    concatenate 'FLD' index into
             fieldvalue.
    condense   fieldvalue no-gaps.
 
   <b> assign component  index  of structure <dyn_wa> to <fs1>.
    <fs1> =  fieldvalue.</b>
  enddo.
 
* Append to the dynamic internal table
  append <dyn_wa> to <dyn_table>.
 
 
endform.
 
************************************************************************
*  CALL_ALV
************************************************************************
form call_alv.
 
  data: wa_cat like line of alv_fldcat.
 
  do p_flds times.
    clear wa_cat.
    wa_cat-fieldname = sy-index.
    wa_cat-seltext_s = sy-index.
    wa_cat-outputlen = '5'.
    append wa_cat to alv_fldcat.
  enddo.
 
 
* Call ABAP List Viewer (ALV)
  call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            it_fieldcat = alv_fldcat
       tables
            t_outtab    = <dyn_table>.
 
endform.

Hi Experts,

I had created one Dynamic Internal table and one static internal table.I want to move data from Static Internal table to Dynamic interal table.And aslo the number of coloum of these two tables are not same.

So please help me for solving this issue.

Thanks,

<u><i><b>Seema.</b></i></u>

6 REPLIES 6
Read only

Former Member
0 Likes
980

Hello seema,

Can you please post your code so that you can get a better reply.

regards

Read only

0 Likes
980

Hi all,

By using below code i had created one dynamic internal table <b><l_table></b>

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING

it_fieldcatalog = it_fieldcat

IMPORTING

ep_table = new_table.

*... Create a new line

ASSIGN new_table->* TO <l_table>.

CREATE DATA new_line LIKE LINE OF <l_table>.

ASSIGN new_line->* TO <l_line>.

i have one static internal table called <b>itab</b>.

itab has 30 fields and <l_table> might have 30 fields or less then 30 depending on selection.

suppose <l_table> has 10 fields and i want to pass data from itab to <l_table> for that perticular 10 fields only.

how can i do this?????

please help me.

regards,

Seema.

Read only

Former Member
0 Likes
980

You need to use field symbols for the corresponding columns (which match) during data move from one table header/workarea to other, after that you will append the other table

Read only

Former Member
0 Likes
981

hi Seema,

Check out this sample program

type-pools: slis.
 
field-symbols: <dyn_table> type standard table,
               <dyn_wa>.
 
data: alv_fldcat type slis_t_fieldcat_alv,
      it_fldcat type lvc_t_fcat.
 
selection-screen begin of block b1 with frame title text-001.
parameters: p_flds(5) type c.
selection-screen end of block b1.
 
start-of-selection.
 
* build the dynamic internal table
  perform build_dyn_itab.
 
* write 5 records to the alv grid
  do 5 times.
    perform build_report.
  enddo.
 
* call the alv grid.
  perform call_alv.
 
 
************************************************************************
*  Build_dyn_itab
************************************************************************
form build_dyn_itab.
 
  data: new_table type ref to data,
        new_line  type ref to data,
        wa_it_fldcat type lvc_s_fcat.
 
* Create fields .
  do p_flds times.
    clear wa_it_fldcat.
    wa_it_fldcat-fieldname = sy-index.
    wa_it_fldcat-datatype = 'CHAR'.
    wa_it_fldcat-intlen = 5.
    append wa_it_fldcat to it_fldcat .
  enddo.
 
* Create dynamic internal table and assign to FS
  call method cl_alv_table_create=>create_dynamic_table
               exporting
                  it_fieldcatalog = it_fldcat
               importing
                  ep_table        = new_table.
 
  assign new_table->* to <dyn_table>.
 
* Create dynamic work area and assign to FS
  create data new_line like line of <dyn_table>.
  assign new_line->* to <dyn_wa>.
 
endform.
 
*********************************************************************
*      Form  build_report
*********************************************************************
form build_report.
 
  data: fieldname(20) type c.
  data: fieldvalue(5) type c.
  data: index(3) type c.
  field-symbols: <fs1>.
 
  do p_flds times.
 
    index = sy-index.
 
* Set up fieldvalue
    concatenate 'FLD' index into
             fieldvalue.
    condense   fieldvalue no-gaps.
 
   <b> assign component  index  of structure <dyn_wa> to <fs1>.
    <fs1> =  fieldvalue.</b>
  enddo.
 
* Append to the dynamic internal table
  append <dyn_wa> to <dyn_table>.
 
 
endform.
 
************************************************************************
*  CALL_ALV
************************************************************************
form call_alv.
 
  data: wa_cat like line of alv_fldcat.
 
  do p_flds times.
    clear wa_cat.
    wa_cat-fieldname = sy-index.
    wa_cat-seltext_s = sy-index.
    wa_cat-outputlen = '5'.
    append wa_cat to alv_fldcat.
  enddo.
 
 
* Call ABAP List Viewer (ALV)
  call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            it_fieldcat = alv_fldcat
       tables
            t_outtab    = <dyn_table>.
 
endform.

Read only

p291102
Active Contributor
0 Likes
980

Hi,

Check out this sample program for dynamictable report.

REPORT YMS_DYNAMICDEMO

NO STANDARD PAGE HEADING

MESSAGE-ID zcs_c2c_001.

type-pools : abap.

field-symbols: <dyn_table> type standard table,

<dyn_wa>,

<dyn_field>.

data: dy_table type ref to data,

dy_line type ref to data,

xfc type lvc_s_fcat,

ifc type lvc_t_fcat.

selection-screen begin of block b1 with frame.

parameters: p_table(30) type c default 'T001'.

selection-screen end of block b1.

start-of-selection.

perform get_structure.

perform create_dynamic_itab.

perform get_data.

perform write_out.

form get_structure.

data : idetails type abap_compdescr_tab,

xdetails type abap_compdescr.

data : ref_table_des type ref to cl_abap_structdescr.

  • Get the structure of the table.

ref_table_des ?=

cl_abap_typedescr=>describe_by_name( p_table ).

idetails[] = ref_table_des->components[].

loop at idetails into xdetails.

clear xfc.

xfc-fieldname = xdetails-name .

xfc-datatype = xdetails-type_kind.

xfc-intlen = xdetails-length.

xfc-decimals = xdetails-decimals.

append xfc to ifc.

endloop.

endform.

form create_dynamic_itab.

  • Create dynamic internal table and assign to FS

call method cl_alv_table_create=>create_dynamic_table

exporting

it_fieldcatalog = ifc

importing

ep_table = dy_table.

assign dy_table->* to <dyn_table>.

  • Create dynamic work area and assign to FS

create data dy_line like line of <dyn_table>.

assign dy_line->* to <dyn_wa>.

endform.

form get_data.

  • Select Data from table.

select * into table <dyn_table>

from (p_table).

endform.

form write_out.

  • Write out data from table.

loop at <dyn_table> into <dyn_wa>.

do.

assign component sy-index

of structure <dyn_wa> to <dyn_field>.

if sy-subrc <> 0.

exit.

endif.

if sy-index = 1.

write:/ <dyn_field>.

else.

write: <dyn_field>.

endif.

enddo.

endloop.

endform.

Thanks,

Shankar

Read only

Former Member
0 Likes
980

Dear Shankar,

For populating data you are using Select statement as,

  • Select Data from table.

select * into table <dyn_table>

from (p_table).

but populating data from static internal table to dynamic internal table we cant use Select statement.

So please help me.

Thanks,

<u><i><b>Seema</b></i></u>