‎2007 Apr 01 3:13 AM
Hi friends,
below is a sample code
i need to transfer the data from 3 internal tables to my target table i.e. t_main so that my output has 6 consecutive fields of t_main.
TABLES : KNA1 , VBAK, VBAP.
DATA :T_KNA1 TYPE KNA1
OCCURS 1 WITH HEADER LINE.
DATA :T_VBAK TYPE VBAK
OCCURS 1 WITH HEADER LINE.
DATA :T_VBAP TYPE VBAP
OCCURS 1 WITH HEADER LINE.
DATA : BEGIN OF T_MAIN OCCURS 1,
KUNNR TYPE KUNNR,
NAME1 TYPE NAME1,
VBELN TYPE VBELN,
ERDAT TYPE ERDAT,
POSNR TYPE POSNR,
ARKTX TYPE ARKTX,
END OF T_MAIN.
SELECT KUNNR NAME1 FROM KNA1 INTO
CORRESPONDING FIELDS OF TABLE T_KNA1.
SELECT VBELN ERDAT FROM VBAK INTO
CORRESPONDING FIELDS OF TABLE T_VBAK.
SELECT POSNR ARKTX FROM VBAP INTO
CORRESPONDING FIELDS OF TABLE T_VBAP.
regards
Rishikesh
‎2007 Apr 01 3:14 AM
Hi..,
u need to use the READ TABLE statement for this !!!!!
<b>*****************************************************
its better if u use a Join here .. then no need of these three select statements !!!! just one select statement
select
vbak~vbeln
vbak~erdat
vbak~kunnr
kna1~name1
vbap~posnr
vbap~arktx
from vbak as vbak inner join kna1 as kna1
on vbakkunnr eq kna1kunnr
inner join vbap as vbap
on vbakvbeln eq vbapvbeln
into corresponding fields of table t_main.
This single select statement is enough . u can get all the data into your main table i.e t_main.
other wise .....
</b>
in ur case the second select statement should be
SELECT VBELN ERDAT <b>KUNNR</b> FROM VBAK INTO
CORRESPONDING FIELDS OF TABLE T_VBAK.
loop at t_vbak.
t_main-vbeln = t_vbak-vbeln.
t_main-erdat = t_vbak-erdat.
read table t_kna1 with key kunnr = t_vbak-kunnr.
if sy-subrc eq 0.
t_main-kunnr = t_kna1-kunnr.
t_main-name1 = t_kna1-name1.
endif.
loop at t_vbap where vbeln = t_vbak-vbeln.
t_main-posnr = t_vbap-posnr.
t_main-arktx = t_vbap-arktx.
endloop.
APPEND T_MAIN.
endloop.
reward points if it helps u.......
sai ramesh
‎2007 Apr 01 3:14 AM
Hi..,
u need to use the READ TABLE statement for this !!!!!
<b>*****************************************************
its better if u use a Join here .. then no need of these three select statements !!!! just one select statement
select
vbak~vbeln
vbak~erdat
vbak~kunnr
kna1~name1
vbap~posnr
vbap~arktx
from vbak as vbak inner join kna1 as kna1
on vbakkunnr eq kna1kunnr
inner join vbap as vbap
on vbakvbeln eq vbapvbeln
into corresponding fields of table t_main.
This single select statement is enough . u can get all the data into your main table i.e t_main.
other wise .....
</b>
in ur case the second select statement should be
SELECT VBELN ERDAT <b>KUNNR</b> FROM VBAK INTO
CORRESPONDING FIELDS OF TABLE T_VBAK.
loop at t_vbak.
t_main-vbeln = t_vbak-vbeln.
t_main-erdat = t_vbak-erdat.
read table t_kna1 with key kunnr = t_vbak-kunnr.
if sy-subrc eq 0.
t_main-kunnr = t_kna1-kunnr.
t_main-name1 = t_kna1-name1.
endif.
loop at t_vbap where vbeln = t_vbak-vbeln.
t_main-posnr = t_vbap-posnr.
t_main-arktx = t_vbap-arktx.
endloop.
APPEND T_MAIN.
endloop.
reward points if it helps u.......
sai ramesh
‎2007 Apr 01 3:46 AM
hi ramesh,
thanks for ur reply..
but nested loop is not suggested!!!!!!
anyway i got the logic.
happy abaping
bye
‎2007 Apr 01 3:59 AM
Though this question is answered any fresh ideas are welcomed
regards
Rishikesh