Code: Alles auswählen.
REPORT.
SELECT-OPTIONS: s_datum FOR sy-datum.
PERFORM get_spmon.
FORM get_spmon .
DATA:lv_datum TYPE sydatum,
lt_spmon TYPE SORTED TABLE OF spmon WITH UNIQUE KEY table_line.
DO.
IF lv_datum IN s_datum.
INSERT lv_datum(6) INTO TABLE lt_spmon.
ENDIF.
IF lv_datum = '99991231'.
EXIT.
ENDIF.
ADD 1 TO lv_datum.
ENDDO.
LOOP AT lt_spmon ASSIGNING FIELD-SYMBOL(<lv_spmon>).
WRITE:/ <lv_spmon>.
ENDLOOP.
ENDFORM.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
swonny
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
DeathAndPain
1.1.0000 - 31.12.9999 ~ 10.000 Jahre ~ 3.650.000 Tage die verglichen werden müssen.DeathAndPain hat geschrieben: ↑27.04.2021 18:14Umm... wenn ich Deinen Code richtig deute, probierst Du jeden einzelnen Tag vom 01.01.1800 (oder wann die SAP-Zeitrechnung beginnt) bis zum 31.12.9999 durch.
Ist mir auch schon passiert. Ich musste für einen Kunden etwas programmieren, wo im SAP-Standard die Nachkommastellen "normal" nicht gereicht hatten, aber damit wir sauber rechnen konnten benötigten wir mehr. Glücklicherweise konnte man in dem Modul sowas wie Zähler und Nenner angeben, so dass wir da ziemlich dicht rankommen konnten.DeathAndPain hat geschrieben: ↑27.04.2021 18:14Ich staune, dass der ABAP-Interpreter das in einer sinnvollen Laufzeit ausführen kann. Da merkt man mal, wie schnell heutige Rechner rechnen.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain
Mist, haste auch wieder recht. 😁 Wahrscheinlich müsste man sich Algorithmen für alle Optionen ausdenken, die in einer RANGES-Tabelle vorkommen können und für jede davon den Zeitraum bestimmen, der davon eingeschlossen wird. Hinterher müsste man für diese Zeiträume entsprechend Teil- bzw. Vereinigungsmengen bilden, Ausschlussmengen abziehen und bräuchte dann nur noch die Tage in den verbleibenden Perioden durchzugehen.adt hat geschrieben:Ja, aber wenn genau der Monatserste aus der Datumsselektion heraus ausgeschlossen ist ...
Welches Unternehmen braucht denn sowas? War das ein Zugeständnis der SAP an Archäelogie-Institute? Für die wäre Christi Geburt als LOWDATE dann aber auch wieder nicht gut genug.black_adept hat geschrieben:1.1.0000 - 31.12.9999 ~ 10.000 Jahre ~ 3.650.000 Tage die verglichen werden müssen.
Und wenn du dich damit noch nie beschäftigt hast: SAP hat sogar die Umstellung vom Julianischen Kalender auf den Gregorianischen Kalender eingebaut. D.h. "Donnerstag, der 4. Oktober 1582" + 1 = "Freitag, der 15. Oktober 1582" .
Ich tippe auf den Vatikan oder andere klerikale Vereinigungen.DeathAndPain hat geschrieben: ↑28.04.2021 15:49Welches Unternehmen braucht denn sowas? War das ein Zugeständnis der SAP an Archäelogie-Institute? Für die wäre Christi Geburt als LOWDATE dann aber auch wieder nicht gut genug.