02-25-2010 12:07 PM
Dear Experts,
Please have a look on the below code and advice me what wen wrong as
at new and at end of statement not working, please advice.
LOOP AT I_FINAL INTO S_FINAL.
AT NEW KUNRG.
SELECT NAME1 FROM KNA1 INTO S_NAME WHERE KUNNR = S_FINAL-KUNRG.
ENDSELECT.
SKIP.
WRITE :/10 'Customer Name :', S_NAME,
'Code : ', S_FINAL-KUNRG.
WRITE :/10 'For the period from ', S_DATE-LOW,
' To ', S_DATE-HIGH.
SKIP.
WRITE AT 5(95) SY-ULINE.
SKIP.
WRITE :/10 'Serial',
20 'Billing',
32 'Invoice',
46 'Invoice',
66 'Invoice'.
WRITE :/10 ' No. ',
20 ' No. ',
32 'Number',
46 ' Date ',
66 'Amount '.
SKIP.
WRITE AT 5(95) SY-ULINE.
G_SI_NUM = 0.
ENDAT.
G_SI_NUM = G_SI_NUM + 1.
WRITE: /05 G_SI_NUM,
17 S_FINAL-VBELN,
29 S_FINAL-EXNUM NO-ZERO,
43 S_FINAL-FKDAT,
55 S_FINAL-NETWR RIGHT-JUSTIFIED.
SKIP.
AT END OF KUNRG.
SUM.
WRITE AT 5(95) SY-ULINE.
WRITE :/17 'Total',
55 S_FINAL-NETWR RIGHT-JUSTIFIED.
SKIP.
WRITE AT 5(95) SY-ULINE.
ENDAT.
ENDLOOP.
Its calculating every single vbeln as new field and taking the total for each vbeln
but I need total for each ( Kunrg ) Customer.
Please advice
Karthik
02-25-2010 12:21 PM
your itab must be defined as follows:
data: begin of S_FINAL occurs 0,
kunrg type kna1-kunnr,
VBELN type bseg-VBELN,
....
A.
02-25-2010 12:16 PM
Hi,
data : sum1 type vbrk-NETWR.
LOOP AT I_FINAL INTO S_FINAL.
AT NEW KUNRG.
SELECT NAME1 FROM KNA1 INTO S_NAME WHERE KUNNR = S_FINAL-KUNRG.
ENDSELECT.
SKIP.
WRITE :/10 'Customer Name :', S_NAME,
'Code : ', S_FINAL-KUNRG.
WRITE :/10 'For the period from ', S_DATE-LOW,
' To ', S_DATE-HIGH.
SKIP.
WRITE AT 5(95) SY-ULINE.
SKIP.
WRITE :/10 'Serial',
20 'Billing',
32 'Invoice',
46 'Invoice',
66 'Invoice'.
WRITE :/10 ' No. ',
20 ' No. ',
32 'Number',
46 ' Date ',
66 'Amount '.
SKIP.
WRITE AT 5(95) SY-ULINE.
G_SI_NUM = 0.
ENDAT.
G_SI_NUM = G_SI_NUM + 1.
WRITE: /05 G_SI_NUM,
17 S_FINAL-VBELN,
29 S_FINAL-EXNUM NO-ZERO,
43 S_FINAL-FKDAT,
55 S_FINAL-NETWR RIGHT-JUSTIFIED.
SKIP.
sum1 = sum1 + S_FINAL-NETWR .
AT END OF KUNRG.
WRITE AT 5(95) SY-ULINE.
WRITE :/17 'Total',
55 sum1 RIGHT-JUSTIFIED.
SKIP.
WRITE AT 5(95) SY-ULINE.
clear sum1.
ENDAT.
ENDLOOP.
02-25-2010 12:16 PM
02-25-2010 12:19 PM
02-25-2010 12:21 PM
your itab must be defined as follows:
data: begin of S_FINAL occurs 0,
kunrg type kna1-kunnr,
VBELN type bseg-VBELN,
....
A.
02-25-2010 12:26 PM
Wow....its working fine now !!
Thank u , please can u adivce me what is the logic behind this !!
02-25-2010 1:07 PM
Hi Karthik,
The logic behid this is,
When you declare a Internal table and you are using it for subsequent statemnets like At new and At end.
The fileds should be in a order i.e first field should be repeated for other line items.and if the combination breaks then the pointers goes into At new.
A B C
1 1 2
1 1 2
1 2 2
1 2 3
2 1 2
AT NEW <FIELD>
fn1..
ENDAT
When I say At new of 'A' then fn1 execute at line 5 -Only depends on First field
When I say At new of 'B' then fn1 execute at line 3 and line 5 -Depends on FIrst field and Second Field
When I say At new of 'C' then fn1 execute at line 3 ,4 and line 5 -Depends on First ,Second and Third Field
Hope this helps.
Regards,
Amit Teja Vutpala