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

Internal table

Former Member
0 Likes
874

Hi friends,

My itab contains ........

Sl No Mat No Net Weight Quantity price

1 900018 15.2 1 15000

2 900018 15.2 1 15000

Finally,My itab should contain .......

Sl No Mat No Net Weight Quantity price

1 900018 30.4 2 30000

How to add Net Weight - QUAN

Quantity - QUAN

Price - CURR fields.........

loop at itab.

at end of matnr.

endat.

endloop.

Pls help me.......

10 REPLIES 10
Read only

Former Member
0 Likes
850

Hi,

declare ur itab fields as a charatcer excepet quantity .

and then in loop .

loop at itab.

onchage of matnr.

sum.

endon.

endloop.

thanks,

satish.

Read only

bpawanchand
Active Contributor
0 Likes
850

Hi

Use COLLECT statement your issuse will be resolved.

Regards

Pavan

Read only

Former Member
0 Likes
850

Hi,

at end of matnr

SUM

endat.

regards

padma

Read only

Former Member
0 Likes
850

Hi,

declare variables of respective type...

and do as following

loop at itab.

v_net_weigh = v_net_weight + net_weight.

v_price = v_price + price.

at end of matnr.

move v_net to wa_fianl-net_weight,

v_price to wa_final-price.

append wa_final to i_final.

clear v_net_weight,

v_price.

endat.

endloop.

Read only

Former Member
0 Likes
850

Hosmath,

Do it like following :

data : itab1 like itab.

sort itab by s_no matnr.

loop at itab.

g_sum = g_sum + itab-qty.

g_sum1 = g_sum1 + itab-price.

g_sum2 = g_sum2 + itab-wt.

at end of matnr.

read table itab index sy-tabix.

move corresponding itab to itab1.

itab1-qty = g_sum.

itab1-price = g_sum1.

itab1-wt = g_sum2.

append itab1.

clear: itab,g_sum,g_sum1,g_sum2.

endat.

endloop.

Regards,

Talwinder

Read only

Former Member
0 Likes
850

Hi Hosmath,

Why dont you try the statement Collect.

Collect statement will resolve your problem...

Regards,

Chidanand

Read only

Former Member
0 Likes
850

hi,

use the collect statement

it is used to add all numeric fields when new record appered.

declare another internal table itab2 like same what u have

loop at itab into wa.

collect wa into itab2.

endloop.

if u have any issues refer this link

http://help.sap.com/saphelp_nw04/helpdata/en/d3/2e974d35c511d1829f0000e829fbfe/frameset.htm

Regards,

jagadeesh.

Read only

Former Member
0 Likes
850

loop at itab into wa_itab.
v_quantity  = wa_itab + v_quantity.

at end of matnr.
wa_itab_total-quantity  = v_quantity.
append wa_itab_total to itab2.
clear: wa_itab_total,v_quantity.
endat.

endloop.
Read only

Former Member
0 Likes
850

Hi,

You can use COLLECT statement. You can reference the following code.

TYPES:
  BEGIN OF ty_original,
    si_no(1) TYPE c,
    mat_no(6) TYPE c,
    weig TYPE KTMNG,"Data Type QUAN
    qty TYPE KTMNG,
    price TYPE BPREI,"Data Type CURR
  END OF ty_original,
  
  BEGIN OF ty_new,
    mat_no(6) TYPE c,
    weig TYPE KTMNG,"Data Type QUAN
    qty TYPE KTMNG,
    price TYPE BPREI,"Data Type CURR
  END OF ty_new.
  
TYPES:
  ty_tb_original TYPE STANDARD TABLE OF ty_original,
  ty_tb_new TYPE STANDARD TABLE OF ty_new WITH KEY mat_no.

DATA:
* original internal table     
  i_original TYPE ty_tb_original,
  w_original TYPE ty_original,
* new internal table used to sum
  i_new TYPE ty_tb_new,
  w_new TYPE ty_new.

*data in orignial table
w_original-si_no = '1'.
w_original-mat_no = '900018'.
w_original-weig = '15.2'.
w_original-qty = '1'.
w_original-price = '15000'.
APPEND w_original TO i_original.
CLEAR w_original.

w_original-si_no = '2'.
w_original-mat_no = '900018'.
w_original-weig = '15.2'.
w_original-qty = '1'.
w_original-price = '15000'.
APPEND w_original TO i_original.
CLEAR w_original.

*Do Sum
LOOP AT i_original INTO w_original.
  w_new-mat_no = w_original-mat_no.
  w_new-weig   = w_original-weig.
  w_new-qty    = w_original-qty.
  w_new-price  = w_original-price.
  
  COLLECT w_new INTO i_new.
  CLEAR w_new.
ENDLOOP.

*Display Result.
LOOP AT i_new INTO w_new.
  WRITE: w_new-mat_no, w_new-weig, w_new-qty, w_new-price.
ENDLOOP.

Read only

0 Likes
850

Hi friends,

Now I'm able to get the sum .......................

DATA:itab TYPE TABLE OF j_1iexcdtl INITIAL SIZE 0 WITH HEADER LINE.

DATA:v_net_weight TYPE p DECIMALS 2,

v_gross_weight TYPE p DECIMALS 2,

v_menge(2),

v_price TYPE p DECIMALS 2,

v_exbed TYPE p DECIMALS 2,

v_exaddtax1 TYPE p DECIMALS 2,

v_ecs TYPE p DECIMALS 2.

LOOP AT itab.

v_net_weight = v_net_weight + itab-ntgew.

v_gross_weight = v_gross_weight + itab-brgew.

v_menge = v_menge + itab-menge.

v_price = v_price + itab-exbas.

v_exbed = v_exbed + itab-exbed.

v_exaddtax1 = v_exaddtax1 + itab-exaddtax1.

v_ecs = v_ecs + itab-ecs.

AT END OF matnr.

itab-ntgew = v_net_weight.

itab-brgew = v_gross_weight.

itab-menge = v_menge.

itab-exbas = v_price.

itab-exbed = v_exbed.

itab-exaddtax1 = v_exaddtax1.

itab-ecs = v_ecs.

MODIFY itab TRANSPORTING ntgew brgew menge exbas exbed exaddtax1 ecs.

ENDAT.

ENDLOOP.

Getting the correct total values at the last.....

like

if i have 5 same material nos.....getting for the 5th item.....

How to delete previous 4 same material nos from itab.

I'm not displaying the output.....condensing the data within itab(when see it debugg mode).Finally itab should contain one line which is last line in this case.

I need to transfer the contents of this table.....to other table which is dependent on this.