Application Development 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: 

Transferring of Data from One Internal Table to Another Internal Table

former_member367551
Participant
0 Kudos

Dear forumers,

This is a newbie question.

form process_data.

loop at itab_1.

itab_final-matnr = itab_1-matnr.

itab_final-charg = itab_1-charg.

itab_final-vfdat = itab_1-vfdat.

COLLECT itab_final.

endloop.

loop at itab_2.

itab_final-bismt = itab_2-bismt.

itab_final-mhdrz = itab_2-mhdrz.

itab_final-meins = itab_2-meins.

COLLECT itab_final.

endloop.

loop at itab_3.

itab_final-maktx = itab_3-maktx.

COLLECT itab_final.

endloop.

loop at itab_4.

itab_final-lbkum = itab_4-lbkum.

itab_final-salk3 = itab_4-salk3.

COLLECT itab_final.

endloop.

endform.

From the debugger, ITAB_FINAL only has three fields filled up (MATNR, BISMT and MAKTX), even to the end of this form processing block. It should have more fields filled up actually.

Any idea why, and how I can correct this?

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Try like this.....

loop at itab_1 into wa_itab1.

clear : wa_itab_final.

wa_itab_final-matnr = wa_itab1-matnr.

wa_itab_final-charg = wa_itab1-charg.

wa_itab_final-vfdat = wa_itab1-vfdat.

APPEND wa_itab_final to itab_final.

endloop.

loop at itab_2 into wa_itab2.

clear : wa_itab_final.

wa_itab_final-bismt = wa_itab2-bismt.

wa_itab_final-mhdrz = wa_itab2-mhdrz.

wa_itab_final-meins = wa_itab2-meins.

APPEND wa_itab_final to itab_final.

endloop.

loop at itab_3 into wa_itab3.

clear : wa_itab_final.

wa_itab_final-maktx = wa_itab3-maktx.

APPEND wa_itab_final to itab_final.

endloop.

loop at itab_4 into wa_itab4.

clear : wa_itab_final.

wa_itab_final-lbkum = wa_itab4-lbkum.

wa_itab_final-salk3 = wa_itab4-salk3.

APPEND wa_itab_final to itab_final.

endloop.

hope it is helps

11 REPLIES 11

Former Member
0 Kudos

Hi,

Use APPEND LINES OF command

append lines of : itab1 to ltab_final,

itab2 to itab_final,

itab3 to itab_final,

itab4 to itab_final.

or

append lines of itab1 to itab_final.

append lines of itab2 to itab_final.

append lines of itab3 to itab_final.

append lines of itab4 to itab_final.

hope it is helps

0 Kudos

Hi Gowri,

It doesn't work. I have the following error message in my syntax check:

"ITAB_FINAL" and "ITAB_2" are not mutually convertible. In Unicode programs, "ITAB_FINAL" must have the same structure layout as "ITAB_2", independent of the length of a Unicode character.

This is because ITAB_1, ITAB_2, ITAB_3, ITAB_4 and ITAB_FINAL all have different structures from one another, while APPEND requires that they all have the same structure (is this right?).

Former Member
0 Kudos

Hi;

if you will use APPEND statements it will definately help you

append lines of <source table name> to <destination table name>.

thanks and regards

Rahul sharma

sujeet2918
Active Contributor
0 Kudos

Hi Deborah,

You check first your internal table itab_fianl has all fields where u are passing ur value...

do like this:---

types: begin of ty_final,

matnr TYPE matnr,

charg TYPE ,

vfdat TYPE ,

bismt TYPE ,

mhdrz TYPE

meins TYPE

maktx TYPE

lbkum TYPE

salk3 TYPE

end of ty_final.

DATA: it_final TYPE STANDARD TABLE OF ty_final.

try this...and declare your internal table according to fields.

0 Kudos

Hi Sujeet,

This portion of code is checked already. The declaration part is correct.

0 Kudos

hi,

Better you Use below statement instead using collect ....try this

create seperate wa for all internal table...

then pass your fields wa to wa..

then..

MODIFY table it_final from wa_final Transporting matnr........like this.

or

append wa_final to it_final.

0 Kudos

Hi Sujeet,

All of the internal tables were defined / declared with "WITH HEADER LINE" so this should be the same as a workarea, wa.

The APPEND statements have been tried too, but to no avail.

Former Member
0 Kudos

Hi

If you have a key field in itab1 and itab2 then you can do like this.

append the fields normally from first table itab1 to final table.

and try this logic to append contents from second table

loop at itab2.

read table itab3 with key <keyfield> = itab2-keyfield.

move-corresponding itab2 to itab3.

append itab3.

endloop.

here itab3 is final output,

thanks,

Usha

Former Member
0 Kudos

Hi,

Try like this.....

loop at itab_1 into wa_itab1.

clear : wa_itab_final.

wa_itab_final-matnr = wa_itab1-matnr.

wa_itab_final-charg = wa_itab1-charg.

wa_itab_final-vfdat = wa_itab1-vfdat.

APPEND wa_itab_final to itab_final.

endloop.

loop at itab_2 into wa_itab2.

clear : wa_itab_final.

wa_itab_final-bismt = wa_itab2-bismt.

wa_itab_final-mhdrz = wa_itab2-mhdrz.

wa_itab_final-meins = wa_itab2-meins.

APPEND wa_itab_final to itab_final.

endloop.

loop at itab_3 into wa_itab3.

clear : wa_itab_final.

wa_itab_final-maktx = wa_itab3-maktx.

APPEND wa_itab_final to itab_final.

endloop.

loop at itab_4 into wa_itab4.

clear : wa_itab_final.

wa_itab_final-lbkum = wa_itab4-lbkum.

wa_itab_final-salk3 = wa_itab4-salk3.

APPEND wa_itab_final to itab_final.

endloop.

hope it is helps

Former Member
0 Kudos

You use collect so each record what is to be added to the itab-final will be checked for the same alphadata. when you start collecting the fields for the second table your itab-final fields used in the first tabel are not cleared. so they will have the content of the last record filled in the first loop. this wil go on for each following loop you process because you use each time different fields.

therefor you will not get the number of records you expected. first make sure the content of the four itab-tables are matched and then you write to the itab-final.

Regards,

Guido

Edited by: G. Bouman on Sep 16, 2008 11:41 AM

former_member367551
Participant
0 Kudos

Dear forumers,

Thank you for all your inputs.

The issue was resolved with your help, and below are the codelines used for it.

SORT: itab_1, itab_2, itab_3, itab_4.

LOOP AT itab_1.

move-corresponding itab_1 to itab_final.

read table itab_2 with key matnr = itab_1-matnr binary search.

move-corresponding itab_2 to itab_final.

read table itab_3 with key matnr = itab_1-matnr binary search.

move-corresponding itab_3 to itab_final.

read table itab_4 with key matnr = itab_1-matnr binary search.

move-corresponding itab_4 to itab_final.

append itab_final.

ENDLOOP.