Application Development 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: 

problem of using formula in select join statement

Former Member
0 Kudos

I would like to use following statement but I can not.(do you have an example of an statement where this wuld work):

SELECT

lipsprodh sum(lipslfimg * lipsumvkz / lipsumvkn) sum(lipsvolum) lipsvtweg likp~wadat_ist

INTO CORRESPONDING

FIELDS OF TABLE itab FROM

lips

JOIN likp

ON lipsvbeln = likpvbeln

WHERE lips~vkorg = '0200'.

3 REPLIES 3

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

Unfortunately, you can not do such calculations inside of a SELECT statement. You must first retrieve the records into an internal table, then LOOP the internal table and do the calculation.

Regards,

RIch Heilman

Former Member
0 Kudos

Hi Tina,

If you want to avoid LOOP you can use the following codes:

DATA: BEGIN OF itab OCCURS 0,

prodh LIKE lips-prodh,

lfimg LIKE lips-lfimg,

umvkz LIKE lips-umvkz,

umvkn LIKE lips-umvkn,

volum LIKE lips-volum,

vtweg LIKE lips-vtweg,

wadat_ist LIKE likp-wadat_ist,

END OF itab.

SELECT lipsprodh lipslfimg lipsumvkz lipsumvkn lipsvolum lipsvtweg

likp~wadat_ist

INTO CORRESPONDING FIELDS OF itab

FROM lips

JOIN likp

ON lipsvbeln = likpvbeln

WHERE vkorg = '0200'.

itab-lfimg = itab-lfimg * itab-umvkz / itab-umvkn.

CLEAR : itab-umvkz, itab-umvkn.

COLLECT itab.

ENDSELECT.

Rgds,

HN

Former Member
0 Kudos

Hi ,

types: BEGIN OF s_itab ,

prodh LIKE lips-prodh,

lfimg LIKE lips-lfimg,

umvkz LIKE lips-umvkz,

umvkn LIKE lips-umvkn,

volum LIKE lips-volum,

vtweg LIKE lips-vtweg,

wadat_ist LIKE likp-wadat_ist,

END OF s_itab.

DATA : temp type p decimal 2 ,

temp1 type p decimal 2 ,

temp2 type p decimal 2 ,

itab type table of s_itab ,

wt_tab type s_itab .

SELECT lips~prodh

lips~lfimg

lips~umvkz

lips~umvkn

lips~volum

lips~vtweg

likp~wadat_ist

INTO CORRESPONDING FIELDS OF TABLE itab

FROM ( lips INNER JOIN likp ON lipsvbeln = likpvbeln )

WHERE lips~vkorg = '0200'.

loop at itab inro wt_tab .

temp = ( wt_tab-lfimg * wt_tab-umvkz ) / lips~umvkn .

temp1 = temp1 + temp .

temp2 = temp2 + wt_tab .

endloop.

Hope it helped you .

Message was edited by:

Lakshminarayanan rohini