Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von swonny (Specialist / 102 / 10 / 2 ) »
Hallo Experten,
habe im Forum leider keinen passenden Beitrag gefunden.

Gibt es vielleicht einen Funktionsbaustein über dem ich innerhalb einer Selektion den Monat das Jahr ermitteln kann?

Beispiel :
Selektion im Report 01.01.2020 - 31.03.2020

Ausgabe: MM / JJJJ
01 2020
02 2020
03 2020


Viele Grüße
swonny

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


Re: Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
Beispiel mit dem einen oder anderen Optimierungspotential aber lauffähig auch für wilde Select-Options Belegungen mit Ausschluss von Intervallen:

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

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von swonny (Specialist / 102 / 10 / 2 ) »
Gute Lösung, eingetlich ganz einfach wenn man es dann sieht.
Viele Dank.

Re: Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
Edit: Falsche Annahme - zurückgezogen...

Re: Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von DeathAndPain (Top Expert / 1947 / 257 / 413 ) »
Umm... 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. "Mit dem einen oder anderen Optimierungspotential" ist eine Sache, aber das klingt mir extrem unperformant. Ich staune, dass der ABAP-Interpreter das in einer sinnvollen Laufzeit ausführen kann. Da merkt man mal, wie schnell heutige Rechner rechnen.

Das Problem mit den "wilden Select-Options" sehe ich; damit muss man eigentlich alles durchprobieren, wenn man sicher sein will, vollständig zu sein. Aber zumindest würde ich doch dringend dazu raten, nur Monatserste durchzugehen. Dann probiert man pro Monat nur einen Tag anstatt ca. 30.

Re: Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von a-dead-trousers (Top Expert / 4396 / 223 / 1182 ) »
Ja, aber wenn genau der Monatserste aus der Datumsselektion heraus ausgeschlossen ist ...

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
DeathAndPain

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
DeathAndPain hat geschrieben:
27.04.2021 18:14
Umm... 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.
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" .
DeathAndPain hat geschrieben:
27.04.2021 18:14
Ich staune, dass der ABAP-Interpreter das in einer sinnvollen Laufzeit ausführen kann. Da merkt man mal, wie schnell heutige Rechner rechnen.
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.
Ich hatte das dann ganz toll programmiert und endlich mal ein Thema meines Mathesstudiums verwenden können ( Näherung durch Kettenbrüche - nicht wirklich kompliziert aber ein sehr exotisches Thema ). Hat auch gut geklappt und es gab eine ganz tolle Lösung.
Und auf dem Weg nach Hause im Auto nachgedacht und dann überlegt, dass ich statt der 8 Schritte, die ich bei der Kettenbruchentwicklung brauche um eine sehr gute Näherung zu finden auch einfach 10.000 Nenner der Reihe nach durchgehen könnte und den Rechner einfach rechnen lassen. Ok - ist ein Faktor 1000, den ich eingespart hatte, aber das Programm ist trotzdem für den Anwender nicht merkbar langsamer geworden, nachdem ich den simpleren Ansatz nachher eingebaut hatte ( Wartbarkeit ).
In den 80ern wäre ich für das "durchprobieren" gelyncht worden weil zu langsam, heute würde ich für die elegante Lösung gelyncht weil "nicht einfach genug wartbar"

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von DeathAndPain (Top Expert / 1947 / 257 / 413 ) »
adt hat geschrieben:Ja, aber wenn genau der Monatserste aus der Datumsselektion heraus ausgeschlossen ist ...
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.

In einem einzelnen Programm wäre das sicherlich eine "nicht wartbare" Optimierung entsprechend dem, was black_adept gerade geschildert hat, aber wenn man das öfter brauchen kann, kann man vielleicht eine funktionale Methode bauen, in die man die RANGES-Tabelle reinschiebt und die als Ergebnis eine Tabelle vom Typ HRPERIODS_TAB (siehe DDIC) liefert. Ich denke, das könnte schon ab und an mal nützlich sein, wenn man mit einer SELECT-OPTION eine Spezialfunktionalität für Datümer realisieren möchte, aber von dem Interpretationsaufwand der resultierenden RANGES-Tabelle zurückschreckt.

Die Liste aller Tage in den gefundenen Perioden wird man eher selten brauchen, aber wenn man die HRPERIODS_TAB hat, kann man damit dann ja einfach black_adept's Ansatz folgen und die darin befindlichen Tage durchhecheln.

Wäre eine reizvolle Aufgabe, diese funktionale Methode zu bauen. Durch sie würde die Komplexität, die RANGES-Tabelle auszuwerten, gekapselt und aus dem Programm ausgelagert, so dass dieses performant und dennoch gut les/wartbar wäre, zumindest wenn die Methode so gut online dokumentiert ist, dass man versteht, was sie liefert (da sollten wenige Sätze reichen).

Das könnte die nächste Knobelaufgabe sein: Baue diese Methode möglichst performant. 😁 Wartbarkeit ist da ja nicht wirklich ein Thema, da diese funktionale Methode, wenn sie fertig ist, als atomar anzusehen ist und in der Zukunft nicht gewartet werden muss - jedenfalls dann, wenn sie fehlerfrei arbeitet (aber die Aufgabe erscheint mir überschaubar genug, dass eine Bugfreiheit erreichbar sein sollte).
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" .
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.

Re: Datumselektion, in dem Zeitraum Monat Jahr ermitteln MM/JJJJ

Beitrag von black_adept (Top Expert / 4090 / 127 / 940 ) »
DeathAndPain hat geschrieben:
28.04.2021 15:49
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.
Ich tippe auf den Vatikan oder andere klerikale Vereinigungen.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2123
Views
Zeitwirtschaft : Wie frage ich einen Zeitraum ohne das Jahr ab?
von Flashtie » 19.03.2021 13:00 • Verfasst in Human Resources
5
Antw.
4278
Views
Zeitraum berechnen mit immer 30 Tagen pro Monat
von actihippo » 06.12.2007 13:23 • Verfasst in ABAP® für Anfänger
5
Antw.
1726
Views
Abfrage Zeitraum
von Gottschall » 30.07.2019 14:18 • Verfasst in ABAP® für Anfänger
6
Antw.
2395
Views
Datumselektion - näheste zu "Heute"
von Marty » 11.01.2005 14:33 • Verfasst in ABAP® Core
0
Antw.
957
Views

Ü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

Trennen Strasse und Hausnummer
vor 9 Minuten von DeathAndPain 14 / 10725
Dialog-Container mit Toolbar/Status
vor 20 Minuten von DeathAndPain gelöst 24 / 3846
User Exit EXIT_RQCPRM10_001
vor 19 Stunden von a-dead-trousers 2 / 337
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1387

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

Trennen Strasse und Hausnummer
vor 9 Minuten von DeathAndPain 14 / 10725
Dialog-Container mit Toolbar/Status
vor 20 Minuten von DeathAndPain gelöst 24 / 3846
User Exit EXIT_RQCPRM10_001
vor 19 Stunden von a-dead-trousers 2 / 337
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1387

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2919
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9512