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

Internal table

Former Member
0 Likes
905

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
876
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.
10 REPLIES 10
Read only

Former Member
0 Likes
876

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

Read only

Former Member
0 Likes
876

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

Read only

Former Member
0 Likes
876
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.
Read only

Former Member
0 Likes
876

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.

Read only

Former Member
0 Likes
876

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

Read only

Former Member
0 Likes
877
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.
Read only

sonu_p2
Active Participant
0 Likes
876

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

Read only

Former Member
0 Likes
876

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

Read only

former_member673464
Active Contributor
0 Likes
876

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

Read only

Former Member
0 Likes
876

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