Aufsummierung eines Feldes in interner Tabelle

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Aufsummierung eines Feldes in interner Tabelle

Beitrag von Ron (ForumUser / 4 / 0 / 0 ) »
Hallo in die Runde !

ich bitte Euch um Eure Unterstützung, denn folgende Aufgabe bekomme ich leider nicht hin, auch nicht nach x-facher Recherche.

In einen internen Tabelle möchte ich im Loop das Feld ZBNKN aufsummieren in Abhängigkeit von Feld LAUFI, also immer wenn LAUFI sich ändert.

Beispiel: Am Ende von 24MC1 möchte ich Summe von 18988394 + 2751518 +190142216.

Am Ende von 24MC2 möchte ich die Summe von 2047039 + 36990000.

Nach 24MC6 z.B. nur den Wert 7448768.

LAUFI ZBNKN

24MC1 18988394
24MC1 2751518
24MC1 190142216
24MC2 2047039
24MC2 36990000
24MC3 40346231
24MC3 21428574
24MC4 18102951
24MC5 84216000
24MC6 7448768

Ich bekomme es nicht hin. Könnt Ihr mir helfen?

Danke & Gruss
Ron

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


Re: Aufsummierung eines Feldes in interner Tabelle

Beitrag von PeterPaletti (Specialist / 376 / 35 / 103 ) »

Code: Alles auswählen.

DATA: lt_vbap TYPE TABLE OF vbap,
      ls_vbap TYPE vbap.
DATA: menge TYPE vbap-kwmeng.
SELECT * FROM vbap INTO TABLE lt_vbap UP TO 200 ROWS.
SORT lt_vbap BY vbeln.
LOOP AT lt_vbap INTO ls_vbap.
  AT NEW vbeln.
    CLEAR menge.
    WRITE: / 'Verkaufsbeleg:', ls_vbap-vbeln.
  ENDAT.
  WRITE: / 'Position:', ls_vbap-posnr, ls_vbap-kwmeng.
  menge = menge + ls_vbap-kwmeng.
  AT END OF  vbeln.
    WRITE: / 'Verkaufsbeleg:', ls_vbap-vbeln, menge.
  ENDAT.
ENDLOOP.
So in etwa?

Re: Aufsummierung eines Feldes in interner Tabelle

Beitrag von lenny-53 (ForumUser / 1 / 0 / 0 ) »
Ab Version 7.52 kann man SQL auf interne Tabellen nutzen:

Code: Alles auswählen.

SELECT laufi,
  SUM( zbkn ) AS sum
  FROM @itab AS i
  GROUP BY laufi
  INTO TABLE @DATA(sums).

Re: Aufsummierung eines Feldes in interner Tabelle

Beitrag von Lukas Sanders (ForumUser / 79 / 9 / 43 ) »
Hallo,

AT...ENDAT soll man ja eigentlich nicht mehr verwenden, moderner ginge es mit LOOP AT...GROUP BY und REDUCE:

Code: Alles auswählen.

  LOOP AT gt_table REFERENCE INTO DATA(gr_group) GROUP BY gr_group->laufi.

    APPEND INITIAL LINE TO gt_sums ASSIGNING FIELD-SYMBOL(<fs_sum>).

    <fs_sum>-laufi = gr_group->laufi.

    <fs_sum>-zkbnk = REDUCE #( INIT sum = 0
                               FOR <fs_line> IN GROUP gr_group
                               NEXT sum = sum + <fs_line>-zkbnk ).

  ENDLOOP.
GT_TABLE ist bei mir die Tabelle, die die eigentlichen Daten enthält. GT_SUMS wäre die Summentabelle, die hier nur die Felder LAUFI und ZKBNK hat.

Bei LOOP AT...GROUP BY wird vereinfacht gesagt zunächst nach dem Merkmal LAUFI gruppiert, sodass man nicht direkt alle Zeilen durchläuft, sondern die Tabelle nach diesem Merkmal in kleinere Gruppen (hier GR_GROUP) zerlegt.

Innerhalb dieser "Gruppen-Schleife" füge ich dann zunächst für jeden Wert von LAUFI eine neuen Zeile zur Summentabelle hinzu. Bei der REDUCE-Anweisung wird sozusagen eine Schleife definiert, in welcher zunächst eine leere Variable sum mit dem Wert 0 angelegt wird (INIT). Für jeden Datensatz in der Gruppe wird dann die Anweisung hinter NEXT ausgeführt. Funktional ist dieser Teil in etwa vergleichbar mit:

Code: Alles auswählen.

DATA sum TYPE i. 

LOOP AT gr_group ASSIGNING <fs_line>.
  sum = sum + <fs_line>-zkbnk.
ENDLOOP. 
Der Wert, den sum letztlich hat, wird dann zum Ergebnis der REDUCE-Anweisung.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1971
Views
Teil eines Feldes in interner Tabelle deklarieren
von Danielra » 29.04.2013 12:49 • Verfasst in ABAP® für Anfänger
3
Antw.
6395
Views
Gesamtsumme eines Feldes / Interne Tabelle
von isp » 31.10.2012 17:25 • Verfasst in ABAP® für Anfänger
6
Antw.
2837
Views
Aufsummierung einer Spalte
von milka_12 » 16.03.2011 13:52 • Verfasst in ABAP® für Anfänger
2
Antw.
2404
Views
Problem mit interner Tabelle
von Troilus » 17.11.2007 23:09 • Verfasst in ABAP® Core
1
Antw.
5982
Views
Move-Corresponding mit interner Tabelle
von Dele » 13.10.2015 13:53 • Verfasst in Tips + Tricks & FAQs

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

Benutzerdefinierte Felder PSP
letzen Monat von Rabea1103 1 / 46506
Spool vereinen OTF und PDF
letzen Monat von anna2205 1 / 62843
XSLT und Loipro05 Transformation
December 2025 von Torsten1965 1 / 71988
VOLL Artikel in einem Display Typ 12
November 2025 von ThomasM84 1 / 91276