Gruppenwechsel zwecks Zählen in internen Tabellen

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

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

Gruppenwechsel zwecks Zählen in internen Tabellen

Beitrag von Bastian599 (ForumUser / 4 / 3 / 0 ) »
Hallo zusammen,
habe ein kleines Problem:
Ich soll die Anzahl aller Objekte in einer Tabelle je "objecttyp" in einem Protokoll ausgeben.
Also z.B.

Objekttyp 10: 104 Einträge
Objekttyp 11: 110 Einträge
Objekttyp 18: 22 Einträge


Hierfür benutze ich folgenden Code:

Code: Alles auswählen.

SORT gt_vo_data BY objecttyp.
LOOP AT gt_vo_data INTO DATA(wa_combine).
  AT NEW objecttyp.
    CLEAR gv_counter.
    gv_temp = wa_combine-objecttyp.
ENDAT.
ADD 1 TO gv_counter.
  AT END OF objecttyp.
      Gcl_protokoll->add_zeile( EXPORTING iv_text = | objecttyp { gv_temp }:.....| Iv_anzahl =  gv_counter ).
  ENDAT.
ENDLOOP.
Das Ergebnis sieht dann jedoch wie folgt aus:


Objekttyp 10: 10 Einträge
Objekttyp 10: 5 Einträge
Objekttyp 10: 19 Einträge
Objekttyp 10: 2 Einträge
Objekttyp 11: 12 Einträge
Objekttyp 11: 22 Einträge
...

Kann mir jemand sagen, was ich falsch gemacht habe, das erschließt sich mir gerade nicht ganz.

Danke und liebe Grüße!

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


Re: Gruppenwechsel zwecks Zählen in internen Tabellen

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »
An welcher Position befindet sich das Feld "objecttyp" in deiner Struktur?
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Gruppenwechsel zwecks Zählen in internen Tabellen

Beitrag von Bastian599 (ForumUser / 4 / 3 / 0 ) »
a-dead-trousers hat geschrieben:
27.07.2020 11:29
An welcher Position befindet sich das Feld "objecttyp" in deiner Struktur?
An letzter Stelle, in diesem Fall an der vierten.

Re: Gruppenwechsel zwecks Zählen in internen Tabellen

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »
AT NEW berücksichtigt auch Feldänderungen in den Feldern die VOR dem eigentlichen Feld positioniert sind (siehe ABAB-Hilfe).

Wenn du die Feldreihenfolge nicht beeinflussen kannst, muss du entweder selber was mit einer Variable basteln wo du prüfst ob sich der Feldinhalt geändert hat (Sortieren nicht vergessen!) oder du verwendest das neue LOOP AT ... GROUP BY. Da würdest du mit GROUP SIZE bereits das Ergebnis rausbekommen, das du möchtest.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Bastian599

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Gruppenwechsel zwecks Zählen in internen Tabellen

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »

Code: Alles auswählen.

LOOP AT gt_vo_data ASSIGNING FIELD-SYMBOL(<ls_vo_data>)
  GROUP BY ( objecttyp = <ls_vo_data>-objecttyp count = GROUP SIZE ) ASSIGNING FIELD-SYMBOL(<ls_vo_data_group>).
  Gcl_protokoll->add_zeile( EXPORTING iv_text = | objecttyp { <ls_vo_data_group>-objecttyp }:.....| Iv_anzahl = <ls_vo_data_group>-count ).
ENDLOOP.
Sortieren ist dabei sogar unnötig.

EDIT:
Kleine Fehlerkorrektur.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Bastian599

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Gruppenwechsel zwecks Zählen in internen Tabellen

Beitrag von Bastian599 (ForumUser / 4 / 3 / 0 ) »
a-dead-trousers hat geschrieben:
27.07.2020 12:21

Code: Alles auswählen.

LOOP AT gt_vo_data ASSIGNING FIELD-SYMBOL(<ls_vo_data>)
  GROUP BY ( objecttyp = <ls_vo_data>-objecttyp count = GROUP SIZE ) ASSIGNING FIELD-SYMBOL(<ls_vo_data_group>).
  Gcl_protokoll->add_zeile( EXPORTING iv_text = | objecttyp { <ls_vo_data_group>-objecttyp }:.....| Iv_anzahl = <ls_vo_data_group>-count ).
ENDLOOP.
Sortieren ist dabei sogar unnötig.

EDIT:
Kleine Fehlerkorrektur.
Also ich hatte es jetzt so gelöst, damit klappt es auch prima.
Wenn ich mal fragen darf, so rein aus Neugierde, was genau ist der Unterschied zwischen unseren Lösungen? :)

Code: Alles auswählen.

LOOP AT gt_vo_data INTO DATA(wa)
                  GROUP BY ( key1 = wa-objecttyp
                             size = GROUP SIZE )
                  INTO DATA(key).
     Gcl_protokoll->add_zeile( EXPORTING iv_text = | objecttyp { key-key1 }:.....| Iv_anzahl =  key-size ).
ENDLOOP.

Re: Gruppenwechsel zwecks Zählen in internen Tabellen

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »
Also, außer den unterschiedlichen Variablennamen (key1), verwendest du Workareas und ich Field-Symbols.
Das kann bei langen bzw. breiten Tabellen durchaus zu unterschiedlichen Laufzeiten führen. Bei einem INTO wird der gesamte Inhalt einer Zeile in ein neues Feld kopiert, bei ASSIGNING (und REFERENCE INTO) wird nur mit einem Zeiger auf den Feldinhalt gearbeitet.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Bastian599

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Gruppenwechsel zwecks Zählen in internen Tabellen

Beitrag von Bastian599 (ForumUser / 4 / 3 / 0 ) »
Ahh okay, dann passe ich das noch dementsprechend an.

Vielen Dank für deine Hilfe!

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1572
Views
Zählen in einer Tabellen
von hmaxi96 » 13.04.2016 10:12 • Verfasst in ABAP® für Anfänger
24
Antw.
6017
Views
Felder mehrerer Tabellen zählen
von Kai999 » 12.04.2017 09:33 • Verfasst in ABAP® für Anfänger
4
Antw.
6756
Views
gruppieren von internen Tabellen
von debianfan » 18.01.2018 03:17 • Verfasst in ABAP® für Anfänger
5
Antw.
3973
Views
Vergleich von internen Tabellen
von Artie200 » 01.02.2011 16:42 • Verfasst in ABAP® für Anfänger
3
Antw.
2261
Views
Inhaltübergabe bei internen Tabellen
von castadiva » 22.10.2007 12:47 • 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

Aktuelle Forenbeiträge

Mahnung erstellen
vor 18 Stunden von wreichelt 2 / 35
Absprung VA02 Position
vor 20 Stunden von gs3rr4 gelöst 3 / 45
OPD Druck im SPOOL
vor 21 Stunden von Manfred K. 1 / 29

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.

Aktuelle Forenbeiträge

Mahnung erstellen
vor 18 Stunden von wreichelt 2 / 35
Absprung VA02 Position
vor 20 Stunden von gs3rr4 gelöst 3 / 45
OPD Druck im SPOOL
vor 21 Stunden von Manfred K. 1 / 29

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor 21 Stunden von Manfred K. 1 / 29
Export von Spools in XLSX
vor 5 Tagen von abapamateur 1 / 444