Durchschnittsalter berechnen

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

Durchschnittsalter berechnen

Beitrag von quricky (ForumUser / 2 / 0 / 0 ) »
Hallo zusammen,

als absoluter Neuling in der ABAP-Welt steh ich momentan vor einem Problem. Ich möchte von beliebig vielen Personen das Durchschnittsalter berechnen.
Habe schon diverses nachgelesen, doch entweder passt es nicht ganz oder ich kann es nicht richtig einsetzen.
Angesetzt hätte ich bei Infotyp 2 und dem Feld gbdat. Aktuell habe ich eine Aufzählung aller Geburtsdaten der Personen.
Wie kann ich jetzt darauf basierend das Alter und dann den Durchschnitt errechnen?

Vielen Dank schonmal für eure Hilfe und Anregungen.

Quricky

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


Re: Durchschnittsalter berechnen

Beitrag von ABeginner (ForumUser / 3 / 0 / 0 ) »
Ich bin zwar kein abap Programmierer, aber berechne doch einfach die Alter der Personen, addiere diese und teile dies mit der Anzahl der erfassten Personen?
Zum das Alter berechnen würde ich hergehen und beide Daten in ein berechenbares Format bringen, abziehen und daraus die Tage/Monate oder was auch immer berechnen.

Re: Durchschnittsalter berechnen

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Naja, da müsste man vorher schon wissen, welchen "Durchschnitt" er haben will. Arithmetisches Mittel? Geometrisches Mittel? Median? Modus?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Durchschnittsalter berechnen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
man könnte sich auch eine Liste ausgeben lassen in der TA: S_AHR_61016362 da wäre das Alter in Jahren des Mitarbeiters verfügbar.
<:: XING-Gruppe Tricktresor::>

Re: Durchschnittsalter berechnen

Beitrag von miru77 (ForumUser / 68 / 10 / 7 ) »
Also erstmal brauchst du zwei Daten, sprich Geburtsdatum (P0002-GBPAS) und einen Stichtag für den du das Alter ermitteln willst. So würde es z.B. gehen:

Code: Alles auswählen.

 DATUM_ALT = P0002-GBPAS. "Geburtsdatum
 DATUM_NEU = SY-DATUM.     "heutiges Datum

  IF DATUM_NEU+4(4) LT DATUM_ALT+4(4).
    DATUM_NEU(4) = DATUM_NEU(4) - 1.
    TRANSLATE DATUM_NEU USING ' 0'.
  ENDIF.

  ALTER = DATUM_NEU(4) - DATUM_ALT(4). 
Wenn du dann eine interne Tabelle erstellst, könntest du anschließend die Anzahl der Einträge und auch den Durchschnitt ermitteln.

Code: Alles auswählen.

LOOP AT TAB.
  IF TAB-ALTER IS NOT INITIAL. 
         ANZAHL = ANZAHL + 1. 
         ALTERGES = ALTERGES + TAB-ALTER.
  ENDIF.
ENDLOOP.

DURCHSA = ALTERGES / ANZAHL.
Nur als Beispiel, geht sicher noch eleganter...

Re: Durchschnittsalter berechnen

Beitrag von black_adept (Top Expert / 4086 / 126 / 940 ) »
ralf.wenzel hat geschrieben:Naja, da müsste man vorher schon wissen, welchen "Durchschnitt" er haben will. Arithmetisches Mittel? Geometrisches Mittel? Median? Modus?
Unter Durchschnit versteht man i.A. das arithmetische Mittel.

Die Frage (gerade bei "Alter") ist eher. Wann und wohin wird gerundet.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Durchschnittsalter berechnen

Beitrag von quricky (ForumUser / 2 / 0 / 0 ) »
ratsnus hat geschrieben:man könnte sich auch eine Liste ausgeben lassen in der TA: S_AHR_61016362 da wäre das Alter in Jahren des Mitarbeiters verfügbar.
erst mal vielen Dank für eure Hilfe bisher. Die Idee von ratsnus gefällt mir ganz gut. Darunter kann ich mir etwas vorstellen. Nur wie sieht das das mit dem Coding aus, kann man einfach den Report ausgeben lassen?
Das Feld existiert in der Struktur p0002_af, Feld empl-age. Diese wollte ich mir jetzt über die Write-Anweisung anzeigen lassen, doch das scheint auch noch nicht ganz zu klappen. Bzw müsste ich noch weiteres hinzufügen?

Danke schonmal

Re: Durchschnittsalter berechnen

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
ok noch einfacher wäre für die Berechnung des Alters den FUBA: HR_AUPBS_AGE zu benutzen.

Code: Alles auswählen.

tables: pa0001.

data: begin of itab occurs 0,
        pernr like pa0001-pernr,
        age   like T71GS-LOVAL,
      end of itab.

data: rows     TYPE i,
      summe    like T71GS-LOVAL,
      mittel   type T71GS-LOVAL.

select-options: per_num for pa0001-pernr.

select distinct pernr from pa0001 into itab-pernr
  where pernr in per_num.

  CALL FUNCTION 'HR_AUPBS_AGE'
    EXPORTING
      PERNR                  = itab-pernr
      BSDTE                  = sy-datum
*     REACTION               = ' '
    IMPORTING
      VALUE                  = itab-age
    EXCEPTIONS
      RECORD_NOT_FOUND       = 1
      OTHERS                 = 2
            .
  append itab.
endselect.

rows = lines( itab ).

loop at itab.
  write:/ itab-pernr,
          itab-age.
  at last.
    sum.
    move itab-age to summe.
  endat.
endloop.

mittel = summe / rows.

write:/ 'Für ', rows, 'selektierte Mitarbeiter beträgt das Durchschnittsalter: ',  mittel, ' Jahre'.
mal ein einfaches lauffähiges Beispiel.
gruss
ratsnus
<:: XING-Gruppe Tricktresor::>

Seite 1 von 1

Vergleichbare Themen

5
Antw.
2326
Views
Datumsdifferenz berechnen
von Florian9999 » 18.03.2019 09:08 • Verfasst in ABAP® für Anfänger
1
Antw.
1338
Views
Bonusstaffel berechnen
von Franke_ba » 19.05.2024 23:28 • Verfasst in ABAP® für Anfänger
4
Antw.
4601
Views
Differenztage berechnen
von jeyloeso » 26.09.2012 08:47 • Verfasst in ABAP® für Anfänger
5
Antw.
23285
Views
Datum berechnen
von schroeta » 19.07.2007 11:41 • Verfasst in ABAP® für Anfänger
4
Antw.
2593
Views
Datumsfeld berechnen
von Fools » 07.04.2005 15:52 • Verfasst in ABAP® für Anfänger

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

Daten an Tabelle binden
Gestern von Bright4.5 1 / 499
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2139
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8735