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.
Please use a more meaningful subject in future
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
| User | Count |
|---|---|
| 6 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |