Sonntag, 1. Juli 2012
11:56 Uhr
11:56 Uhr
Umgang mit lokalen Datumsfeldern in Queries
Ausgangslage:
In einer Query wurde ein lokales Feld welches die gleichen Eigenschaften hat wie
das Ausgangsfeld angelegt. Bei dem Versuch ein Datum, +25 Jahre, zu erhalten wird jedoch kein brauchbares Ergebnis ausgegeben. Das rechnen mit Tagen funktioniert. Wenn jedoch der Bereich [YEAR] gewählt wird kommt es jedoch zu keiner vernünftigen Ausgabe des Datums.
Die Frage ist nun, wie in Queries mit Jahreswerten bezogen auf ein Datum gerechnet werden kann.
Lösungsansatz:
Eine echte Lösung habe ich leider nicht, aber wenigstens eine
Teillösung:
Das lokale Feld mit dem Zieldatum kann mit den Eigenschaften eines Textfeld definiert werden stat die eines Datumsfeldes.
Nun kann hier das vorhandene Datumsfeld zumindest bezogen auf die Jahre um 25 erhöht werden.
Nehmen wir an, dass das Datumsfeld die Kurzbezeichnung Datumsfeld hat:
DATUMSFELD[year]+25
Durch [YEAR] wird aus der Variable Datumsfeld (hier steckt das Ausgangsdatum drin), das Jahr ausgegeben.
So erhalten Sie dann das Jahr um 25 erhöht.
Weitere Überlegungen:
Definieren Sie drei lokale Textfelder:
TESTJ:
DATUMSFELD[YEAR]
TESTM:
DATUMSFELD[MONTH]
TESTD:
DATUMSFELD[DAY]
Als Formel für den Zukunfstwert bspw. TEST25
geben Sie nun folgende Formel ein:
TESTD*1000000+TESTM*10000+TESTJ+25
Innerhalb der Grundliste wird dann lediglich das Feld TEST25 ausgeben.
Ich gebe zu, dass diese Vorgehensweise zwei Fehler hat:
a) Optisch wird das Datum in der Form 01072037 ausgegeben (Als Datum war hier 01.07.2012 zzgl. 25 Jahre angegeben)
b) Schaltjahre werden nicht berücksichtigt
Wobei hier die Formel mit der Schaltjahresformel ja noch optimieren
werden kann.
Dieses sollte über entsprechende Bedingungen im Feld TEST25
funktionieren. Hier ist die Funktion MOD (Rest zu verwenden und die
Bedingungen für ein Schaltjahr (durch 100 ohne Rest Teilbar jedoch nicht
durch 400).
Ich denke, dass damit zumindest auf die Schnelle eine passende
Lösung gefunden werden kann. In der Not dürfte es ja auch unproblematisch sein einen 29.02. in der Zukunft hoch zu rechnen, die möglicherweise gar kein Schaltjahr ist.
Rückmeldung:
Das definieren als Text hat prima funktioniert.
Eine wesentlich schönere Variante wäre natürlich per Zusatzfeld ABAP-Coding beziehungsweise Funktionsbaustein, Hier hat das exxsens Developer Blog im Blogartikel "Funktionsbaustein zur Datumsberechnung" auf den Funktionsbaustein RHPP_HALFVALUE_WORKFLOW_DATE hingewiesen. Wie erwähnt bedarf dieses natürlich entsprechende Beechtigungen.
Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionenzu finden. Mein Weiterbildungsangebot zu SAP Themen finden Sie auf unkelbach.expert.
In einer Query wurde ein lokales Feld welches die gleichen Eigenschaften hat wie
das Ausgangsfeld angelegt. Bei dem Versuch ein Datum, +25 Jahre, zu erhalten wird jedoch kein brauchbares Ergebnis ausgegeben. Das rechnen mit Tagen funktioniert. Wenn jedoch der Bereich [YEAR] gewählt wird kommt es jedoch zu keiner vernünftigen Ausgabe des Datums.
Die Frage ist nun, wie in Queries mit Jahreswerten bezogen auf ein Datum gerechnet werden kann.
Lösungsansatz:
Eine echte Lösung habe ich leider nicht, aber wenigstens eine
Teillösung:
Das lokale Feld mit dem Zieldatum kann mit den Eigenschaften eines Textfeld definiert werden stat die eines Datumsfeldes.
Nun kann hier das vorhandene Datumsfeld zumindest bezogen auf die Jahre um 25 erhöht werden.
Nehmen wir an, dass das Datumsfeld die Kurzbezeichnung Datumsfeld hat:
DATUMSFELD[year]+25
Durch [YEAR] wird aus der Variable Datumsfeld (hier steckt das Ausgangsdatum drin), das Jahr ausgegeben.
So erhalten Sie dann das Jahr um 25 erhöht.
Weitere Überlegungen:
Definieren Sie drei lokale Textfelder:
TESTJ:
DATUMSFELD[YEAR]
TESTM:
DATUMSFELD[MONTH]
TESTD:
DATUMSFELD[DAY]
Als Formel für den Zukunfstwert bspw. TEST25
geben Sie nun folgende Formel ein:
TESTD*1000000+TESTM*10000+TESTJ+25
Innerhalb der Grundliste wird dann lediglich das Feld TEST25 ausgeben.
Ich gebe zu, dass diese Vorgehensweise zwei Fehler hat:
a) Optisch wird das Datum in der Form 01072037 ausgegeben (Als Datum war hier 01.07.2012 zzgl. 25 Jahre angegeben)
b) Schaltjahre werden nicht berücksichtigt
Wobei hier die Formel mit der Schaltjahresformel ja noch optimieren
werden kann.
Dieses sollte über entsprechende Bedingungen im Feld TEST25
funktionieren. Hier ist die Funktion MOD (Rest zu verwenden und die
Bedingungen für ein Schaltjahr (durch 100 ohne Rest Teilbar jedoch nicht
durch 400).
Ich denke, dass damit zumindest auf die Schnelle eine passende
Lösung gefunden werden kann. In der Not dürfte es ja auch unproblematisch sein einen 29.02. in der Zukunft hoch zu rechnen, die möglicherweise gar kein Schaltjahr ist.
Rückmeldung:
Das definieren als Text hat prima funktioniert.
Eine wesentlich schönere Variante wäre natürlich per Zusatzfeld ABAP-Coding beziehungsweise Funktionsbaustein, Hier hat das exxsens Developer Blog im Blogartikel "Funktionsbaustein zur Datumsberechnung" auf den Funktionsbaustein RHPP_HALFVALUE_WORKFLOW_DATE hingewiesen. Wie erwähnt bedarf dieses natürlich entsprechende Beechtigungen.
Hinweis:
Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.
ein Angebot von Espresso Tutorials
unkelbach.link/et.books/
unkelbach.link/et.reportpainter/
unkelbach.link/et.migrationscockpit/
Diesen Artikel zitieren:
Unkelbach, Andreas: »Umgang mit lokalen Datumsfeldern in Queries« in Andreas Unkelbach Blog (ISSN: 2701-6242) vom 1.7.2012, Online-Publikation: https://www.andreas-unkelbach.de/blog/?go=show&id=353 (Abgerufen am 22.1.2025)
2 Kommentare - Permalink - SAP
Artikel datenschutzfreundlich teilen
🌎 Facebook 🌎 Bluesky 🌎 LinkedIn