Summieren von Zeilen in einer internen Tabelle

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

Summieren von Zeilen in einer internen Tabelle

Beitrag von kaim77 (Specialist / 200 / 0 / 0 ) »
Guten Tag zusammen,

ich habe eine interne Tabelle die in einer Spalte das Datum hat. In einer Spalte ist eine Struktur, die einen Schlüssel besitzt. In einer anderen Spalte sind Werte hinterlegt.

Jetzt möchte ich dass die Werte nicht einzeln ausgegeben werden, sondern diese sollen nach der Spalte Datum und und dem Schlüssel aus der Struktur aufsummiert werden.

Tabelle ursprünglich:
|Datum|Schlüssel(Struktur mit den Elementen;ID und Schlüssel)|Wert|
|20190104|ID=1, Schlüssel=2765|250|
|20190104|ID=1, Schlüssel=2765|300|
|20190104|ID=1, Schlüssel=2765|100|
|20190104|ID=1, Schlüssel=2722|100|
|20190104|ID=1, Schlüssel=2722|400|
|20190105|ID=1, Schlüssel=2722|300|

so soll die Tabelle nachher aussehen:

|20190104|ID=1, Schlüssel=2765|650|
|20190104|ID=1, Schlüssel=2722|500|
|20190105|ID=1, Schlüssel=2722|300|

Viele Grüße
Kaim

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



Re: Summieren von Zeilen in einer internen Tabelle

Beitrag von jocoder (Specialist / 339 / 3 / 101 ) »
Schau dir mal das Demoprogramm DEMO_INT_TABLES_AT. Dort ist eine Möglichkeit beschrieben, wie Summen gebildet werden können.
Eine andere Möglichkeit besteht in der Verwendung des COLLECT-Befehls:

Code: Alles auswählen.

TYPES: BEGIN OF line_type,
  date TYPE d,
  key(100),
  numeric_field TYPE i,
END OF line_type.
DATA: result TYPE HASHED TABLE OF line_type
  WITH UNIQUE KEY date key,
  input TYPE TABLE OF line_type.

LOOP AT input REFERENCE INTO DATA(line).
  COLLECT line->* INTO result.
ENDLOOP.
Wenn der gegebene Inhalt in die Tabelle input gestellt
wird und die Prozedur durchlaufen wird, erhält die Tabelle
result die aggregierten Daten.

Re: Summieren von Zeilen in einer internen Tabelle

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Tachn.

Es geht auch mit dem neuen REDUCE-Befehl. Hier mal ein Beispiel.

Code: Alles auswählen.

    value_tab = VALUE #(
                  ( date = sy-datum     key_struc-id = 1 key_struc-key_val = 2765 val = 250 )
                  ( date = sy-datum     key_struc-id = 1 key_struc-key_val = 2765 val = 300 )
                  ( date = sy-datum     key_struc-id = 1 key_struc-key_val = 2765 val = 100 )
                  ( date = sy-datum     key_struc-id = 1 key_struc-key_val = 2722 val = 100 )
                  ( date = sy-datum     key_struc-id = 2 key_struc-key_val = 2722 val = 400 )
                  ( date = sy-datum + 1 key_struc-id = 2 key_struc-key_val = 2722 val = 300 )
                  ).
 
    LOOP AT value_tab INTO DATA(values)
      GROUP BY ( date = values-date id = values-key_struc-id key_val = values-key_struc-key_val )
      ASCENDING
      ASSIGNING FIELD-SYMBOL(<group_key>).

      changed_tab = VALUE tab_ext( BASE changed_tab
              ( date =  <group_key>-date
                key_struc-id = <group_key>-id
                key_struc-key_val = <group_key>-key_val
                val = REDUCE #( INIT sum_val = 0
                                FOR line IN GROUP <group_key>
                                NEXT sum_val = sum_val + line-val ) ) ).

    ENDLOOP.

Grüße,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Seite 1 von 1

Vergleichbare Themen

13
Antw.
1463
Views
Report Summieren der Werte einer Internen Tabelle
von ArjenR » 03.01.2020 09:02 • Verfasst in ABAP® für Anfänger
4
Antw.
3473
Views
Anzahl Zeilen in einer internen Tabelle
von Otscho » 31.07.2007 12:59 • Verfasst in ABAP® für Anfänger
2
Antw.
24787
Views
Anzahl Zeilen einer internen Tabelle mit Lines
von Tanriverdi » 05.09.2008 11:35 • Verfasst in ABAP® für Anfänger
2
Antw.
3999
Views
Zeilen einer Internen Tabelle in Spalten ausgeben
von Gast » 07.07.2004 12:46 • Verfasst in ABAP® Core
3
Antw.
3351
Views
Gruppieren / Summieren in internen Tabellen
von eddi12 » 19.02.2008 12:10 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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.