Code: Alles auswählen.
* Datum absteigend sortieren
SORT itab BY datum DESCENDING.
* alle Zeilen finden, wo Datum kleiner oder gleich heute
LOOP AT itab WHERE datum LE sy-datum.
* Schleife beim erstem Satz verlassen
EXIT.
ENDLOOP.
IF sy-subrc EQ 0.
* Verarbeitung
ENDIF.
Wird ja langsam filosofisch hier.Wobei: schließt 'jüngste Vergangenheit' den aktuellen Tag aus?
Code: Alles auswählen.
report test.
tables vbak.
parameters:
pa_datum type sy-datum default sy-datum.
data:
datum_tmp type sy-datum,
wa_vbak type vbak,
it_vbak type table of vbak.
write: / '### Beispiel 1a ###'.
select *
into table it_vbak
from vbak
where erdat < pa_datum.
sort it_vbak by erdat descending vbeln.
loop at it_vbak into wa_vbak where erdat < pa_datum.
if not datum_tmp is initial and datum_tmp <> wa_vbak-erdat.
exit.
endif.
datum_tmp = wa_vbak-erdat.
write: / wa_vbak-vbeln, wa_vbak-erdat.
endloop.
write: / '### Beispiel 2a ###'.
clear datum_tmp.
select *
into wa_vbak
from vbak
where erdat < pa_datum
order by erdat descending vbeln.
if not datum_tmp is initial and datum_tmp <> wa_vbak-erdat.
exit.
endif.
datum_tmp = wa_vbak-erdat.
write: / wa_vbak-vbeln, wa_vbak-erdat.
endselect.
write: / '### Beispiel 2b - 1 Datensatz ###'.
select *
into table it_vbak
from vbak
where erdat < pa_datum.
sort it_vbak by erdat descending vbeln.
read table it_vbak into wa_vbak index 1.
if sy-subrc = 0.
write: / wa_vbak-vbeln, wa_vbak-erdat.
endif.
write: / '### Beispiel 2b - 1 Datensatz ###'.
select *
into wa_vbak
from vbak
where erdat < pa_datum
order by erdat descending vbeln.
write: / wa_vbak-vbeln, wa_vbak-erdat.
exit.
endselect.