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
413

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
386

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

3 REPLIES 3
Read only

Former Member
0 Likes
387

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

Read only

0 Likes
386

hi ramesh,

thanks for ur reply..

but nested loop is not suggested!!!!!!

anyway i got the logic.

happy abaping

bye

Read only

Former Member
0 Likes
386

Though this question is answered any fresh ideas are welcomed

regards

Rishikesh