Hi1!
Bei der Speicherung hast du zwei Möglichkeiten:
- Start (Datum) und Zeitraum in Tagen (Integer)
- oder Beginn (Datum) und Ende (Datum)
je nachdem, was du bevorzugt machen willst.
Der Vergleich ist ab Besten zu realisieren, wenn du die Daten einmalig komplett aus der Datenbank ausliest und den Verlgeich im Programm selbst durchführst.
Du willst den Zeitraum A bis B prüfen, also brauchst du nur einen Tabellen-Loop über deine bestehenden Einträge machen und prüfen ob "<A> between <Start> and <Ende> or <B> between <Start> and <Ende>".
Code: Alles auswählen.
type-pools:
abap.
data:
ls_data type ... "Neuer Datensatz
ld_okay type abap_bool,
lt_data type standard table of ... with default key.
field-symbols:
<ls_data> type ...
ld_okay = abap_true.
loop at lt_data assigning <ls_data>.
if ls_data-start between <ls_data>-start and <ls_data>-end or ls_data-end between <ls_data>-start and <ls_data>-end.
ld_okay = abap_false.
endif.
endloop.
if ld_okay eq abap_true.
* In Ordnung
else.
* Nicht in Ordnung.
endif.
Was Datumsberechnungen und Monatswechsel angeht:
Wenn du in ABAP zu einem Datum A, X Tage (Integer) hinzuaddierst erhällst du das richtige Datum!
Code: Alles auswählen.
data:
ld_datum type D.
ld_datum = '20111231'. "31.12.2011
add 32 to ld_datum. "oder ld_datum = ld_datum + 32
write ld_datum. "01.02.2012
lg ADT
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