‎2009 Mar 25 4:18 PM
Hi Experts,
I have a following query in a loop.
LOOP AT it_ekpo.
CLEAR: wrk_invmenge.
SELECT * FROM ekbe
WHERE ebeln = it_ekpo-ebeln
AND ebelp = it_ekpo-ebelp
and budat in bldat_i
AND vgabe = '2'. " for inv based entries
IF ekbe-shkzg = 'H'.
ekbe-menge = ekbe-menge * ( -1 ).
ENDIF.
wrk_invmenge = wrk_invmenge + ekbe-menge.
ENDSELECT.
Now , I want to put this select query like this
if not it_ekpo is initial.
SELECT * FROM ekbe into table it_ekbe
WHERE ebeln = it_ekpo-ebeln
AND ebelp = it_ekpo-ebelp
AND vgabe = '2'. " for inv based entries
endif.
Now , I am reading this internal table it_ekbe and I am not sure how acheive to following condition .
IF ekbe-shkzg = 'H'.
ekbe-menge = ekbe-menge * ( -1 ).
ENDIF.
wrk_invmenge = wrk_invmenge + ekbe-menge.
ENDSELECT.
‎2009 Mar 25 4:23 PM
HI,
SELECT * FROM ekbe into table it_ekbe
FOR ALL ENTRIES IN it_ekpo
WHERE ebeln = it_ekpo-ebeln
AND ebelp = it_ekpo-ebelp
AND vgabe = '2'. " for inv based entries
LOOP at it_ekpo.
READ TABLE it_ekbe with key ebeln = it_ekpo-ebeln
ebelp = it_ekpo-ebelp.
IF SY_SUBRC EQ 0.
IF it_ekbe-shkzg = 'H'.
ekbe-menge = ekbe-menge * ( -1 ).
ENDIF.
ENDIF.
ENDLOOP.
‎2009 Mar 25 5:10 PM
Hi ,
i guess this is little wrong,, Instead the logic is as below
SELECT * FROM ekbe into table it_ekbe
FOR ALL ENTRIES IN it_ekpo
WHERE ebeln = it_ekpo-ebeln
AND ebelp = it_ekpo-ebelp
AND vgabe = '2'. " for inv based entries
LOOP at it_ekpo.
loop at it_ekbe where ebeln = it_ekpo-ebeln
ebelp = it_ekpo-ebelp.
IF it_ekbe-shkzg = 'H'.
ekbe-menge = ekbe-menge * ( -1 ).
ENDIF.
wrk_invmenge = wrk_invmenge + ekbe-menge.
Endloop.
clear variables.
ENDLOOP.
Hope this helps you
Raj
‎2009 Mar 25 6:10 PM