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 / 4395 / 223 / 1182 ) »
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 / 4395 / 223 / 1182 ) »
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 / 4395 / 223 / 1182 ) »

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 / 4395 / 223 / 1182 ) »
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.
1518
Views
Zählen in einer Tabellen
von hmaxi96 » 13.04.2016 10:12 • Verfasst in ABAP® für Anfänger
24
Antw.
5573
Views
Felder mehrerer Tabellen zählen
von Kai999 » 12.04.2017 09:33 • Verfasst in ABAP® für Anfänger
4
Antw.
6664
Views
gruppieren von internen Tabellen
von debianfan » 18.01.2018 03:17 • Verfasst in ABAP® für Anfänger
3
Antw.
3985
Views
feldkatalog von internen tabellen?
von ismailer » 17.01.2005 11:47 • Verfasst in ABAP Objects®
5
Antw.
2870
Views
feldkatalog von internen tabellen?
von ismailer » 18.01.2005 13:50 • Verfasst in ABAP® Core

Ü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.

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2406
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8996