Erstmal vielen Dank für die ganzen Antworten. Genau es soll als Programmierübung dienen. Den Quellcode habe ich leider grad nicht zur Hand (hätte ich erst Montag wieder), mich wurmt es aber das ich einfach keinen Lösungsansatz hinbekommen habe.DeathAndPain hat geschrieben: ↑03.01.2020 11:23Ansonsten ist das auch in ABAP leicht zu bewerkstelligen und wäre sicherlich eine gute Programmierübung, wenn Du es noch nicht beherrschst. Aber dazu wäre es extrem hilfreich, wenn Du Deinen bisherigen Code zum besten geben könntest (bitte einschließlich aller Typ- und Felddefinitionen). Dann sehen wir, in welcher Form/in welchen Feldern Du genau die Daten bisher vorzuliegen hast und können Dir konkrete Programmiervorschläge machen.
Code: Alles auswählen.
AT END OF meine_tabelle.
SUM.
WRITE: 'Gesamtzahl', meine_tabelle-anzahl.
ENDAT.
Code: Alles auswählen.
TYPES: BEGIN OF meine_tabelle,
abwesenheitsart(20) TYPE C,
anzahl TYPE I,
END OF meine_tabelle.
DATA: meine_tabelle TYPE STANDARD TABLE OF meine_tabelle WITH EMPTY KEY, " SORTED oder HASHED würde mit beliebigem Schlüssel auch funktionieren; spielt für mein Beispiel keine Rolle
summe TYPE I.
PERFORM fill_table CHANGING meine_tabelle.
LOOP AT meine_tabelle ASSIGNING FIELD-SYMBOL(<meine_tabelle>).
ADD <meine_tabelle>-anzahl TO summe.
ENDLOOP.
WRITE summe.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ArjenR
Code: Alles auswählen.
summe = REDUCE #( INIT my_sum = 0 FOR tab_line IN meine_tabelle NEXT my_sum = my_sum + tab_line-anzahl ).
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain
Alle Modularisierung in Ehren, aber eine eigene Methode nur fürund ich das, was der REDUCE #( FOR... ) kann lieber in eine Methode auslagere, da ich eine FOR-Schleife nicht für wirklich übersichtlicher halte als eine LOOP-Schleife.
Code: Alles auswählen.
LOOP AT meine_tabelle ASSIGNING FIELD-SYMBOL(<meine_tabelle>).
ADD <meine_tabelle>-anzahl TO summe.
ENDLOOP.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
ArjenR
Code: Alles auswählen.
SELECT SUM( anzahl )
FROM @lt_data AS l
INTO @DATA(lv_data).
Folgende Benutzer bedankten sich beim Autor nickname8 für den Beitrag (Insgesamt 2):
ArjenR • black_adept
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
ArjenR
Code: Alles auswählen.
add itab-anzahl to summe.
write:/ summe.
Code: Alles auswählen.
ADD 1 to summe.
Code: Alles auswählen.
summe = summe + 1.
Ja, wenn ich die interne Tabelle meine_tabelle mit Kopfzeile deklariere und dann den LOOP ohne INTO mache. 😜An dich und auch an die anderen Rätselfreunde hier: Es gibt ein Konstrukt welches noch ein wenig kürzer ist als alle bisher genannten( Anzahl Buchstaben ) um die Summe über die Tabellenspalte zu bilden. 😲
Release 7.54DeathAndPain hat geschrieben: ↑07.01.2020 11:03Vielleicht sollte man noch erwähnen, dass der Befehl ADD ... TO ebenso wie seine Schwesterbefehle SUBTRACT ... FROM, DIVIDE ... BY usw. aus der alten Zeit stammen und von der SAP stilistisch nicht mehr empfohlen werden. Ich nutze sie aber ganz bewusst weiter, weil ich
ADD 1 to summe.
aussagekräftiger (und damit besser verständlich) finde als das von der SAP empfohlene
summe = summe + 1.
Nö - geh mal von einer ohne Kopfzeile definierten Tabelle aus. Es geht tatsächlich kürzer, wahrscheinlich aber erst ab Release 7.40, SP02DeathAndPain hat geschrieben: ↑07.01.2020 11:03Ja, wenn ich die interne Tabelle meine_tabelle mit Kopfzeile deklariere und dann den LOOP ohne INTO mache. 😜