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 / 33 / 8 / 1 ) »
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?

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


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

Beitrag von wreichelt (Top Expert / 1031 / 29 / 188 ) »
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 / 92 / 6 / 21 ) »
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 ) »
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 / 92 / 6 / 21 ) »
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 / 33 / 8 / 1 ) »
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 / 304 / 50 / 62 ) »
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 / 1795 / 213 / 396 ) »
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 / 418 / 128 / 45 ) »
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

Vergleichbare Themen

0
Antw.
788
Views
5
Antw.
1473
Views
Abfrage Zeitraum
von Gottschall » 30.07.2019 14:18 • Verfasst in ABAP® für Anfänger
8
Antw.
9743
Views
Zeitraum (Stunden) zwischen X Tagen berechnen
von Charadin » 13.11.2006 14:42 • Verfasst in ABAP® Core
0
Antw.
1146
Views
Bezüge aus IT8 über größeren Zeitraum lesen
von mamba » 12.09.2007 15:13 • Verfasst in Human Resources
5
Antw.
4001
Views
Zeitraum berechnen mit immer 30 Tagen pro Monat
von actihippo » 06.12.2007 13:23 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141