‎2007 Aug 07 7:08 AM
Hi all,
i have to populate data from 5 internal tables into a final table.
Ex : select a b c from d into it1 where....
select x y z from a into it2 where...
.
.
select k j l from a into it5 where...
so how to move a b c , x y z , k j l into final table.
Thanks..
Zaf
‎2007 Aug 07 8:09 AM
Hi,
Please see my example below so you can have an idea on how to move to another internal
table.
Hope it helps...
P.S. Please award points if it helps...
REPORT z_aris_test_4
NO STANDARD PAGE HEADING.
TYPES: BEGIN OF t_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
END OF t_vbak.
TYPES: BEGIN OF t_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
END OF t_vbap.
TYPES: BEGIN OF t_vbfa,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
END OF t_vbfa.
TYPES: BEGIN OF t_final,
vbeln TYPE vbak-vbeln,
posnr TYPE vbap-posnr,
erdat TYPE vbak-erdat,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
END OF t_final.
DATA: gt_vbak TYPE STANDARD TABLE OF t_vbak,
gt_vbap TYPE STANDARD TABLE OF t_vbap,
gt_vbfa TYPE STANDARD TABLE OF t_vbfa,
gt_final TYPE STANDARD TABLE OF t_final.
DATA: wa_vbak LIKE LINE OF gt_vbak,
wa_vbap LIKE LINE OF gt_vbap,
wa_vbfa LIKE LINE OF gt_vbfa,
wa_final LIKE LINE OF gt_final.
SELECT vbeln erdat
FROM vbak
INTO TABLE gt_vbak.
IF NOT gt_vbak[] IS INITIAL.
SELECT vbeln posnr
FROM vbap
INTO TABLE gt_vbap
FOR ALL ENTRIES IN gt_vbak
WHERE vbeln = gt_vbak-vbeln.
ENDIF.
IF NOT gt_vbak[] IS INITIAL.
SELECT vbelv posnv
FROM vbfa
INTO TABLE gt_vbfa
FOR ALL ENTRIES IN gt_vbak
WHERE vbelv = gt_vbak-vbeln.
ENDIF.
SORT gt_vbak BY vbeln ASCENDING.
SORT gt_vbap ASCENDING BY vbeln posnr.
SORT gt_vbfa BY vbelv ASCENDING.
LOOP AT gt_vbap INTO wa_vbap.
READ TABLE gt_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_vbfa INTO wa_vbfa WITH KEY vbelv = wa_vbak-vbeln BINARY SEARCH.
ENDIF.
IF sy-subrc = 0.
MOVE wa_vbap-vbeln TO wa_final-vbeln.
MOVE wa_vbap-posnr TO wa_final-posnr.
MOVE wa_vbak-erdat TO wa_final-erdat.
MOVE wa_vbfa-vbelv TO wa_final-vbelv.
MOVE wa_vbfa-posnv TO wa_final-posnv.
APPEND wa_final TO gt_final.
CLEAR: wa_vbak, wa_vbap, wa_vbfa.
ENDIF.
ENDLOOP.
IF NOT gt_final[] IS INITIAL.
SORT gt_final BY vbeln posnr.
LOOP AT gt_final INTO wa_final.
WRITE: / wa_final-vbeln,
wa_final-posnr,
wa_final-erdat,
wa_final-vbelv,
wa_final-posnv.
ENDLOOP.
ENDIF.
‎2007 Aug 07 7:13 AM
Hi Zafeer,
There should be some kind of a relationship between these 5 tables to be moved into a single table and I thing it would be difficuilt to get relationship between 5 diff tables. You would end up creating more int. tables.
It would be easier if u could give live example
Thnks
S S K
Message was edited by:
S S K
‎2007 Aug 07 7:15 AM
Hi,
You need to find out one maintable which you can loop through.
So LOOP that table.
In the loop, READ from other tables and push the required fields on to a workarea of type Final table's line type.
Then after the last READ APPEND the workarea to Final table.
Regards,
Sesh
‎2007 Aug 07 7:15 AM
‎2007 Aug 07 7:16 AM
Here is a sample code which combines SPFLI and SFLIGHT into OUTTAB....SPFLI and SFLIGHT has CARRID, CONNID in common to establish the relation ship....
DATA: BEGIN OF fs_spfli,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
END OF fs_spfli.
DATA: BEGIN OF fs_sflight,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
END OF fs_sflight.
DATA: BEGIN OF fs_outtab,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
fldate TYPE sflight-fldate,
price TYPE sflight-price,
END OF fs_outtab.
DATA: t_spfli LIKE STANDARD TABLE OF fs_spfli,
t_sflight LIKE STANDARD TABLE OF fs_sflight,
t_outtab LIKE STANDARD TABLE OF fs_outtab.
START-OF-SELECTION.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE t_spfli.
END-OF-SELECTION.
SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE t_sflight.
LOOP AT t_sflight INTO fs_sflight.
READ TABLE t_spfli INTO fs_spfli with key carrid = fs_sflight-carrid
.
IF sy-subrc EQ 0.
MOVE fs_spfli-carrid TO fs_outtab-carrid.
MOVE fs_spfli-connid TO fs_outtab-connid.
MOVE fs_spfli-countryfr TO fs_outtab-countryfr.
MOVE fs_sflight-fldate TO fs_outtab-fldate.
MOVE fs_sflight-price TO fs_outtab-price.
APPEND fs_outtab TO t_outtab.
ENDIF.
CLEAR fs_spfli.
CLEAR fs_sflight.
ENDLOOP.
Regards,
Pavan
‎2007 Aug 07 7:17 AM
Hi Zafeer,
Check this code, i did this for two itab.
&----
*& Report ZAZUIJOIN *
*& *
&----
*& *
*& *
&----
REPORT ZAZUIJOIN .
TABLES: EKPO, EKKO.
DATA: BEGIN OF ITAB1 OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
END OF ITAB1.
DATA: BEGIN OF ITAB2 OCCURS 0,
EBELN LIKE EKKO-EBELN,
LIFNR LIKE EKKO-LIFNR,
BUKRS LIKE EKKO-EBELN,
END OF ITAB2.
FINAL OUTPUT ITAB *************
DATA: BEGIN OF ITAB3 OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
LIFNR LIKE EKKO-LIFNR,
BUKRS LIKE EKKO-BUKRS,
END OF ITAB3.
SELECT-OPTIONS: S_EBELN FOR EKPO-EBELN.
********************USING NORMAL SELECT QUERY*******************
*SELECT ebeln ebelp matnr FROM ekpo INTO TABLE itab1
*WHERE ebeln IN s_ebeln.
*
*SELECT ebeln lifnr bukrs FROM ekko INTO TABLE itab2
*WHERE ebeln IN s_ebeln.
*************************************************************
*********************USING FOR ALL ENTRIES***********************
SELECT EBELN EBELP MATNR INTO TABLE ITAB1 FROM EKPO
WHERE EBELN IN S_EBELN.
IF NOT ITAB1[] IS INITIAL.
SELECT EBELN LIFNR BUKRS INTO TABLE ITAB2 FROM EKKO
FOR ALL ENTRIES IN ITAB1
WHERE EBELN = ITAB1-EBELN.
ENDIF.
**************************************************************
**************************USING INNER JOIN************************
*SELECT ekpoebeln ekpoebelp ekpo~matnr
ekkolifnr ekkobukrs INTO CORRESPONDING FIELDS OF TABLE itab3
FROM ekpo INNER JOIN ekko ON ekpoebeln = ekkoebeln
WHERE ekpo~ebeln IN s_ebeln.
***************************************************************
LOOP AT ITAB1.
READ TABLE ITAB2 WITH KEY
EBELN = ITAB1-EBELN.
ITAB3-EBELN = ITAB1-EBELN.
ITAB3-EBELP = ITAB1-EBELP.
ITAB3-MATNR = ITAB1-MATNR.
ITAB3-LIFNR = ITAB2-LIFNR.
ITAB3-BUKRS = ITAB2-BUKRS.
APPEND ITAB3.
ENDLOOP.
LOOP AT ITAB3.
WRITE : / SY-VLINE,
ITAB3-EBELN, SY-VLINE,
ITAB3-EBELP, SY-VLINE,
ITAB3-MATNR, SY-VLINE,
ITAB3-LIFNR, SY-VLINE,
ITAB3-BUKRS, SY-VLINE.
ENDLOOP.
<b>Regards,
Jackie.</b>
null
‎2007 Aug 07 7:31 AM
Hello Zafeer,
Im guessing that your final table it_final will have all the required fields
if u want all the first records of the tables to go to the first record of it_final and all the second records to the second record to it_final etc, then use this code
loop at it_1.
move-corresponding it_1 to it_final.
read table it_2 index sy-tabix.
move-corresponding it_2 to it_final.
read table it_3 index sy-tabix.
move-corresponding it_3 to it_final.
..
..
append it_final.
endloop.
‎2007 Aug 07 8:03 AM
Hi all,
Thanks for ur replies....
heres my question more clearly..
I have
TYPES : BEGIN OF ty_output,
ebeln TYPE ebeln, " PO number
mng02 TYPE mng06, " PO commitment amount
belnr TYPE belnr_d, " SAP document number (invoice)
menge_p TYPE menge_d, " Price per quantity at invoice level
bprme TYPE bbprm, " Price per quantity at PO level
menge_i TYPE menge_d, " Invoiced quantity
menge_d TYPE menge_d, " Delivered quantity
ktmng TYPE ktmng, " PO quantity
diff_qty_i TYPE menge_d, " Diff between invoiced quan & delivered quan
diff_qty_p TYPE menge_d, " Diff between delivered quan & PO Quant
END OF ty_output,
ty_output_t TYPE STANDARD TABLE OF ty_output,
*Table type to get values from RBKP
BEGIN OF ty_rbkp,
belnr TYPE re_belnr, " Document number of an invoice document
gjahr TYPE gjahr, " Fiscal Year
budat TYPE budat,
END OF ty_rbkp,
ty_rbkp_t TYPE STANDARD TABLE OF ty_rbkp,
*Table type to get values from RSEG
BEGIN OF ty_rseg,
belnr TYPE belnr_d, " Accounting Document Number
ebeln TYPE ebeln, " Purchasing Document Number
ebelp TYPE ebelp, " Item Number of Purchasing Document
menge TYPE menge_d, " Quantity
bprme TYPE bbprm, " Order price unit
gjahr TYPE gjahr,
END OF ty_rseg,
ty_rseg_t TYPE STANDARD TABLE OF ty_rseg,
*Table type to get values from EKPO
BEGIN OF ty_ekpo,
bprme TYPE bbprm, " Order Price Unit (Purchasing)
ktmng TYPE ktmng, " Target quantity
menge TYPE bstmg, " Purchase order quantity
ebeln TYPE ebeln, " Purchasing Document Number
END OF ty_ekpo,
ty_ekpo_t TYPE STANDARD TABLE OF ty_ekpo,
*Table type to get values from EKET
BEGIN OF ty_eket,
ebeln TYPE ebeln, " Purchasing Document Number
mng02 TYPE mng06, " Committed quantity
END OF ty_eket,
ty_eket_t TYPE STANDARD TABLE OF ty_eket,
*Table type to get values from EKBE
BEGIN OF ty_ekbe,
belnr TYPE mblnr, " Number of Material Document
menge TYPE menge_d, " Quantity
ebeln TYPE ebeln, " Purchasing Document Number
ebelp TYPE ebelp,
END OF ty_ekbe,
ty_ekbe_t TYPE STANDARD TABLE OF ty_ekbe,
*Table type to get values from MSEG
BEGIN OF ty_mseg,
menge TYPE menge_d, " Quantity
lsmng TYPE lsmng, " Quantity in unit of measure from delivery note
mblnr TYPE mblnr,
END OF ty_mseg,
ty_mseg_t TYPE STANDARD TABLE OF ty_mseg.
I have pulled out records from the tables from db tables...,
now how to populate to final table..
Thanks in adv..
Zaf
‎2007 Aug 07 8:23 AM
Hi,
Refer to my code as follows:
SELECT QMNUM
IWERK
EQUNR
BTPLN
AUSWK
INGRP
QMDAB
BEZDT
TPLNR
SWERK
MSGRP
FROM VIQMEL INTO TABLE ITABMEL
WHERE IWERK = 'M011' and
AUSWK = 'A' and
INGRP = 'SLM' and
QMDAB NE '00000000' and
BEZDT GE SDATE-LOW and BEZDT LE SDATE-HIGH and
SWERK IN S_WERK.
IF SY-SUBRC = 0.
SELECT QMNUM MNGRP MNCOD FROM QMMA
INTO CORRESPONDING FIELDS OF TABLE ITABMA
FOR ALL ENTRIES IN ITABMEL
WHERE QMNUM = ITABMEL-QMNUM and
MNGRP = 'RESTLT01' and
MNCOD = '0350'.
SORT ITABMA BY QMNUM.
LOOP AT ITABMEL.
READ TABLE ITABMA WITH KEY QMNUM = ITABMEL-QMNUM BINARY
SEARCH.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING ITABMA TO ITABMEL.
MODIFY ITABMEL TRANSPORTING QMNUM.
ENDIF.
ENDLOOP.
SELECT TPLNR PLTXT FROM IFLO
INTO CORRESPONDING FIELDS OF TABLE ITABLO
FOR ALL ENTRIES IN ITABMEL
WHERE TPLNR = ITABMEL-TPLNR.
SORT ITABLO BY TPLNR.
LOOP AT ITABMEL.
READ TABLE ITABLO WITH KEY TPLNR = ITABMEL-TPLNR BINARY
SEARCH.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING ITABLO TO ITABMEL.
MODIFY ITABMEL TRANSPORTING PLTXT.
ENDIF.
ENDLOOP.
SELECT QMNUM
URKAT
URGRP
URCOD FROM QMUR
INTO CORRESPONDING FIELDS OF TABLE ITABMUR
FOR ALL ENTRIES IN ITABMEL
WHERE QMNUM = ITABMEL-QMNUM.
SORT ITABMUR BY QMNUM.
LOOP AT ITABMEL.
READ TABLE ITABMUR WITH KEY QMNUM = ITABMEL-QMNUM
BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING ITABMUR TO ITABMEL.
MODIFY ITABMEL TRANSPORTING URKAT URGRP URCOD.
ENDIF.
ENDLOOP.
SELECT KATALOGART
CODEGRUPPE
CODE
KURZTEXT FROM QPCT
INTO CORRESPONDING FIELDS OF TABLE ITABPCT
FOR ALL ENTRIES IN ITABMEL
WHERE KATALOGART = ITABMEL-URKAT and
CODEGRUPPE = ITABMEL-URGRP and
CODE = ITABMEL-URCOD.
SORT ITABPCT BY KATALOGART CODEGRUPPE CODE.
LOOP AT ITABMEL.
READ TABLE ITABPCT WITH KEY KATALOGART = ITABMEL-URKAT
CODEGRUPPE = ITABMEL-URGRP
CODE = ITABMEL-URCOD
BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE-CORRESPONDING ITABPCT TO ITABMEL.
MODIFY ITABMEL TRANSPORTING KURZTEXT.
ENDIF.
ENDLOOP.
SELECT OBJEK ATINN ATFLV FROM AUSP
INTO CORRESPONDING FIELDS OF TABLE ITABUSP
FOR ALL ENTRIES IN ITABMEL
WHERE OBJEK = ITABMEL-EQUNR and
ATINN = '0000000190'.
SORT ITABUSP BY OBJEK.
LOOP AT ITABMEL.
READ TABLE ITABUSP WITH KEY OBJEK = ITABMEL-EQUNR
BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE ITABUSP-ATFLV TO ITABMEL-ATFLV1.
MODIFY ITABMEL TRANSPORTING ATFLV1.
ENDIF.
CLEAR ITABUSP.
ENDLOOP.
SELECT OBJEK ATINN ATWRT FROM AUSP
INTO CORRESPONDING FIELDS OF TABLE ITABWRT
FOR ALL ENTRIES IN ITABMEL
WHERE OBJEK = ITABMEL-EQUNR and
ATINN = '0000000191'.
SORT ITABWRT BY OBJEK.
LOOP AT ITABMEL.
READ TABLE ITABWRT WITH KEY OBJEK = ITABMEL-EQUNR
BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE ITABWRT-ATWRT TO ITABMEL-ATWRT2.
MODIFY ITABMEL TRANSPORTING ATWRT2.
ENDIF.
CLEAR ITABWRT.
ENDLOOP.
SELECT OBJEK ATINN ATFLV FROM AUSP
INTO CORRESPONDING FIELDS OF TABLE ITABUSP
FOR ALL ENTRIES IN ITABMEL
WHERE OBJEK = ITABMEL-EQUNR and
ATINN = '0000000193'.
SORT ITABUSP BY OBJEK.
LOOP AT ITABMEL.
READ TABLE ITABUSP WITH KEY OBJEK = ITABMEL-EQUNR
BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE ITABUSP-ATFLV TO ITABMEL-ATFLV3.
MODIFY ITABMEL TRANSPORTING ATFLV3.
ENDIF.
CLEAR ITABUSP.
ENDLOOP.
SELECT OBJEK ATINN ATWRT FROM AUSP
INTO CORRESPONDING FIELDS OF TABLE ITABWRT
FOR ALL ENTRIES IN ITABMEL
WHERE OBJEK = ITABMEL-EQUNR and
ATINN = '0000000194'.
SORT ITABWRT BY OBJEK.
LOOP AT ITABMEL.
READ TABLE ITABWRT WITH KEY OBJEK = ITABMEL-EQUNR
BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE ITABWRT-ATWRT TO ITABMEL-ATWRT4.
MODIFY ITABMEL TRANSPORTING ATWRT4.
ENDIF.
CLEAR ITABWRT.
ENDLOOP.
hope this helps.
Reward if helpful.
Regards,
Sipra
‎2007 Aug 07 8:09 AM
Hi,
Please see my example below so you can have an idea on how to move to another internal
table.
Hope it helps...
P.S. Please award points if it helps...
REPORT z_aris_test_4
NO STANDARD PAGE HEADING.
TYPES: BEGIN OF t_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
END OF t_vbak.
TYPES: BEGIN OF t_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
END OF t_vbap.
TYPES: BEGIN OF t_vbfa,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
END OF t_vbfa.
TYPES: BEGIN OF t_final,
vbeln TYPE vbak-vbeln,
posnr TYPE vbap-posnr,
erdat TYPE vbak-erdat,
vbelv TYPE vbfa-vbelv,
posnv TYPE vbfa-posnv,
END OF t_final.
DATA: gt_vbak TYPE STANDARD TABLE OF t_vbak,
gt_vbap TYPE STANDARD TABLE OF t_vbap,
gt_vbfa TYPE STANDARD TABLE OF t_vbfa,
gt_final TYPE STANDARD TABLE OF t_final.
DATA: wa_vbak LIKE LINE OF gt_vbak,
wa_vbap LIKE LINE OF gt_vbap,
wa_vbfa LIKE LINE OF gt_vbfa,
wa_final LIKE LINE OF gt_final.
SELECT vbeln erdat
FROM vbak
INTO TABLE gt_vbak.
IF NOT gt_vbak[] IS INITIAL.
SELECT vbeln posnr
FROM vbap
INTO TABLE gt_vbap
FOR ALL ENTRIES IN gt_vbak
WHERE vbeln = gt_vbak-vbeln.
ENDIF.
IF NOT gt_vbak[] IS INITIAL.
SELECT vbelv posnv
FROM vbfa
INTO TABLE gt_vbfa
FOR ALL ENTRIES IN gt_vbak
WHERE vbelv = gt_vbak-vbeln.
ENDIF.
SORT gt_vbak BY vbeln ASCENDING.
SORT gt_vbap ASCENDING BY vbeln posnr.
SORT gt_vbfa BY vbelv ASCENDING.
LOOP AT gt_vbap INTO wa_vbap.
READ TABLE gt_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE gt_vbfa INTO wa_vbfa WITH KEY vbelv = wa_vbak-vbeln BINARY SEARCH.
ENDIF.
IF sy-subrc = 0.
MOVE wa_vbap-vbeln TO wa_final-vbeln.
MOVE wa_vbap-posnr TO wa_final-posnr.
MOVE wa_vbak-erdat TO wa_final-erdat.
MOVE wa_vbfa-vbelv TO wa_final-vbelv.
MOVE wa_vbfa-posnv TO wa_final-posnv.
APPEND wa_final TO gt_final.
CLEAR: wa_vbak, wa_vbap, wa_vbfa.
ENDIF.
ENDLOOP.
IF NOT gt_final[] IS INITIAL.
SORT gt_final BY vbeln posnr.
LOOP AT gt_final INTO wa_final.
WRITE: / wa_final-vbeln,
wa_final-posnr,
wa_final-erdat,
wa_final-vbelv,
wa_final-posnv.
ENDLOOP.
ENDIF.