‎2005 Dec 07 4:21 PM
Hi all again,
Iam using th e following code.
LOOP AT i_liste_3 INTO wa_liste_3.
IF sy-tabix = '1'.
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge ).
ELSE.
h_ausch = h_ausch1 * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + h_ausch1 ).
ENDIF.
MODIFY i_liste_3 FROM wa_liste_3.
h_ausch1 = wa_liste_3-ausch.
CLEAR h_ausch.
ON CHANGE OF wa_liste_3-matnr.
move '1' to sy-tabix.
ENDON.
ENDLOOP.
.
this code is working fine for one material.
my requirement is on change of matnr i want to set sy-tabix to 1(but its not working).I tried with using variables no luck.
i have the internal table .
vornr matnr
1800 18
1300 18
1200 18
1800 19
1100 19
900 19.
so for the record 1800 18 i have to use
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge ).
so for remainning records for matnr = 18.
1300 18
1200 18 i have to use
h_ausch = h_ausch1 * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + h_ausch1 ).
again on change of material 19 for the only first record
1800 19 i have to use
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge ).
I hope it is clear.
regards
Chandu.
‎2005 Dec 07 4:26 PM
Try it:
data: v_x type i.
LOOP AT i_liste_3 INTO wa_liste_3.
clear v_x .
ON CHANGE OF wa_liste_3-matnr.
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge ).
v_x = 1.
ENDAT .
if v_x is initial .
h_ausch = h_ausch1 * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + h_ausch1 ).
ENDIF.
MODIFY i_liste_3 FROM wa_liste_3.
h_ausch1 = wa_liste_3-ausch.
CLEAR h_ausch.
ENDLOOP.
‎2005 Dec 07 4:26 PM
Try it:
data: v_x type i.
LOOP AT i_liste_3 INTO wa_liste_3.
clear v_x .
ON CHANGE OF wa_liste_3-matnr.
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge ).
v_x = 1.
ENDAT .
if v_x is initial .
h_ausch = h_ausch1 * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + h_ausch1 ).
ENDIF.
MODIFY i_liste_3 FROM wa_liste_3.
h_ausch1 = wa_liste_3-ausch.
CLEAR h_ausch.
ENDLOOP.
‎2005 Dec 07 4:27 PM
Use the below code....
sort i_liste_3 by matnr.
LOOP AT i_liste_3 INTO wa_liste_3.
at new wa_liste_3-matnr.
move '1' to sy-tabix.
endat.
IF sy-tabix = '1'.
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge ).
ELSE.
h_ausch = h_ausch1 * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + h_ausch1 ).
ENDIF.
MODIFY i_liste_3 FROM wa_liste_3.
h_ausch1 = wa_liste_3-ausch.
CLEAR h_ausch.
ENDLOOP.
This will trigger for evry new material.
Hope this will work for u.
Pl. award appropriate points.
‎2005 Dec 07 4:28 PM
You can use the control statement AT NEW. for what you looking for.
the code between at new <field>...endat. will be executed only if the value of field is a new one from the previous loop pass...(This can be used to do something whenever a new value for the specified field occurs).
Thanks & Regards,
Renjith
‎2005 Dec 07 4:33 PM
Try this.
LOOP AT i_liste_3 INTO wa_liste_3.
IF sy-tabix = '1'.
*-- For the first record only
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge ).
MODIFY i_liste_3 FROM wa_liste_3.
h_ausch1 = wa_liste_3-ausch.
CLEAR h_ausch.
CONTINUE.
ENDIF.
h_ausch = h_ausch1 * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + h_ausch1 ).
MODIFY i_liste_3 FROM wa_liste_3.
h_ausch1 = wa_liste_3-ausch.
CLEAR h_ausch.
ON CHANGE OF wa_liste_3-matnr.
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge ).
MODIFY i_liste_3 FROM wa_liste_3.
h_ausch1 = wa_liste_3-ausch.
CLEAR h_ausch.
CONTINUE.
ENDON.
ENDLOOP.
‎2005 Dec 07 4:35 PM
Hi Sai,
You can use a variable to solve this..
DATA: lv_matnr LIKE mara-matnr.
LOOP AT i_liste_3 INTO wa_liste_3.
<b>* IF sy-tabix = '1'.
IF lv_matnr NE wa_liste_3-matnr.
lv_matnr = wa_liste_3-matnr.</b>
h_ausch = wa_liste_3-menge * ( wa_liste_3-aufak
-aufak / 100 ).
wa_liste_3-ausch = ( h_ausch + wa_liste_3-menge
-menge ).
ELSE.
h_ausch = h_ausch1 * ( wa_liste_3-aufak / 100
/ 100 ).
wa_liste_3-ausch = ( h_ausch + h_ausch1 ).
ENDIF.
MODIFY i_liste_3 FROM wa_liste_3.
h_ausch1 = wa_liste_3-ausch.
CLEAR h_ausch.
<b>* ON CHANGE OF wa_liste_3-matnr.
move '1' to sy-tabix.
ENDON.</b>
ENDLOOP.
Hope this helps..
Sri
‎2005 Dec 07 4:49 PM
Hi all,
Thanks alot once again for spending your valuable time.