2008 Mar 14 5:39 AM
Internal table ITAB
FIELD1---FIELD2
111------123
111------234
111------346
111------678
333------123
Keep only the record 111 and delete the 333 since it is not a duplicate record
2008 Mar 14 6:01 AM
Hi,
see this code.
DATA:BEGIN OF itab OCCURS 0,
field1(3),
FIELD2(3),
END OF itab.
DATA:lin TYPE sy-tfill.
DATA:jtab like itab OCCURS 0 WITH HEADER LINE.
DATA:ktab like itab OCCURS 0 WITH HEADER LINE.
itab-field1 = '111'.
itab-field2 = '123'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '234'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '346'.
APPEND itab.
itab-field1 = '333'.
itab-field2 = '123'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '678'.
APPEND itab.
sort itab.
jtab[] = itab[].
DELETE ADJACENT DUPLICATES FROM jtab COMPARING field1.
LOOP AT jtab.
REFRESH ktab.
LOOP AT itab WHERE field1 = jtab-field1.
APPEND itab to ktab.
ENDLOOP.
DESCRIBE TABLE ktab LINES lin.
IF lin = 1.
DELETE TABLE itab from jtab.
ENDIF.
ENDLOOP.
LOOP AT itab.
write:/ itab.
ENDLOOP.
rgds,
bharat.
Internal table ITAB
FIELD1---FIELD2
111------123
111------234
111------346
111------678
333------123
Keep only the record 111 and delete the 333 since it is not a duplicate record
2008 Mar 14 5:50 AM
declare one more itab with same structure as first itab.
write the code as below.
data: fl type i.
itab1[] = itab[].
sort itab1 by field1.
delete adjacent duplicates from itab1 comparing field1.
sort itab by field1.
loop at itab1.
clear fl.
loop at itab where field1 = itab1-field1.
fl = fl + 1.
if fl > 1.
exit.
endif.
endloop.
if fl = 1.
delete itab[] where field1 = itab1-field1.
endif.
endloop.
2008 Mar 14 5:51 AM
Hi,
Refer this code.
read table itab into wa with key field1.
loop at itab into wa1 where field1 <> wa-field1 .
delete itab from wa.
endloop.
This will work.
Reward if helpful.
Regards,
Ramya
2008 Mar 14 6:01 AM
Hi,
see this code.
DATA:BEGIN OF itab OCCURS 0,
field1(3),
FIELD2(3),
END OF itab.
DATA:lin TYPE sy-tfill.
DATA:jtab like itab OCCURS 0 WITH HEADER LINE.
DATA:ktab like itab OCCURS 0 WITH HEADER LINE.
itab-field1 = '111'.
itab-field2 = '123'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '234'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '346'.
APPEND itab.
itab-field1 = '333'.
itab-field2 = '123'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '678'.
APPEND itab.
sort itab.
jtab[] = itab[].
DELETE ADJACENT DUPLICATES FROM jtab COMPARING field1.
LOOP AT jtab.
REFRESH ktab.
LOOP AT itab WHERE field1 = jtab-field1.
APPEND itab to ktab.
ENDLOOP.
DESCRIBE TABLE ktab LINES lin.
IF lin = 1.
DELETE TABLE itab from jtab.
ENDIF.
ENDLOOP.
LOOP AT itab.
write:/ itab.
ENDLOOP.
rgds,
bharat.
2008 Mar 14 6:12 AM
Hi,
i think this is simpler than earlier.
DATA:BEGIN OF itab OCCURS 0,
field1(3),
FIELD2(3),
END OF itab.
DATA:lin TYPE sy-tfill.
itab-field1 = '111'.
itab-field2 = '123'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '234'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '346'.
APPEND itab.
itab-field1 = '333'.
itab-field2 = '123'.
APPEND itab.
itab-field1 = '111'.
itab-field2 = '678'.
APPEND itab.
LOOP AT itab.
AT NEW field1.
CLEAR lin.
ENDAT.
lin = lin + 1.
AT END OF field1.
IF lin = 1.
delete itab.
ENDIF.
ENDAT.
ENDLOOP.
LOOP AT itab.
write:/ itab.
ENDLOOP.
rgds,
bharat
2008 Mar 14 6:06 AM
Hi,
Try this code.Internal table itab2 will contain your required data.
sort itab by field1.
loop at itab.
if itab-field1 = v_field1.
if sy-tabix = '2'.
append wa_itab2 to itab2.
endif.
append itab to itab2.
endif.
if sy-tabix = '1'.
wa_itab2 = itab.
endif.
v_field1 = itab-field1.
endloop.
Hope this will help.
Regards'
Shibin
Edited by: Shibin on Mar 14, 2008 7:07 AM
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |