Andreas Unkelbach
Werbung


Sonntag, 1. Juli 2012
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:

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.




Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Espresso Tutorial - die digitale SAP Bibliothek

Tags: Query

2 Kommentare - - SAP

Artikel datenschutzfreundlich teilen

🌎 Facebook 🌎 Twitter 🌎 Google
Diesen und weitere Texte von finden Sie auf http://www.andreas-unkelbach.de


Kommentare

Evelyn Heitmann am 8.5.2015 um 12:29 Uhr
Hallo Herr Unkelbach,

eine etwas einfachere Variante scheint mir folgendes zu sein:
DATUMSFELD+(365*25)+6.
Möglicherweise stimmt das auch um einen Tag nicht aufgrund von 7 Schaltjahren im 25-Jahre-Zeitraum, aber dann fügt man eben "+7" ein.

Beste Grüße,
Evelyn Heitmann


Andreas Unkelbach Homepage am 8.5.2015 um 18:32 Uhr
Hallo Frau Heitmann,

vielen Dank für Ihren Hinweis, der wiederum mit der Addition mit Tagen rechnet. Die von Ihnen beschriebene Methode hat dann tatsächlich einen Nachteil, sofern es sich um ein Schaltjahr handelt.

Wobei dieses dann eine rein philosophische Betrachtung ist ob man lieber den 29. Februar als Datum in einen NichtSchaltjahr haben möchte oder ob man berücksichtigen möchte, dass in der beschrieben Methode der Addition mit Tagen ggf. noch geprüft werden sollte, ob das aktuelle Datum ein 29. Februar ist.

Ich denke, dass hier beide Rechenwege ihre Berechtigung haben und freue mich daher sehr über ihren etwas pragmatischeren Ansatz. Dieser hätte sogar den Vorteil, dass das Zielfeld weiterhin ein Datumsfeld bleiben kann.

Viele Grüße
Andreas Unkelbach


Auch kommentieren?


Beim Versenden eines Kommentars wird mir ihre IP mitgeteilt. Diese wird jedoch nicht dauerhaft gespeichert; die angegebene E-Mail wird nicht veröffentlicht: beim Versenden als "Normaler Kommentar" ist die Angabe eines Namen erforderlich, gerne kann hier auch ein Pseudonyme oder anonyme Angaben gemacht werden (siehe auch Kommentare und Beiträge in der Datenschutzerklärung).

Eine Rückmeldung ist entweder per Schnellkommentar oder (weiter unten) als normalen Kommentar möglich. Eine persönliche Rückmeldung (gerne auch Fragen zum Thema) würde mich sehr freuen.

Schnellkommentar (Kurzes Feedback, ausführliche Kommentare bitte unten als normaler Kommentar)

Name (sofern kein Name angegeben wird erscheint Anonym):



Ich nutze zum Schutz vor Spam-Kommentaren (reine Werbeeinträge) eine Wortliste, so dass diese Kommentare nicht veröffentlicht werden. Sollte ihr Kommentar nicht direkt veröffentlicht werden, kann dieses an einen entsprechenden Filter liegen.

Im Zweifel besteht auch immer die Möglichkeit eine Mail zu schreiben oder die sozialen Medien zu nutzen. Meine Kontaktdaten finden Sie auf »Über mich«. Ansonsten antworte ich tatsächlich sehr gerne auf Kommentare und freue mich auf einen spannenden Austausch.

Normaler Kommentar

Name:

E-Mail (wird nicht veröffentlicht und ist nicht erforderlich):

Homepage:

Kommentar:





* Amazon Partnerlink
Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.
Hinauf




Werbung



Logo Andreas-Unkelbach.de
© 2004 - 2018 Andreas Unkelbach
Gießener Straße 75,35396 Gießen,Germany
andreas.unkelbach@posteo.de
Andreas Unkelbach

Stichwortverzeichnis
(Tagcloud)


Aktuelle Infos (Abo)

Facebook Twitter Google+

»Schnelleinstieg ins SAP Controlling (CO)« und »Berichtswesen im SAP ® ERP Controlling«
Privates

Kaffeekasse 📖 Wunschliste