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

logic needed

Former Member
0 Likes
821

hi

i have following select statement.

how to move the following field into one internal table

SELECT vbeln vkorg kunag kunnr lfdat wadat lifnr vstel
FROM likp INTO TABLE it_likp
WHERE vbeln in s_vbeln
AND   vstel = p_vstel
AND   werks = p_werks.

if it_likp[] is not initial.
SELECT vbeln werks posnr matnr lfimg erdat ernam meins vgbel lgort
FROM lips INTO TABLE it_lips
FOR ALL ENTRIES IN it_likp
WHERE werks = p_werks
AND   vbeln = it_likp-vbeln.
endif.

if it_lips[] is not initial.
SELECT vbeln bstkd posex_e FROM vbkd
INTO TABLE it_vbkd
FOR ALL ENTRIES IN it_lips
WHERE vbeln = it_lips-vgbel.
endif.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
771
sort : it_lips by vbeln,
        it_vbkd by vbeln.
loop at it_likp.
move-corresponding it_likp into it_output.
read table it_lips with key vbeln = it_likp-vbeln binary search.
move-corrsponding it_lips into it_output.
read table it_vbkd with key vbeln = it_likp-vbeln binary search.
move-corresponding it_vbkd into it_output.
append it_output.
endloop.
7 REPLIES 7
Read only

Former Member
0 Likes
771

Hi,

DATA : BEGIN OF it_likp occurs 0,

vbeln like likp-vbeln,

vkorg like likp-vkorg,

kunag like likp-kunag,

kunnr like likp-kunnr,

lfdat like likp-lfdat,

wadat like likp-wadat,

lifnr like likp-lifnr,

vstel like likp-vstel,

End of it_likp.

DATA : BEGIN OF it_lips occurs 0,

vbeln like lips-vbeln,

werks like lips-werks,

posnr like lips-posnr,

matnr like lips-matnr,

lifmg like lips-lifmg,

erdat like lips-erdat,

ernum like lips-ernum,

meins like lips-meins,

vgbel like lips vgbel,

lgort like lips-lgort,

End of it_lips.

declare like that.

Edited by: narasimha marella on Jun 11, 2008 6:44 AM

Read only

Former Member
0 Likes
772
sort : it_lips by vbeln,
        it_vbkd by vbeln.
loop at it_likp.
move-corresponding it_likp into it_output.
read table it_lips with key vbeln = it_likp-vbeln binary search.
move-corrsponding it_lips into it_output.
read table it_vbkd with key vbeln = it_likp-vbeln binary search.
move-corresponding it_vbkd into it_output.
append it_output.
endloop.
Read only

0 Likes
771

Hi, i think we need to loop LIPS and read the other 2 tables rather that looping LIKP. as there may be many records in LIPS for same del. Doc no in LIKP

Reward Points if useful.

Raj

Read only

Former Member
0 Likes
771

SELECT vbeln vkorg kunag kunnr lfdat wadat lifnr vstel

FROM likp INTO TABLE it_likp

WHERE vbeln in s_vbeln

AND vstel = p_vstel

AND werks = p_werks.

if it_likp[] is not initial.

SELECT vbeln werks posnr matnr lfimg erdat ernam meins vgbel lgort

FROM lips INTO TABLE it_lips

FOR ALL ENTRIES IN it_likp

WHERE werks = p_werks

AND vbeln = it_likp-vbeln.

endif.

if it_lips[] is not initial.

SELECT vbeln bstkd posex_e FROM vbkd

INTO TABLE it_vbkd

FOR ALL ENTRIES IN it_lips

WHERE vbeln = it_lips-vgbel.

endif.

Hi , for this build a final internal table and loop the LIPS table. and Read the other two tables with the keys same as the Where clause.move data and append to final table

reward points

regards

Raj

Read only

Former Member
0 Likes
771

Hi,

You have VBELN as a key field in these three tables.

Try this!

Loop at it_likp into wa_likp.

wa_final-vbeln = wa_likp-vbeln.

wa_final-vkorg = wa_likp-vkorg

wa_final-kunag = wa_likp-kunag.

wa_final-kunnr = wa_likp-kunnr.

wa_final-lfdat = wa_likp-lfdat.

wa_final-wadat = wa_likp-wadat.

wa_final-lifnr = wa_likp-lifnr.

wa_final-vstel = wa_likp-vstel.

read table it_lips into wa_lips with key vbeln = wa_vbeln.

-


move data from wa_lips to final work area.

read table it_vbkd into wa_vbkd with key vbeln = wa_vbeln.

-


move data from wa_lips to final work area.

append wa_final to it_final.

clear : wa_final,wa_lips,wa_likp.

endloop.

Read only

Former Member
0 Likes
771

hi there...

since ur creating thre einternal tables using for all entries, hence, the number of records in the three tables will be same.

so try as per follows

move-corresponding itab3 to itab4.

loop at itab2.

modify itab4 from itab2 where itab4-vbeln eq itab2-vbeln.

endloop.

loop at itab3.

modify itab4 from itab3 where itab4-vbeln eq itab3-vbeln.

endloop.

i hope it helps... get back fr furhter queries.

regards,

Prem Sharma

Read only

Former Member
0 Likes
771

Hi,

You can try this piece of code :

TABLES: likp, lips, vbkd.

TYPES: BEGIN OF wa_likp,

vbeln TYPE likp-vbeln,

vkorg TYPE likp-vkorg,

vstel TYPE likp-vstel,

kunag TYPE likp-kunag,

kunnr TYPE likp-kunnr,

lfdat TYPE likp-lfdat,

wadat TYPE likp-wadat,

lifnr TYPE likp-lifnr,

END OF wa_likp.

TYPES: BEGIN OF wa_lips,

vbeln TYPE lips-vbeln,

werks TYPE lips-werks,

posnr TYPE lips-posnr,

matnr TYPE lips-matnr,

lfimg TYPE lips-lfimg,

erdat TYPE lips-erdat,

ernam TYPE lips-ernam,

meins TYPE lips-meins,

vgbel TYPE lips-vgbel,

lgort TYPE lips-lgort,

END OF wa_lips.

TYPES: BEGIN OF wa_vbkd,

vbeln TYPE vbkd-vbeln,

bstkd TYPE vbkd-bstkd,

posex_e TYPE vbkd-posex_e,

END OF wa_vbkd.

TYPES: BEGIN OF wa_output,

vbeln TYPE likp-vbeln,

vkorg TYPE likp-vkorg,

vstel TYPE likp-vstel,

kunag TYPE likp-kunag,

kunnr TYPE likp-kunnr,

lfdat TYPE likp-lfdat,

wadat TYPE likp-wadat,

lifnr TYPE likp-lifnr,

werks TYPE lips-werks,

posnr TYPE lips-posnr,

matnr TYPE lips-matnr,

lfimg TYPE lips-lfimg,

erdat TYPE lips-erdat,

ernam TYPE lips-ernam,

meins TYPE lips-meins,

vgbel TYPE lips-vgbel,

lgort TYPE lips-lgort,

bstkd TYPE vbkd-bstkd,

posex_e TYPE vbkd-posex_e,

END OF wa_output.

DATA: it_likp TYPE STANDARD TABLE OF wa_likp ,

wa_likp1 LIKE LINE OF it_likp,

it_lips TYPE STANDARD TABLE OF wa_lips ,

wa_lips1 LIKE LINE OF it_lips,

it_vbkd TYPE STANDARD TABLE OF wa_vbkd ,

wa_vbkd1 LIKE LINE OF it_vbkd,

it_output TYPE STANDARD TABLE OF wa_output,

wa_output1 LIKE LINE OF it_output.

PARAMETERS: p_werks TYPE lips-werks,

p_vstel TYPE likp-vstel.

SELECT-OPTIONS: s_vbeln FOR lips-vbeln.

SELECT vbeln

vkorg

vstel

kunag

kunnr

lfdat

wadat

lifnr

FROM likp INTO TABLE it_likp

WHERE vbeln IN s_vbeln

AND vstel = p_vstel

AND werks = p_werks.

IF it_likp[] IS NOT INITIAL.

SELECT vbeln

werks

posnr

matnr

lfimg

erdat

ernam

meins

vgbel

lgort

FROM lips INTO TABLE it_lips

FOR ALL ENTRIES IN it_likp

WHERE werks = p_werks

AND vbeln = it_likp-vbeln.

ENDIF.

IF it_lips[] IS NOT INITIAL.

SELECT vbeln

bstkd

posex_e FROM vbkd

INTO TABLE it_vbkd

FOR ALL ENTRIES IN it_lips

WHERE vbeln = it_lips-vgbel.

ENDIF.

SORT : it_lips BY vbeln,

it_vbkd BY vbeln.

LOOP AT it_likp INTO wa_likp1.

MOVE-CORRESPONDING wa_likp1 TO wa_output1.

READ TABLE it_lips INTO wa_lips1 WITH KEY vbeln = wa_likp1-vbeln BINARY SEARCH.

MOVE-CORRESPONDING wa_lips1 TO wa_output1.

READ TABLE it_vbkd INTO wa_vbkd1 WITH KEY vbeln = wa_likp1-vbeln BINARY SEARCH.

MOVE-CORRESPONDING wa_vbkd1 TO wa_output1.

APPEND wa_output1 TO it_output.

ENDLOOP.

Plz reward if useful

Dhanashri.