Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Processing Internal table -Summing up

Former Member
0 Likes
517

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
488

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.

4 REPLIES 4
Read only

Former Member
0 Likes
489

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.

Read only

I355602
Product and Topic Expert
Product and Topic Expert
0 Likes
488

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

Read only

former_member585060
Active Contributor
0 Likes
488

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

Read only

0 Likes
488

Avinash,

This worked! Thank you.

I am awrding you full points.

Rgds

Praveen