2008 Jan 23 8:18 AM
Hi all,
I used the code
SELECT aufnr bwart SUM( erfmg ) INTO TABLE qty FROM mseg WHERE bwart = '101' OR bwart = '102' GROUP BY aufnr bwart.
and im getting the output like this
order no movementtype quantity
1000400 101 5
1000400 102 2
1000401 101 10
1000402 101 4
i want the another output like this
if the same order no has both the movement type 101, 102
it should subtract the value
ie.
order no quantity
1000400 3 ( 5 - 2 )
otherwise if it has only one movement type 101
i should get
order no quantity
1000401 10
the over all output should be
order no quantity
1000400 3
1000401 10
1000402 4
Please send me the logic coding for this
Thanks,
Azhar
Hi,
The requirement can be done using Conrol statements only. Initialy get the data from MSEG table into internal table (itab) and use control statement.
Check the below logic:
SELECT aufnr bwart erfmg INTO TABLE itab FROM mseg WHERE bwart = '101' OR bwart = '102' .
Sort itab BY aufnr bwart.
Loop at itab.
AT NEW bwart.
If itab-bwart = :101:.
sum = sum + itab-erfmg.
else.
sum = sum - itab-erfmg.
endif.
END AT.
AT END OF aufnr.
itab1-aufnr = itab-aufnr.
itab1-qty = sum.
Append itab1.
Clear: itab1, sum.
ENDAT.
Endloop.
2008 Jan 23 8:27 AM
you should use control break command
AT NEW <ORDER NO.>
then u need to have logic of substraction of the movements
then write statement.
ENDAT.
PLZ REWARD IF USEFUL
regards
vivek
2008 Jan 23 8:30 AM
Hi Azhar
loop at itab.
at first.
gv_orderno = itab-orderno.
gv_quantity = itab-quantity.
endat.
at new movementtype.
if itab-orderno. = gv_orderno.
itab1-quantity = itab-quantity-gv_quantity.
itab1-movementtype = itab-movementtype.
itab1-orderno. = itab-orderno.
append itab1.
endat.
clear gv_orderno., quantity.
gv_orderno = itab-orderno.
gv_quantity = itab-quantity.
endloop.
I dont know if this code helps..pls try this way..iam in a hurry..best of luck mate..
Cheers
Shakir
2008 Jan 23 8:34 AM
2008 Jan 23 8:45 AM
declare 2 variables a(1) type c,b like menge.
sort qty by aufnr bwart.
loop at qty.
at end of bwart. "(means at end of aufnr bwart combi)
if a = 'X'.
move qty-menge to b.
else.
subtract b from qty-menge.
endif.
endat.
at new aufnr.
clear: a,b.
endat.
modift qty.
endloop.
2008 Jan 23 8:46 AM
AZAR,
For Ex :
You have internal table itab having the below records.
order no movementtype quantity
1000400 101 5
1000400 102 2
1000401 101 10
1000402 101 4
DATA : v_num type i ,
v_char
SORT itab BY order no movementtype decending.
LOOP AT itab.
v_num = v_num + 1.
IF v_num > 1.
ON CHANGE OF itab-order no.
v_char = 'X'.
ENDON.
ENDIF.
ENDLOOP.
IF v_char NE 'X'.
itab-order no = v_num -itab-order no.
MODIFY itab transporting order no.
ENDIF.
Don't forget to reward if useful.....
2008 Jan 23 8:47 AM
Hi,
The requirement can be done using Conrol statements only. Initialy get the data from MSEG table into internal table (itab) and use control statement.
Check the below logic:
SELECT aufnr bwart erfmg INTO TABLE itab FROM mseg WHERE bwart = '101' OR bwart = '102' .
Sort itab BY aufnr bwart.
Loop at itab.
AT NEW bwart.
If itab-bwart = :101:.
sum = sum + itab-erfmg.
else.
sum = sum - itab-erfmg.
endif.
END AT.
AT END OF aufnr.
itab1-aufnr = itab-aufnr.
itab1-qty = sum.
Append itab1.
Clear: itab1, sum.
ENDAT.
Endloop.
| User | Count |
|---|---|
| 6 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |