‎2007 Apr 18 11:24 AM
Hi everyone
Can anyone tell how to do this.
For example i have itab1 and itab2 some fields in itab1 and some fields in itab2 and i want to join these two internal tables ie itab1 & itab2 and have all fields in itab3 .
can anyone give me the simple code for this with 3 fields and in each itab1 & itab2.
please help me
‎2007 Apr 18 11:30 AM
to do this there should be a common field in itab1 and itab2.
data : begin of itab1 occurs 0,
field1 like ztable-field1,
field2 like ztable-field2,
field3 like ztable-field3,
end of itab1.
data : begin of itab2 occurs 0,
field1 like ztable-field1,
field4 like ztable-field4,
field5 like ztable-field5,
end of itab2.
data : begin of itab3 occurs 0,
field1 like ztable-field1,
field2 like ztable-field2,
field3 like ztable-field3,
field4 like ztable-field4,
field5 like ztable-field5,
end of itab3.
loop at itab1.
read table itab2 with key field1 eq itab1-field1.
if sy-subrc eq 0.
move-corresponding itab1 to itab3.
move-corresponding itab2 to itab3.
append itab3.
endif.
endloop.
‎2007 Apr 18 11:26 AM
hi
try this:
sort itab2 with key f1 f2 f3.
loop at itab1.
read table itab2 with key f1 = itab1-f1
f2 = itab1-f2
f3 = itab1-f3.
if sy-subrc = 0.
itab3-f1 = itab1-f1.
itab3-f2 = itab2-f1.
....
....
append itab3.
clear itab3.
endif.
endloop.
regards,
madhu
‎2007 Apr 18 11:27 AM
hi,
chk outh the following code...
data: begin ot itab1 occurs 0,
field1,
field2,
field3,
enf of itab1.
data: begin ot itab2 occurs 0,
field1,
field4,
field5,
enf of itab2.
data: begin of itab3 occurs 0,
field1,
field2,
field3,
field4,
field5,
end of itab3.
loop at itab1.
read table itab2 with key field1 = itab1-field1.
if sy-subrc eq 0.
itab3-field1 = itab1-field1.
itab3-field2 = itab1-field2.
itab3-field3 = itab1-field3.
itab3-field4 = itab2-field4.
itab3-field5 = itab2-field5.
append itab3.
clear itab3.
endif.
endloop.
hope it solves your purpose
regards,
Navneeth.K
Message was edited by:
Navneeth Bothra
‎2007 Apr 18 11:27 AM
loop at itab1.
* MOve corresponding fields of itab1 into itab3.
read table itab2 with key field1 = itab1-field1 field2 = itab1-field2.
if sy-subrc = 0.
* MOve corresponding fields of itab2 into itab3.
endif.
append itab3.
clear itab3.
endloop.
‎2007 Apr 18 11:27 AM
hi Azhar,
Check out this code
* Get ZFISVTAX_INTERM table data
SELECT *
FROM ZFISVTAX_INTERM
INTO TABLE IT_INTERM
WHERE GJAHR = P_GJAHR AND
MONAT IN S_MONAT.
IF SY-SUBRC = 0.
SORT IT_INTERM BY GJAHR MONAT BUKRS BELNR BUZEI LFDNR.
COMMIT WORK.
ENDIF.
* Get ZFISVTAX_CCTR table data
SELECT GJAHR
KOSTL
FROM ZFISVTAX_CCTR
INTO TABLE IT_CCTR
FOR ALL ENTRIES IN IT_INTERM
WHERE GJAHR = IT_INTERM-GJAHR AND
KOSTL = IT_INTERM-KOSTL AND
ZPRODPERCENT > 0.
IF SY-SUBRC = 0.
SORT IT_CCTR BY GJAHR KOSTL.
COMMIT WORK.
ENDIF.
LOOP AT IT_INTERM.
READ TABLE IT_CCTR WITH KEY GJAHR = IT_INTERM-GJAHR
KOSTL = IT_INTERM-KOSTL.
IF SY-SUBRC = 0.
IF IT_INTERM-KOSTL <> IT_INTERM-ZKOSTL.
* Table IT_FINAL contains data needed to update ZFISVTAX_INTERM table
MOVE-CORRESPONDING IT_INTERM TO IT_FINAL.
CLEAR IT_FINAL-KOSTL.
IT_FINAL-KOSTL = IT_INTERM-ZKOSTL.
APPEND IT_FINAL.
CLEAR: IT_FINAL.
ENDIF.
ENDIF.
ENDLOOP.
‎2007 Apr 18 11:29 AM
Hi,
Say ITAB 1has fields A, B, C
ITAB2 has fields A D E F
and ITAB3 has fields A C E F.
In this case u will code like follws :
LOOP AT ITAB1.
Move-corresponding ITAB1 TO ITAB3.
ENDLOOP.
LOOP AT ITAB3.
READ TABLE ITAB2 WITH KEY A =ITAB3-A.
Move corresponding ITAB2 to ITAB3.
MODIFY ITAB3 INDEX SY-TABIX.
ENDLOOP.
Her U need to have at lease one field in common between all the tables.
Regards,
Himanshu
‎2007 Apr 18 11:30 AM
to do this there should be a common field in itab1 and itab2.
data : begin of itab1 occurs 0,
field1 like ztable-field1,
field2 like ztable-field2,
field3 like ztable-field3,
end of itab1.
data : begin of itab2 occurs 0,
field1 like ztable-field1,
field4 like ztable-field4,
field5 like ztable-field5,
end of itab2.
data : begin of itab3 occurs 0,
field1 like ztable-field1,
field2 like ztable-field2,
field3 like ztable-field3,
field4 like ztable-field4,
field5 like ztable-field5,
end of itab3.
loop at itab1.
read table itab2 with key field1 eq itab1-field1.
if sy-subrc eq 0.
move-corresponding itab1 to itab3.
move-corresponding itab2 to itab3.
append itab3.
endif.
endloop.
‎2007 Apr 18 11:30 AM
hello,
check this code
REPORT demo_int_tables_move .
move
DATA: BEGIN OF line,
col1(1) TYPE c,
col2(1) TYPE c,
END OF line.
DATA: etab LIKE TABLE OF line WITH HEADER LINE,
ftab1 LIKE TABLE OF line.
line-col1 = 'A'. line-col2 = 'B'.
APPEND line TO etab.
MOVE etab[] TO ftab1.
LOOP AT ftab1 INTO line.
WRITE: / line-col1, line-col2.
ENDLOOP.
SKIP.
ULINE.
=
DATA: ftab2 TYPE SORTED TABLE OF f
WITH NON-UNIQUE KEY table_line,
itab1 TYPE HASHED TABLE OF i
WITH UNIQUE KEY table_line,
fl TYPE f.
DO 3 TIMES.
INSERT sy-index INTO TABLE itab1.
ENDDO.
ftab2 = itab1.
LOOP AT ftab2 INTO fl.
WRITE: / fl.
ENDLOOP.
SKIP.
ULINE.
The following Conversin is not allowed in an Unicode System
*DATA: BEGIN OF iline,
num TYPE i,
END OF iline,
*
BEGIN OF fline,
num TYPE f,
END OF fline,
*
itab2 LIKE TABLE OF iline,
ftab3 LIKE TABLE OF fline.
*
*DO 3 TIMES.
iline-num = sy-index.
APPEND iline-num TO itab2.
*ENDDO.
*
*ftab3 = itab2.
*
*LOOP AT ftab3 INTO fline.
WRITE: / fline-num.
*ENDLOOP.
<b>REWARD WITH POINTS IF HELPFUL.</b>
Thanks,
Sachin
‎2007 Apr 18 11:32 AM
Hi
You cant make a join directly for internal tables.
You can loop the itab1 & then read the itab2 & then assign the reqd fields from itab1 & itab2 to itab3.
Remember to sort itab1 & itab2 with corresponding fields
Thanks
Sandeep
Reward if helpful
‎2007 Apr 18 11:34 AM
hi..
If you have common fields try this code
LOOP AT ITAB1.
LOOP AT ITAB2 WHERE F1 = ITAB1-F1
AND F2 = ITAB1-F2.
MOVE-CORRESPONDING ITAB1 TO ITAB3.
MOVE-CORRESPONDING ITAB2 TO ITAB3.
APPEND ITAB3.
ENDLOOP.
ENDLOOP.
if you dont have common fields in both tables try this code
TABLES : mara, ekko,makt.
TYPES: BEGIN OF struct1,
matnr TYPE mara-matnr,
matkl TYPE mara-matkl,
END OF struct1.
TYPES: BEGIN OF struct2,
bukrs TYPE ekko-bukrs,
lifnr TYPE ekko-lifnr,
END OF struct2.
TYPES: BEGIN OF final_struc,
matnr TYPE mara-matnr,
matkl TYPE mara-matkl,
bukrs TYPE ekko-bukrs,
lifnr TYPE ekko-lifnr,
END OF final_struc.
DATA: it_mara TYPE TABLE OF struct1,
wa_mara TYPE struct1,
it_ekko TYPE TABLE OF struct2,
wa_ekko TYPE struct2,
it_final TYPE TABLE OF final_struc,
wa_final type final_struc.
SELECT matnr matkl INTO TABLE it_mara FROM mara .
SELECT bukrs lifnr INTO TABLE it_ekko FROM ekko.
loop at it_mara into wa_mara.
wa_final-matnr = wa_mara-matnr.
wa_final-matkl = wa_mara-matkl.
append wa_final to it_final .
endloop.
loop at it_ekko into wa_ekko.
wa_final-bukrs = wa_ekko-bukrs.
wa_final-lifnr = wa_ekko-lifnr.
append wa_final to it_final .
endloop.
loop at it_final into wa_final.
write: / wa_final-matnr, wa_final-matkl, wa_final-bukrs,wa_final-lifnr.
endloop.
regards,
veeresh
‎2007 Apr 18 11:42 AM
hi azhar
i have ssample code for concatenating two internal tables into third internal table
REPORT zstudent2 NO STANDARD PAGE HEADING .
*****************************************************************************
*
structure DECLARATION
*
*************************************************************************
<b>THIRD TABLE</b>
TYPES : BEGIN OF zconcat ,
sidno TYPE ztable2-sidno,
sname TYPE ztable1-sname ,
mark1 TYPE ztable2-mark1 ,
mark2 TYPE ztable2-mark2 ,
END OF zconcat ,
<b>TABLE ONE</b>
BEGIN OF zs_table1 ,
roll_no TYPE ztable1-roll_no ,
sname TYPE ztable1-sname ,
END OF zs_table1 ,
<b>
TABLE TWO</b>
BEGIN OF zs_table2 ,
sidno TYPE ztable2-sidno ,
mark1 TYPE ztable2-mark1 ,
mark2 TYPE ztable2-mark2 ,
END OF zs_table2 .
<b>INTERNAL TABLE</b>
DATA : it_zs_table1 TYPE TABLE OF zs_table1 ,
it_zs_table2 TYPE TABLE OF zs_table2 ,
it_zconcat TYPE TABLE OF zconcat .
<b>WORK AREA</b>
DATA : wa_zs_table1 TYPE zs_table1 ,
wa_zs_table2 TYPE zs_table2 ,
wa_zconcat TYPE zconcat .
DATA : total TYPE i .
<b>START-OF-SELECTION .</b>
PERFORM select_it_zs_table1.
PERFORM select_it_zs_table2.
PERFORM concatenate .
IF it_zs_table1 IS INITIAL.
MESSAGE 'empty' type 'e' .
ENDIF .
IF it_zs_table2 IS INITIAL.
MESSAGE 'empty' type 'e' .
ENDIF .
PERFORM writing_wa_zs_table1 .
PERFORM writing_wa_zs_table2.
PERFORM writing_concatenate.
<b>END-OF-SELECTION .</b>
FORM select_it_zs_table1.
SELECT roll_no sname sschool
FROM ztable1
INTO CORRESPONDING FIELDS OF TABLE <b>it_zs_table1</b> .
CLEAR wa_zs_table1.
LOOP AT it_zs_table1 INTO wa_zs_table1 .
ENDLOOP.
ENDFORM .
FORM select_it_zs_table2.
SELECT sidno mark1 mark2
FROM ztable2
INTO CORRESPONDING FIELDS OF TABLE <b>it_zs_table2</b> .
CLEAR wa_zs_table2.
LOOP AT it_zs_table2 INTO wa_zs_table2 .
ENDLOOP.
ENDFORM .
FORM concatenate .
<b>LOOP AT it_zs_table1 INTO wa_zs_table1 .
IF sy-subrc EQ 0 .
MOVE wa_zs_table1-roll_no TO wa_zconcat-sidno .
MOVE wa_zs_table1-sname TO wa_zconcat-sname.
APPEND wa_zs_table1 TO it_zconcat .
ELSE .
WRITE : / 'failure' .
ENDIF .
ENDLOOP .
LOOP AT it_zs_table2 INTO wa_zs_table2 .
MOVE: wa_zs_table2-sidno TO wa_zconcat-sidno,
wa_zs_table2-mark1 TO wa_zconcat-mark1,
wa_zs_table2-mark2 TO wa_zconcat-mark2 .
MODIFY it_zconcat FROM wa_zconcat
TRANSPORTING mark1 mark2
WHERE sidno = wa_zconcat-sidno .
ENDLOOP.
total = wa_zconcat-mark1 + wa_zconcat-mark2 .
ENDFORM . "concatenate</b>
FORM writing_concatenate .
WRITE : / 'C O N C A T E N A T I O N O F T W O T A B L E S' .
ULINE .
WRITE : / 'ID NO' , 10 'NAME' , 30 'MARK1' , 37 'MARK2' .
ULINE .
<b>LOOP AT it_zconcat INTO wa_zconcat .
WRITE : / wa_zconcat-sidno, 10 wa_zconcat-sname , 30 wa_zconcat-mark1 , 37 wa_zconcat-mark2 .
ENDLOOP</b>.</b>
ULINE .
ENDFORM .
follow the same code for ur internal tables itab 1 and itab 2
to concatenate the 2 internal table and put them in the third internal table
hope this code helps u
reward points if useful
Ginni