‎2008 Apr 30 9:54 AM
Hi,
There is an internal table with following records
SNO TAXAMOUNT MWSKZ
1450044 2 D5
1450044 8 SS
1450044 2 SW
1450044 8 SS
Now i want to remove the dupliactes entries from his internal table without sorting . How to do that??
‎2008 Apr 30 10:10 AM
Hi,
this code may help.
DATA : BEGIN OF ls_table ,
SNO(7),
TAXAMOUNT(1),
MWSKZ(2),
END OF ls_table .
DATA : lt_table like ls_table OCCURS 0 WITH HEADER LINE .
DATA : lv_tabix like sy-tabix.
lt_table-SNO = '1450044' .
lt_table-TAXAMOUNT = '2' .
lt_table-MWSKZ = 'D5' .
APPEND lt_table.
lt_table-SNO = '1450044' .
lt_table-TAXAMOUNT = '8' .
lt_table-MWSKZ = 'SS' .
APPEND lt_table.
lt_table-SNO = '1450044' .
lt_table-TAXAMOUNT = '2' .
lt_table-MWSKZ = 'SW' .
APPEND lt_table.
lt_table-SNO = '1450044' .
lt_table-TAXAMOUNT = '8' .
lt_table-MWSKZ = 'SS' .
APPEND lt_table.
LOOP AT lt_table.
lv_tabix = sy-tabix.
READ TABLE lt_table WITH KEY SNO = lt_table-SNO
TAXAMOUNT = lt_table-TAXAMOUNT
MWSKZ = lt_table-MWSKZ .
if sy-subrc eq 0.
if lv_tabix ne sy-tabix.
DELETE lt_table.
endif.
endif.
ENDLOOP.
‎2008 Apr 30 9:56 AM
If you really want it without sorting, then create a copy of original internal table and cross check both internal tables.
‎2008 Apr 30 9:57 AM
‎2008 Apr 30 9:57 AM
Hi,
You can write
delete adjacent duplicates from internal table name comparing SNO TAXAMOUNT MWSKZ.
this would delete the duplicates.
Thanks,
Guru.
**Reward if helpful
‎2008 Apr 30 10:00 AM
‎2008 Apr 30 9:58 AM
Anurodh,
Deleting adjacent duplicates without sorting will get you wrong result.It is a must to sort the internal table before using delete adjacent duplicates.
SORT itab ASCENDING BY kunrg.
DELETE ADJACENT DUPLICATES FROM itab COMPARING kunrg.
K.Kiran.
‎2008 Apr 30 10:00 AM
hi,
Suppose your internal table name is ITAB1.
do like this.
itab2[] = itab1[].
sort itab2.
delete adjacent duplicates from itab2 comparing SNO TAXAMOUNT MWSKZ.Regards,
Anversha
‎2008 Apr 30 10:02 AM
hi without sorting you can delete entries in this way:
loop at itab into wa1.
count = 0.
loop at itab into wa2.
if wa2 = wa1 .
count = count + 1.
if count > 1.
delete itab from wa1.
endif.
endif.
endloop.
endloop.
reward if useful.
‎2008 Apr 30 10:12 AM
‎2008 Apr 30 10:26 AM
hi use this delete statement in previous code
delete table itab from wa1.
reward if useful.
‎2008 Apr 30 10:09 AM
hi
say tne internal table u used is itab.
now do this:
itab1[] = itab[].
sort itab1 by SNO TAXAMOUNT .
delete adjacent duplicates from itab1 comparing SNO TAXAMOUNT .
loop at itab.
read table itab1 with key SNO = itab-SNO
TAXAMOUNT = itab1-TAXAMOUNT .
if sy-subrc = 0.
<process accordingly>
else.
< processaccordingly>
endif.
endloop.
‎2008 Apr 30 10:10 AM
Hi,
this code may help.
DATA : BEGIN OF ls_table ,
SNO(7),
TAXAMOUNT(1),
MWSKZ(2),
END OF ls_table .
DATA : lt_table like ls_table OCCURS 0 WITH HEADER LINE .
DATA : lv_tabix like sy-tabix.
lt_table-SNO = '1450044' .
lt_table-TAXAMOUNT = '2' .
lt_table-MWSKZ = 'D5' .
APPEND lt_table.
lt_table-SNO = '1450044' .
lt_table-TAXAMOUNT = '8' .
lt_table-MWSKZ = 'SS' .
APPEND lt_table.
lt_table-SNO = '1450044' .
lt_table-TAXAMOUNT = '2' .
lt_table-MWSKZ = 'SW' .
APPEND lt_table.
lt_table-SNO = '1450044' .
lt_table-TAXAMOUNT = '8' .
lt_table-MWSKZ = 'SS' .
APPEND lt_table.
LOOP AT lt_table.
lv_tabix = sy-tabix.
READ TABLE lt_table WITH KEY SNO = lt_table-SNO
TAXAMOUNT = lt_table-TAXAMOUNT
MWSKZ = lt_table-MWSKZ .
if sy-subrc eq 0.
if lv_tabix ne sy-tabix.
DELETE lt_table.
endif.
endif.
ENDLOOP.
‎2008 Apr 30 10:14 AM
hi,
write a simple code.
DELETE ADJACENT DUPLICATES FROM ITAB.
‎2008 Apr 30 10:18 AM
Hi ,
try this code,
itab1[] = itab[].
loop at itab1 into wa_itab1
l_tabix = sy-tabix.
delete itab where ( compare ur fields with wa_itab1 fields ) and index <> l_tabix.
endloop.
reward points if usful.
regards,
muralidhar.