‎2009 Mar 27 4:24 PM
I need following output.
job , phase , quantity
100, 9700,60 (sum of hours)
100, 9700,90 (sum of amounts)
200, 9500,10 (sum of hours)
200, 9500,20 (sum of amounts)
200, 9600,10 (sum of hours)
200, 9600,70 (sum of amounts)REPORT x.
TYPES: BEGIN OF t_doc ,
job(10) TYPE c,
phase(10) TYPE c,
hour(6) TYPE c,
amount(10) TYPE c,
END OF t_doc.
DATA: it_doc TYPE STANDARD TABLE OF t_doc.
DATA: wa_doc TYPE t_doc.
MOVE '100' TO wa_doc-job.
MOVE '9700' TO wa_doc-phase.
MOVE '10' TO wa_doc-hour.
MOVE '30.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '100' TO wa_doc-job.
MOVE '9700' TO wa_doc-phase.
MOVE '20' TO wa_doc-hour.
MOVE '20.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '100' TO wa_doc-job.
MOVE '9700' TO wa_doc-phase.
MOVE '30' TO wa_doc-hour.
MOVE '40.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '200' TO wa_doc-job.
MOVE '9500' TO wa_doc-phase.
MOVE '10' TO wa_doc-hour.
MOVE '20.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '200' TO wa_doc-job.
MOVE '9600' TO wa_doc-phase.
MOVE '10' TO wa_doc-hour.
MOVE '70.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '300' TO wa_doc-job.
MOVE '9800' TO wa_doc-phase.
MOVE '30' TO wa_doc-hour.
MOVE '80.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '300' TO wa_doc-job.
MOVE '9900' TO wa_doc-phase.
MOVE '20' TO wa_doc-hour.
MOVE '50.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
WRITE:/10 'Job' , 20 'Phase', 30 'Hour', 50 'Amount'.
ULINE.
LOOP AT it_doc INTO wa_doc.
WRITE:/10 wa_doc-job, 20 wa_doc-phase, 30 wa_doc-hour, 50 wa_doc-amount.
ENDLOOP.
‎2009 Mar 27 4:29 PM
HI,
LOOP AT it_doc INTO wa_doc.
l_hours = l_hours + wa_doc-hour.
l_amount = l_amount + wa_doc-amount.
AT END OF phase.
COnDENSE : l_amount , l_hours.
WRITE:/10 wa_doc-job, 20 wa_doc-phase, 30 l_hours LEFT-JUSTIFIED.
WRITE:/10 wa_doc-job, 20 wa_doc-phase, 30 l_amount LEFT-JUSTIFIED.
CLEAR : l_hours, l_amount.
ENDAT.
ENDLOOP.
‎2009 Mar 27 4:29 PM
HI,
LOOP AT it_doc INTO wa_doc.
l_hours = l_hours + wa_doc-hour.
l_amount = l_amount + wa_doc-amount.
AT END OF phase.
COnDENSE : l_amount , l_hours.
WRITE:/10 wa_doc-job, 20 wa_doc-phase, 30 l_hours LEFT-JUSTIFIED.
WRITE:/10 wa_doc-job, 20 wa_doc-phase, 30 l_amount LEFT-JUSTIFIED.
CLEAR : l_hours, l_amount.
ENDAT.
ENDLOOP.
‎2009 Mar 27 4:36 PM
Hi,
Refer the code below:-
TYPES: BEGIN OF t_doc ,
job(10) TYPE c,
phase(10) TYPE c,
hour TYPE i,
amount TYPE p DECIMALS 2,
END OF t_doc.
DATA: it_doc TYPE STANDARD TABLE OF t_doc.
DATA: wa_doc TYPE t_doc.
MOVE '100' TO wa_doc-job.
MOVE '9700' TO wa_doc-phase.
MOVE '10' TO wa_doc-hour.
MOVE '30.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '100' TO wa_doc-job.
MOVE '9700' TO wa_doc-phase.
MOVE '20' TO wa_doc-hour.
MOVE '20.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '100' TO wa_doc-job.
MOVE '9700' TO wa_doc-phase.
MOVE '30' TO wa_doc-hour.
MOVE '40.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '200' TO wa_doc-job.
MOVE '9500' TO wa_doc-phase.
MOVE '10' TO wa_doc-hour.
MOVE '20.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '200' TO wa_doc-job.
MOVE '9600' TO wa_doc-phase.
MOVE '10' TO wa_doc-hour.
MOVE '70.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '300' TO wa_doc-job.
MOVE '9800' TO wa_doc-phase.
MOVE '30' TO wa_doc-hour.
MOVE '80.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
MOVE '300' TO wa_doc-job.
MOVE '9900' TO wa_doc-phase.
MOVE '20' TO wa_doc-hour.
MOVE '50.00' TO wa_doc-amount.
APPEND wa_doc TO it_doc.
SORT it_doc BY job phase. "<--sort in ascending order w.r.t. job n phase
WRITE:/10 'Job' , 20 'Phase', 30 'Hour', 50 'Amount'.
ULINE.
LOOP AT it_doc INTO wa_doc.
AT END OF job.
SUM. "<--sum up hours and amount (add fields of type i, p, f)
WRITE:/10 wa_doc-job, 20 wa_doc-phase, 30 wa_doc-hour, 50 wa_doc-amount.
ENDAT.
ENDLOOP.
Hope this helps you.
Regards,
Tarun
‎2009 Mar 27 4:39 PM
Hi,
Try with COLLECT statement.
Look at the help document on that statement with example
http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb36d5358411d1829f0000e829fbfe/content.htm
Regards
Bala Krishna
‎2009 Mar 27 4:43 PM
Avinash,
This worked! Thank you.
I am awrding you full points.
Rgds
Praveen