Kenny hat geschrieben:Hat mal bitte einer eine Lösung? Ich verzweifel gerade an dem billigen Mist.
Code: Alles auswählen.
SORT itab BY key.
LOOP AT itab INTO wa.
lv_next = sy-tabix + 1.
READ TABLE itab INTO wa_next INDEX lv_next.
IF sy-subrc = 0 AND wa-key <> wa_next-key.
DELETE TABEL itab FROM wa.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
data: anz type i.
sort itab by t1 t2.
loop at itab.
anz = anz + 1.
at end of t1.
at end of t2.
if anz = 1.
clear itab.
modify itab.
endif.
clear anz.
endat.
endat.
endloop.Code: Alles auswählen.
SORT e_ta BY sparte geraet EQUNR
LOOP AT e_ta.
anz = anz + 1.
AT END OF sparte.
AT END OF geraet.
AT END OF EQUNR.
IF anz = 1.
CLEAR e_ta.
MODIFY e_ta.
ENDIF.
CLEAR anz.
ENDAT.
ENDAT.
ENDAT.
ENDLOOP.
Code: Alles auswählen.
sort itab by t1 t2 t3.
loop at itab.
concatenate itab-t1 itab-t2 itab-t3 into itab2-t1.
append itab2.
endloop.
sort itab2 by t1.
loop at itab2.
anz = anz + 1.
at end of t1.
if anz = 1.
clear itab2.
modify itab2.
endif.
clear anz.
endat.
endloop.Code: Alles auswählen.
SPARTE GERAET MATNR EQUI
10 1 95000439 10001996
10 1 95000469 10002028
10 1 95000780 10003420
10 2 STROM 10000003
10 2 TEST55 10000013
10 2 TEST1 10000022
10 2 95000435 10000086
10 3 95000442 10001922
10 3 TEST3 10001988
10 3 95000439 10001998
10 4 STROM 10000005
20 1 95000177 10000061
20 1 95000681 10002903
20 1 95000761 10003349
20 1 95000180 10003618
20 1 96050001 10005034
20 2 95000177 10000062
20 2 95000681 10002904
20 2 95000761 10003350
20 2 96050001 10005035
20 3 95000177 10000063
20 10 96050001 10005043
20 11 95000177 10000071
20 11 95000681 10002913
20 11 96050001 10005044
20 12 95000177 10000083
20 12 95000681 10002914
20 12 96050001 10005045
20 13 95000177 10000084
20 13 95000681 10003050
20 13 96050001 10005046
20 14 95000681 10003051
20 14 96050001 10005047
20 15 95000681 10003052
30 7754 95000074 10001233
30 8699 95000071 10001124
30 9357 95000071 10001145
30 9701 95000076 10002055
30 9702 95000076 10002056
30 9703 95000076 10002057
Ein Problem ist die Feldreihenfolge und die AT-Verarbeitung.Kenny hat geschrieben:Aber es kann doch nicht so schwer sein sowas zu realisieren, oder vertue ich mich da so.
Kenny hat geschrieben:ok wenn ich jetzt also das ganze selbst in einer internen Tabelle sortiere, sodass SPARTE; GERAET; EQUI in Reihenfolge stehen, wie sieht dass so eine Umsetzung aus?
Code: Alles auswählen.
SORT gt_data BY sparte gernr equnr.
LOOP AT gt_data ASSIGNING <gs_data>.
* aktuellen Key zählen
gv_cnt = gv_cnt + 1.
AT END OF equnr.
* Wie oft gab es den Key, alle die es nicht mehrfach gibt löschen
IF gv_cnt < 2.
WRITE: / 'Key:', <gs_data>-sparte, <gs_data>-gernr, <gs_data>-equnr, 'wurde gelöscht!'.
DELETE gt_data WHERE sparte = <gs_data>-sparte AND gernr = <gs_data>-gernr AND equnr = <gs_data>-equnr.
ENDIF.
CLEAR gv_cnt.
ENDAT.
ENDLOOP.
Code: Alles auswählen.
LOOP AT gt_data ASSIGNING <gs_data>.
* aktuellen Key zählen
gv_cnt = gv_cnt + 1.
AT END OF geraet.
* Wie oft gab es den Key, alle die es nicht mehrfach gibt löschen
IF gv_cnt < 2.
WRITE: / 'Key:', <gs_data>-sparte, <gs_data>-geraet 'wurde gelöscht!'.
DELETE gt_data WHERE sparte = <gs_data>-sparte AND gernr = <gs_data>-geraet.
ENDIF.
CLEAR gv_cnt.
ENDAT.
ENDLOOP.