2010 Mar 05 8:03 AM
HI EXPERTS,
I HAVE TO DELETE THE DUPLICATES ENTRIES IN AN INTERNAL TABLE .
ALREADY SHORTED THE ITAB BY MATNR AND WERKS.
SUPPOSE :
MATNR WERKS
GX0072 1120
GX0073 1120
GX0073 1120
GX0074 1120
GX0074 1130
GX0074 1140
I NEED TO SHOW ONLY MATERIAL NO GX0074 SINCE GX0074 ONLY
BELONGS TO DIFFERENT PLANT.
PLEASE SUGGEST ME IN WRITING THE EXACT CODE, SO THAT I CAN SHOW ONLY
GX0074.
PLEASE HELP ME OUT.
THANKS IN ADVANCE.
VIVEK
2010 Mar 05 8:37 AM
HI EXPERTS,
I HAVE TO DELETE THE DUPLICATES ENTRIES IN AN INTERNAL TABLE .
ALREADY SHORTED THE ITAB BY MATNR AND WERKS.
SUPPOSE :
MATNR WERKS
GX0072 1120
GX0073 1120
GX0073 1120
GX0074 1120
GX0074 1130
GX0074 1140
I NEED TO SHOW ONLY MATERIAL NO GX0074 SINCE GX0074 ONLY
BELONGS TO DIFFERENT PLANT.
PLEASE SUGGEST ME IN WRITING THE EXACT CODE, SO THAT I CAN SHOW ONLY
GX0074.
PLEASE HELP ME OUT.
THANKS IN ADVANCE.
VIVEK
2010 Mar 05 8:16 AM
For deleting duplicates use
DELETE ADJACENT DUPLICATES FROM itab COMPARING matnr.
This will remove all entires having common material and will leave first one.
Regards
Marcin
2010 Mar 05 8:16 AM
Hello,
First of all donot post your question in ALL CAPS. That's against the forum rules.
for your question try this snippet
data: begin of itab OCCURS 0,
matnr(10) type c,
werks(4) type c,
end of itab.
itab-matnr = 'GX0072'.
itab-werks = '1120'.
append itab.
itab-matnr = 'GX0073'.
itab-werks = '1120'.
append itab.
itab-matnr = 'GX0073'.
itab-werks = '1120'.
append itab.
itab-matnr = 'GX0074'.
itab-werks = '1120'.
append itab.
itab-matnr = 'GX0074'.
itab-werks = '1130'.
append itab.
itab-matnr = 'GX0074'.
itab-werks = '1140'.
append itab.
sort itab by werks ASCENDING matnr DESCENDING.
DELETE ADJACENT DUPLICATES FROM itab COMPARING werks.
loop at itab.
write: / itab-matnr, itab-werks.
endloop.
Vikranth
2010 Mar 05 8:24 AM
Hello,
I think this should give some idea:
DATA: V_COUNT TYPE I.
SORT ITAB BY MATNR WERKS.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING MATNR WERKS.
LOOP AT ITAB INTO WA.
V_COUNT = V_COUNT + 1.
AT END OF MATNR.
IF V_COUNT > 1.
WRITE: WA-MATNR, 20 'belongs to different plants'.
CLEAR V_COUNT.
ENDIF.
ENDAT.
ENDLOOP.BR,
Suhas
2010 Mar 05 8:37 AM
2010 Mar 06 1:14 PM
Dear Raymond,
You are very much right , what i have done something like this ,
SORT IT_MKPF[] BY MATNR WERKS.
DELETE IT_MKPF[] WHERE MATNR = ''.
LOOP AT IT_MKPF INTO WA_MKPF.
CLEAR:V_FLAG.
ON CHANGE OF WA_MKPF-MATNR.
ADD 1 TO V_FLAG.
ENDON.
IF V_FLAG = 0.
APPEND WA_MKPF TO IT_MKPF1.
CLEAR: WA_MKPF.
ENDIF.
ENDLOOP.
and it works.
Thanks a lot dear.
Vivek
2010 Mar 05 9:04 AM
I_table is <your table>.
wa_table is <your work area>.
var type matnr is null.
i_newtab <your table type>
wa_newtab<new work area>
loop i_table into wa_table.
on change of wa_table-matnr wa_table-werks.
if var == null.
wa_newtab = wa_table.
else if var!=null and wa_table-matnr = wa_newtab-matnr.
append wa_newtab into i_newtab.
wa_newtab = wa_table.
var = wa_newtab-matnr.
endif.
endon.
endloop.
< now you will have only the matnrs which are having atleast 2
2010 Mar 05 9:05 AM
now you will have the records which are ...same materials stored in atleast two different plants in the new internal table ...
I hope that is your requirement ..
Regards,
2010 Mar 05 9:08 AM
loop at it_mat into wa_mat.
endloop.
delete table it_mat where matnr <> wa_mat-matnr.
please try this code
TYPES : BEGIN OF ty_mat,
MATNR TYPE MARC-MATNR,
WERKS TYPE MARC-WERKS,
END OF ty_mat.
DATA : it_mat TYPE STANDARD TABLE OF ty_mat,
wa_mat TYPE ty_mat.
wa_mat-matnr = 'GX0074'.
wa_mat-werks = '1130'.
APPEND wa_mat to it_mat.
wa_mat-matnr = 'GX0074'.
wa_mat-werks = '1120'.
APPEND wa_mat to it_mat.
wa_mat-matnr = 'GX0072'.
wa_mat-werks = '1120'.
APPEND wa_mat to it_mat.
wa_mat-matnr = 'GX0073'.
wa_mat-werks = '1120'.
APPEND wa_mat to it_mat.
wa_mat-matnr = 'GX0074'.
wa_mat-werks = '1140'.
APPEND wa_mat to it_mat.
wa_mat-matnr = 'GX0073'.
wa_mat-werks = '1120'.
APPEND wa_mat to it_mat.
SORT it_mat by matnr werks.
DELETE ADJACENT DUPLICATES FROM it_mat.
LOOP AT it_mat INTO wa_mat.
ENDLOOP.
DELETE it_mat WHERE matnr <> wa_mat-matnr.
LOOP AT it_mat INTO wa_mat.
WRITE : / wa_mat-matnr, wa_mat-werks.
ENDLOOP.
Thanks
Chinni
2010 Mar 05 9:09 AM
I run Vikranth.Reddy 's report its not working as per vivek srivastava so i modify Vikranth.Reddy 's now its working fine
run this
data: begin of itab OCCURS 0,
matnr like mara-matnr,
werks(4) type c,
end of itab.
itab-matnr = 'GX0072'.
itab-werks = '1120'.
append itab.
itab-matnr = 'GX0073'.
itab-werks = '1120'.
append itab.
itab-matnr = 'GX0073'.
itab-werks = '1120'.
append itab.
itab-matnr = 'GX0074'.
itab-werks = '1120'.
append itab.
itab-matnr = 'GX0074'.
itab-werks = '1130'.
append itab.
itab-matnr = 'GX0074'.
itab-werks = '1140'.
append itab.
sort itab by werks ASCENDING matnr DESCENDING.
DELETE ADJACENT DUPLICATES FROM itab COMPARING werks .
DELETE ADJACENT DUPLICATES FROM itab COMPARING matnr.
loop at itab.
write: / itab-matnr, itab-werks.
endloop.
2010 Mar 05 9:57 AM
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |