Code: Alles auswählen.
Beispiele:
F1 F2 F3 F4 F5 F6 F7
A B C D 7 M
A B C D 7 X E <- gesuchter Wert
oder:
F1 F2 F3 F4 F5 F6 F7
A B C D 7 M
A B C D 7 X E <- gesuchter Wert
A B C D 7 P
oder:
F1 F2 F3 F4 F5 F6 F7
A B C D 7 M
A B C D 7 X E <- gesuchte Werte
A B C D 7 P
A B C D 7 R
A B C D 8 X C <- gesuchte Werte
A B C D 8 V
Code: Alles auswählen.
SORT itab BY f1 f2 f2 f3 f4 f5. "stabile Sortierung für AT-Verarbeitung
LOOP AT itab ASSINGING <itab_zeile>. "muss FS, bei WA gibt * in den Key-Feldern im AT Block
AT NEW f5. "neuer Wert in f5
CLEAR anzahl_abap_true.
LOOP AT itab TRANSPORTING NO FIELDS "oder was anderes wenn man die Werte braucht
FROM sy-tabix "nur ab der aktuellen Zeile der äußeren LOOP-Schleife
WHERE f1 = <itab_zeile>-f1 AND ... AND f5 = <itab_zeile>-f5 AND f6 = 'X'. "nur zum aktuellen key.
anzahl_abap_true = anzahl_abap_true + 1.
ENDLOOP.
IF anzahl_abap_true = 0.
* keine ABAP_TRUE Sätze für den KEY
ELSEIF anzahl_abap_true = 1.
* genau ein Satz ABAP_TRUE für den Key
ELSE.
* mehrere ABAP_TRUE Sätze für einen Key
ENDIF.
ENDAT.
ENDLOOP.
Code: Alles auswählen.
lt_itab_hilf = lt_itab
LOOP AT lt_itab_hilf INTO ls_itab_hilf
SELECT *
FROM lt_itab
INTO TABLE lt_ergebnisse
WHERE f5 = ls_itab_hilf
AND f6 = abap_true.
IF sy-dbcount > 1.
" was auch immer passieren soll wenn du mehr als einen findest
WRITE lt_ergebnisse.
ENDIF.
ENDLOOP
Select auf eine interne Tabelle?hausi hat geschrieben:Was wäre an meinem Denkansatz dazu falsch?
Jupp du hast selbstverständlich RechtJHM hat geschrieben:Select auf eine interne Tabelle?hausi hat geschrieben:Was wäre an meinem Denkansatz dazu falsch?
Die Aufgabenstellung ist BTW sehr offen formuliert.
ADTs Ansatz mit COLLECT liefert sicher auch ein brauchbares Ergebnis => Anzahl Sätze je KEY mit/ohne ABAP_TRUE.