Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

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

Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von Dominic (ForumUser / 30 / 7 / 1 ) » 09.12.2019 10:49
Hey,

Ich suche eine elegantere Möglichkeit um zu prüfen ob ein
Datensatz in einem bestimmten Zeitraum liegt.
Dabei muss der Datensatz nicht den gesamten Zeitraum abdecken
sondern kann auch bereits vorher anfangen und vor Ende des Zeitraums enden.
Auch kann es sein das der Datensatz einen kleinen Bereich mitten
in diesem Zeitraum abdeckt.

Wichtig ist nur dass der Datensatz irgendwann in diesem Zeitraum besteht.
Anfang und Ende sind da irrelevant.

Bisher habe ich das über ein SELECT und entsprechenden AND- OR-Abfragen
auf das BEGDA und ENDDA gemacht.
Gibt es hier etwas eleganteres das mir sagt ob in dem Zeitraum
ein Datensatz vorhanden ist?


Re: Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von wreichelt (Expert / 810 / 19 / 137 ) » 09.12.2019 11:29
Hallo,

bist du im HR unterwegs ?

Da gibt es den RMAC-Baustein 'rp_set_data_interval'
Beispiel:

start-of-selection.
rp_set_data_intervall 'ALL' sy-datum sy-datum.

Get Pernr.

Gruß Wolfgang

Re: Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von M@atze! (ForumUser / 90 / 6 / 20 ) » 09.12.2019 11:40
Hi,

keine Ahnung wie die genaue Ausgangssituation aussieht,
aber einfacher als mit

Code: Alles auswählen.

WHERE endda GE von
  AND begda LE bis
wirds wohl nicht.

"von" und "bis" repräsentieren hier deinen Zeitraum der zumindest mit einem Tag
innerhalb von BEGDA und ENDDA liegen soll.
Eine OR-Abfrage ist nicht nötig.

Grüße
Matze

Re: Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von SaskuAc (Specialist / 321 / 37 / 43 ) » 09.12.2019 11:44
Kommt wirklich drauf an um was für Tabellen es sich handelt und was du sonst so hast.
wenn du wie "wreichelt" gesagt hat, im HR unterwegs bist und Logische datenbanken nutzt, dann nimm das macro "rp_set_data_intervall " ( oder rmac-baustein..... unterm strich ist es ein macro ).

ansonsten frag ich mich was an dem begda, endda im select verkehrt sein soll?

Code: Alles auswählen.

select @abap_true from pa0001 
where begda between @begda and @endda
   or endda between @begda and @endda
into @data(exists). 
das ist meiner meinung nach der eleganteste weg. Schlussendlich, wenn du irgendwelche FuBas / Klassen / etc. für die verprobung hernimmst, läuft es immer irgendwie darauf hinaus. ( man könnte die where bedingung evtl. noch ein wenig anders definieren ^^ ) am ende wird es immer eine where bedingung sein ^^

Re: Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von M@atze! (ForumUser / 90 / 6 / 20 ) » 09.12.2019 13:48
SaskuAc hat geschrieben:
09.12.2019 11:44

Code: Alles auswählen.

select @abap_true from pa0001 
where begda between @begda and @endda
   or endda between @begda and @endda
into @data(exists). 
das ist meiner meinung nach der eleganteste weg.
Sorry SaskuAc, aber da muss ich widersprechen.
Wenn der zu prüfende Zeitraum komplett innerhalb des bereits vorhandenen Zeitraums liegt funktioniert das so nicht.

Volle Zustimmung für den Rest.

Gruß
Matze


Re: Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von Dominic (ForumUser / 30 / 7 / 1 ) » 10.12.2019 06:43
Hey,

Vielen Dank für eure Antworten.
Ich glaube ich habe mir das komplizierter gemacht als es ist.
WHERE endda GE von
AND begda LE bis
Das sollte (wie vorgeschlagen) in der Tat bereits das Problem lösen.

Ansonsten schaue ich mir auch mal den vorgeschlagenen Fuba an.

Vielen Dank und Grüße!

Re: Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von msfox (Specialist / 126 / 22 / 20 ) » 12.12.2019 13:23
Setzt aber immer vorraus, dass Beginndatum kleine Endedatum!
Das mag man zwar annehmen, ist aber nach eigener Erfahrung nicht immer der Fall, wenn Daten schon falsch in die DB gekommen sind.
Oder, manchmal prüft man auch auf lokalen Tabellen, wo vielleicht das ein oder andere Datum automatisch gesetzt/berechnet wurde.

Re: Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von DeathAndPain (Top Expert / 1423 / 153 / 325 ) » 13.12.2019 14:29
Also wir sind hier im HCM (erkennbar am Beispielcode des Fragestellers). Da habe ich es noch nie erlebt, dass in irgendeiner Tabelle ein BEGDA > ENDDA in die Datenbank gekommen wäre. Da müsste man schon hart in die Datenbank schreiben, damit sowas passiert. Mit den "legalen" Mitteln im SAP-Standard wird man das nicht hinbekommen (da dann immer die üblichen Verprobungen aus dem Dialogbetrieb stattfinden).

Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag (Insgesamt 2):
deejeyDominic


Re: Prüfen ob in einem Zeitraum bereits ein Datensatz vorliegt

Beitrag von deejey (Specialist / 325 / 89 / 27 ) » 13.12.2019 15:16
Sehe es auch so wie DaP, man kann nicht im Programm jede theoretisch mögliche Inkonsistenz abfangen

Folgende Benutzer bedankten sich beim Autor deejey für den Beitrag:
Dominic


Seite 1 von 1

Aktuelle Forenbeiträge

VA01 Konditionsart abgreifen
vor 17 Stunden von charlie01 8 / 170
eCATT - Meinungsumfrage
vor 21 Stunden von deejey gelöst 7 / 153
AdobeForms Formularanpassung
vor 3 Tagen von Lucyalison 4 / 89

Vergleichbare Themen

Abfrage Zeitraum
von Gottschall » 30.07.2019 14:18
Zeitraum (Stunden) zwischen X Tagen berechnen
von Charadin » 13.11.2006 14:42
Zeitraum berechnen mit immer 30 Tagen pro Monat
von actihippo » 06.12.2007 13:23
Bezüge aus IT8 über größeren Zeitraum lesen
von mamba » 12.09.2007 15:13