‎2009 Jan 16 3:57 AM
Moderator message: please use a more meaningful subject in future
Hi
i have the following dtaa in the itab
Row G_EKGRP G_WERKS G_USNAM G_NUMBER
1 A22 AUCP POTEST
2 A22 AURH INDIRAS
3 A22 AURH INDIRAS
4 A22 AURH POTEST
5 A22 AURH SIVAK
6 A22 AURH SIVAK
7 A26 AUCP INDIRAS
8 A26 AUCP INDIRAS
9 A26 AUME INDIRAS
10 A26 AURH INDIRAS
11 A26 AURH INDIRAS
if ekgrp werks usnam are same then the count should be added and updated in g_number
and delete the duplicates.the final result should be like this
Row G_EKGRP G_WERKS G_USNAM G_NUMBER
1 A22 AUCP POTEST 1
2 A22 AURH INDIRAS 2
3 A22 AURH POTEST 1
4 A22 AURH SIVAK 2
5 A26 AUCP INDIRAS 2
6 A26 AUME INDIRAS 1
7 A26 AURH INDIRAS 2
please suggest
Thank& regards
siva
Edited by: Matt on Jan 16, 2009 11:30 AM
‎2009 Jan 16 9:54 AM
Hi Revanth,
Try out this code.
REPORT zinternal_1.
TYPES: BEGIN OF st_itab ,
ekgrp TYPE i,
werks(5) TYPE c,
usnam(8) TYPE c,
number TYPE i ,
END OF st_itab.
DATA : itab TYPE STANDARD TABLE OF st_itab,
wa TYPE st_itab,
wa1 type st_itab,
num type i.
wa-ekgrp = '22'.
wa-werks = 'AUCP'.
wa-usnam = 'POTEST'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'POTEST'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'SIVAK'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'SIVAK'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AUCP'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AUCP'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AUME'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AURH'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AURH'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
sort itab by ekgrp werks usnam.
loop at itab into wa.
num = sy-tabix.
loop at itab into wa1.
if num = sy-tabix.
continue.
elseif
wa-ekgrp = wa1-ekgrp and wa-werks = wa1-werks and wa-usnam = wa1-usnam.
wa-number = wa-number + 1.
modify itab from wa index num transporting number.
delete itab index sy-tabix.
endif.
endloop.
endloop.
loop at itab into wa.
write 😕 wa-ekgrp, wa-werks, wa-usnam, wa-number.
endloop.
‎2009 Jan 16 3:59 AM
‎2009 Jan 16 4:05 AM
Hi,
field-symbols : <fs1>.
LOOP the tabnam assigning <fs1>.
counter = counter + 1.
at end of user name.
clear counter.
delete table tabnam from tabnam.
endif.
Endloop.
in this case, tabnam should be table with header line.
hope it helps!!
Regards,
Pavan
‎2009 Jan 16 4:08 AM
Hello Revanth,
You can Use collect Statement your program.
OR
Use " ADD 1 TO G_NUMBER ".within your LOOP,where you are just playing with your Logic.
OR
Use " G_NUMBER = G_NUMBER + 1 " within your LOOP statement.
In case any Problem Please Let me know In Detail.
Have a Nice Day,
Regards,
Sujeet
‎2009 Jan 16 4:11 AM
Hi Revanth
You can use the COLLECT Statement with a work area. But make sure that this work area is compatible with the line type of the itab.
Regards
Harsh
‎2009 Jan 16 4:15 AM
hi,
you can use Collect staement it will add the numeric fields into the corresponding itab.
thanks.
‎2009 Jan 16 4:18 AM
Hi Revanth,
check the below example.
Here you consider tour fields Row G_EKGRP ... instead of fields f1,f2...
TYPES: BEGIN OF ty_tab,
f1 TYPE i,
f2 TYPE char5,
f3 TYPE char3,
count TYPE i,
END OF ty_tab.
DATA: int_tab TYPE STANDARD TABLE OF ty_tab,
wa_tab TYPE ty_tab,
wa_tab1 TYPE ty_tab.
DATA: w_count TYPE i,
w_ind TYPE i.
wa_tab-f1 = '10'.
wa_tab-f2 = '111'.
wa_tab-f3 = 'AAA'.
APPEND wa_tab TO int_tab.
wa_tab-f1 = '11'.
wa_tab-f2 = '222'.
wa_tab-f3 = 'BBB'.
APPEND wa_tab TO int_tab.
wa_tab-f1 = '11'.
wa_tab-f2 = '222'.
wa_tab-f3 = 'BBB'.
APPEND wa_tab TO int_tab.
wa_tab-f1 = '13'.
wa_tab-f2 = '333'.
wa_tab-f3 = 'CCC'.
APPEND wa_tab TO int_tab.
wa_tab-f1 = '13'.
wa_tab-f2 = '333'.
wa_tab-f3 = 'CCC'.
APPEND wa_tab TO int_tab.
SORT int_tab BY f1 f2 f3.
LOOP AT int_tab INTO wa_tab.
w_count = w_count + 1.
AT NEW f3.
w_ind = sy-tabix. "Used when modifying the tab
ENDAT.
wa_tab1 = wa_tab. "Copying to another WA
"At End of will consider previous Fields also
AT END OF f3.
wa_tab1-count = w_count.
MODIFY int_tab FROM wa_tab1 INDEX w_ind.
CLEAR: w_count, w_ind.
ENDAT.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM int_tab COMPARING f1 f2 f3.
LOOP AT int_tab INTO wa_tab.
WRITE: / wa_tab-f1, wa_tab-f2, wa_tab-f3,wa_tab-count.
ENDLOOP.I/P:
10 111 AAA
11 222 BBB
11 222 BBB
13 333 CCC
13 333 CCC
O/P:
10 111 AAA 1
11 222 BBB 2
13 333 CCC 2Hope this helps you.
Regards,
Manoj Kumar P
‎2009 Jan 16 5:12 AM
Hi,
Use COLLECT statement.
because vollect statement wont allow duplicate entreis.
if the values of char fields are similar it will add the number fields.
Regrds
Rajesh Kumar
‎2009 Jan 16 9:54 AM
Hi Revanth,
Try out this code.
REPORT zinternal_1.
TYPES: BEGIN OF st_itab ,
ekgrp TYPE i,
werks(5) TYPE c,
usnam(8) TYPE c,
number TYPE i ,
END OF st_itab.
DATA : itab TYPE STANDARD TABLE OF st_itab,
wa TYPE st_itab,
wa1 type st_itab,
num type i.
wa-ekgrp = '22'.
wa-werks = 'AUCP'.
wa-usnam = 'POTEST'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'POTEST'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'SIVAK'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '22'.
wa-werks = 'AURH'.
wa-usnam = 'SIVAK'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AUCP'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AUCP'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AUME'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AURH'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
wa-ekgrp = '26'.
wa-werks = 'AURH'.
wa-usnam = 'INDIRAS'.
wa-number = '1'.
append wa to itab.
sort itab by ekgrp werks usnam.
loop at itab into wa.
num = sy-tabix.
loop at itab into wa1.
if num = sy-tabix.
continue.
elseif
wa-ekgrp = wa1-ekgrp and wa-werks = wa1-werks and wa-usnam = wa1-usnam.
wa-number = wa-number + 1.
modify itab from wa index num transporting number.
delete itab index sy-tabix.
endif.
endloop.
endloop.
loop at itab into wa.
write 😕 wa-ekgrp, wa-werks, wa-usnam, wa-number.
endloop.
‎2009 Jan 16 10:31 AM