Jahr aus sy-datum auslesen

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

Jahr aus sy-datum auslesen

Beitrag von Gast ( / / 0 / 3 ) »
Hallo zusammen,

wie kann ich aus dem sy-datum nur das Jahr auslesen?

Ich möchte in meinem Programm das AKTJAHR dur das sy-datum ersetzen, doch davon brauche ich aber nur das Jahr.
Kennt das jemand von Euch und kann mir vielleicht weiter helfen?

Code: Alles auswählen.

PARAMETERS: GEBJAHR(4) TYPE N,
            AKTJAHR(4) TYPE N.

DATA: ZAEHLINDEX  TYPE i,
      ALTER(4)        TYPE i.

ALTER = AKTJAHR - GEBJAHR.
ZAEHLINDEX = 1.
uline.

IF GEBJAHR < AKTJAHR.
    WHILE ZAEHLINDEX <= ALTER.
          WRITE: / GEBJAHR, 'befanden Sie sich im ', ZAEHLINDEX, '-ten Lebensjahr'.
          ZAEHLINDEX = ZAEHLINDEX + 1.
          GEBJAHR = GEBJAHR + 1.
    ENDWHILE.
uline.
    WRITE: / AKTJAHR, 'beenden Sie das', Alter, 'Lebensjahr'.
ELSE.
    WRITE: / 'Sie sind noch gar nicht geboren :-)'.
ENDIF.
Vielen Dank.

Gruß Agnes

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


Beitrag von Chrisu (Specialist / 225 / 0 / 1 ) »

Code: Alles auswählen.

DATA: aktjahr(4) TYPE n.

aktjahr = sy-datum(4).

Beitrag von Aggu (ForumUser / 11 / 0 / 0 ) »
Hey,

das klappt irgendwie nicht.

Ich muss mein Geburtsdatum einlesen z.B. 21.06.1977
Doch die Ausgabe muss so aussehen:

1977 befanden Sie sich im ersten Lebensjahr
1978 befanden Sie sich im zweiten Lebensjahr
usw.

Doch einlesen muss ich mein ganzes Geburtsdatum, davon irgendwie nur das Jahr in eine Variable speichern, sowie das Jahr vom sy-datum auch.

Ich komme damit nicht klar, kann mir jemand helfen????

Gruß Agnes

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Aggu hat geschrieben:das klappt irgendwie nicht.
Ohne dass Du Deinen Code hier postest, ist es schwer zu erraten, was Du falsch gemacht hast.

Beitrag von Aggu (ForumUser / 11 / 0 / 0 ) »
Hey,

mein Code ist im Moment so:

Code: Alles auswählen.

PARAMETERS: GEBJAHR(4) TYPE N.

*GEBJAHR(4) TYPE N.
*GEBJAHR LIKE SY-DATUM.
*GEBJAHR = GEBJAHR(4).

DATA: AKTJAHR(4) TYPE n.
      AKTJAHR = sy-datum(4).
      
DATA: ZAEHLINDEX  TYPE i,
      ALTER(4)    TYPE i.

ALTER = AKTJAHR - GEBJAHR.
ZAEHLINDEX = 1.
uline.

IF GEBJAHR < AKTJAHR.
WHILE ZAEHLINDEX <= ALTER.
WRITE: / GEBJAHR, 'befanden Sie sich im ', ZAEHLINDEX, '-ten
Lebensjahr'.
ZAEHLINDEX = ZAEHLINDEX + 1.
GEBJAHR = GEBJAHR + 1.
ENDWHILE.
uline.
WRITE: / AKTJAHR, 'beenden Sie das', Alter, 'Lebensjahr'.
ELSE.
WRITE: / 'Sie sind noch gar nicht geboren :-)'.
ENDIF.
So funktioniert es, aber die Eingabe ist nur das Jahr. Ich möchte dass die Eingaben das ganze Geburtsdatum ist, also 21.06.1977 und die Ausgabe halt:

1977 befanden Sie sich im 1 Lebensjahr
1978 befanden Sie sich im 2 Lebensjahr
usw.

Gruß Agnes

Beitrag von Gast ( / / 0 / 3 ) »
So mal eben 'hingehackt' (lässt sich noch schöner und einfacher gestalten, das bleibt nun Dir überlassen):

Code: Alles auswählen.

PARAMETERS: gebjahr TYPE d,
            aktjahr TYPE d DEFAULT sy-datum.

DATA: zaehlindex     TYPE i value 1,
      alter          TYPE i,
      lebenjahr      TYPE i,
      zaehljahr(4)   TYPE n.

alter = aktjahr - gebjahr.
lebenjahr = FLOOR( alter / 365 ) + 1.
alter = ABS( alter / 365 ).

ULINE.
IF gebjahr+0(4) < aktjahr+0(4).
  zaehljahr = gebjahr+0(4).
  WHILE zaehlindex <= alter.
    WRITE: / zaehljahr, 'befanden Sie sich im ', zaehlindex, '-ten Lebensjahr'.
    zaehlindex = zaehlindex + 1.
    zaehljahr = zaehljahr + 1.
  ENDWHILE.
  ULINE.
  WRITE: / aktjahr, 'sind Sie im', lebenjahr, 'Lebensjahr'.
ELSE.
  WRITE: / 'Sie sind noch gar nicht geboren :-)'.
ENDIF.

Beitrag von Aggu (ForumUser / 11 / 0 / 0 ) »
Hey,

das funktioniert ja super, vielen Dank für Deine Mühe, doch ich kann das leider so nicht übernehmen, weil wir in der Schule noch nicht soweit sind, FLOOR und ABS kenne ich nicht, und ich werde es erklären müssen.
Kann man das nicht mit meinem Ansatz lösen?

Gruß Agnes

Beitrag von Gast ( / / 0 / 3 ) »
Klar, Du kannst das auch so machen:

Code: Alles auswählen.

alter = aktjahr+0(4) - gebjahr+0(4).
lebenjahr = alter + 1.
anstelle von:

Code: Alles auswählen.

alter = aktjahr - gebjahr. 
lebenjahr = FLOOR( alter / 365 ) + 1. 
alter = ABS( alter / 365 ). 

Seite 1 von 1

Vergleichbare Themen

0
Antw.
2054
Views
Datum KonvertExit ohne Jahr
von DeathGuardian » 18.04.2008 14:58 • Verfasst in Dialogprogrammierung
3
Antw.
5216
Views
Dynamische Maßnahme Feld Datum +1 Jahr
von Chris2104 » 30.03.2020 09:32 • Verfasst in Human Resources
2
Antw.
3762
Views
lokal Datei-Datum auslesen
von herr mb » 14.01.2011 08:54 • Verfasst in ABAP® Core
3
Antw.
3975
Views
Aus Excel Datum auslesen und konvertieren
von Nadine_2706 » 26.07.2011 10:20 • Verfasst in ABAP® für Anfänger
8
Antw.
3348
Views
Auslesen die erste 8 Stelle von Datum
von ABAPLover » 19.07.2023 22:06 • Verfasst in ABAP® für Anfänger

Ü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

Aktuelle Forenbeiträge

LSMW-Problem
Gestern von mazu gelöst 5 / 933
ATC Finding in Smartforms
vor 5 Tagen von sap_enthusiast 2 / 918

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.

Aktuelle Forenbeiträge

LSMW-Problem
Gestern von mazu gelöst 5 / 933
ATC Finding in Smartforms
vor 5 Tagen von sap_enthusiast 2 / 918

Unbeantwortete Forenbeiträge

SFP/SEGW - Fehler beim Rendering
letzen Monat von Manfred K. 1 / 84019
Benutzerdefinierte Felder PSP
January 2026 von Rabea1103 1 / 137208