Anzahl von bestimmten Einträgen innerhalb Itab

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Anzahl von bestimmten Einträgen innerhalb Itab

Beitrag von Sternschnuppe ( / / 0 / 3 ) »
Hallo,
ich habe folgendes problem: Ich habe zwei interne Tabellen. Die eine ist quiasi eine Prüftabelle und die andere hat beliebiegviele wiederholungen der prüftabellenwerte(nenen wir sie temp_itab). Nun möchte ich zählen wie oft die einzelnen werte in meine "temp_itab" vorkommen. Bei SQL macht man das doch mit select Count(*) ... for all entries in 'PRÜFTABELLE'. Hat jemand ne lösung die für Interne tabellen???
:oops:
Grüßle Sternschnuppe

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von Jan (Site Admin / 188 / 18 / 14 ) »
Hi, Sternschnuppe!
vielleicht kann dir da der befehl collect weiterhelfen. Die F1 hilfe zu dem Befehl ist ziemlich aufschlußreich.

Ciao Jan 8)

Beitrag von DRABAP (ForumUser / 30 / 0 / 1 ) »
Der COLLECT ist eigentlich eher zum Verdichten von numerischen Felder des Zeilentyp gedacht (die nicht Teil des Schlüssels sind). Wenn ich das Problem richtig verstanden habe könnte auch ein Loop helfen. Beispiel

Code: Alles auswählen.

LOOP AT itab WHERE condition.
ENDLOOP.
IF sy-tabix <> soll.
   ...
ENDIF.
Die WHERE-Klausel entspricht weitgehend der des SELECT. Auf internen Tabellen sind die Aggregatfunktionen leider nicht möglich.
Dr. ABAP

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
DRABAP hat geschrieben:Der COLLECT ist eigentlich eher zum Verdichten von numerischen Felder des Zeilentyp gedacht (die nicht Teil des Schlüssels sind). Wenn ich das Problem richtig verstanden habe könnte auch ein Loop helfen. Beispiel

Code: Alles auswählen.

LOOP AT itab WHERE condition.
ENDLOOP.
IF sy-tabix <> soll.
   ...
ENDIF.
Meinst Du LOOP AT temp_itab WHERE ... innerhalb von LOOP AT itab ...?
Und die sy-tabix-Abfrage nach ENDLOOP habe ich auch nicht ganz verstanden.
(Wenn es auch Einträge in itab gibt ohne passende Einträge in temp_itab (also temp_itab ohne zur WHERE-Bedingung passende Einträge), wird SY-TABIX nicht verändert.

COLLECT in eine neue Tabelle ist je nach Anzahl Einträge in den beiden Tabellen (und Anzahl von Wiederholungen in temp_itab) effektiver als die von Dir vorgeschlagene Lösung (vorausgesetzt, ich habe sie halbwegs richtig interpretiert), da nur einmal über temp_itab geloopt werden muß. Die F1-Hilfe zu COLLECT sollte man dazu aber unbedingt mal gelesen haben.

Anders sieht es aus, wenn beide itabs sowieso schon entsprechend sortiert sind.
Da gibt es in der SE30 unter Tipps&Tricks entsprechende Hinweise, wie man die itabs noch effektiver prozessieren könnte. (Im Prinzip nur ein LOOP über itab und innerhalb der LOOP mit READ TABLE temp_itab INDEX ... ab zuletzt prozessiertem Index von temp_itab weitermachen.)

Frank

Beitrag von DRABAP (ForumUser / 30 / 0 / 1 ) »
@all: habe das Problem falsch verstanden! Die Lösung mit dem COLLECT und der zweiten Tabelle ist genau das Richtige! Mein Vorschlag simuliert lediglich die Aggregatfunktion COUNT( ) auf einer internen Tabelle. Dabei ist sind jedoch noch zwei weitere Fehler zu bemängeln: Zum einen sollte man den Zusatz TRANSPORTING NO FIELDS verwenden. Zum anderen muß man die Anzahl die Anzahl der Schleifendurchäufe selbst zählen, da sy-tabix nach dem Schleifendurchlauf natürlich nicht die Anzahl der Durchläufe enthält. Aber wie gesagt, das ganze löst nicht das Problem hier.[/u]
Dr. ABAP

Seite 1 von 1

Vergleichbare Themen

10
Antw.
1781
Views
iTab-Zeile in ein Feld eintragen
von Nordlicht » 11.04.2019 12:34 • Verfasst in ABAP® für Anfänger
2
Antw.
2291
Views
Bestimmte Anzahl Datensätze in ITAB schreiben für Anzeige.
von Mavrix » 18.01.2007 15:32 • Verfasst in ABAP® für Anfänger
30
Antw.
18124
Views
move itab 1 nach itab 2 mit bedingung
von c oco » 17.04.2012 14:39 • Verfasst in ABAP® für Anfänger
2
Antw.
8553
Views
Hinweistext in Entgeltnachweis eintragen?
von P Anders » 04.07.2007 19:25 • Verfasst in Human Resources
1
Antw.
919
Views
SELECT-FROM-Befehl und Löschen von Einträgen
von lr_1504 » 10.01.2020 16:53 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.