Hi Rama,
The select statement is actually messing up the records because of time involvement in selection.
You will have to first select the data based on dates only and then filter out the data on time basis.
I quickly made an example program for selection based on VBAK:
DATA: lt_vbak TYPE STANDARD TABLE OF vbak.
DATA: ls_vbak LIKE LINE OF lt_vbak.
DATA: lv_dat1 TYPE erdat,
lv_tim1 TYPE erzet,
lv_dat2 TYPE erdat,
lv_tim2 TYPE erzet.
RANGES: lv_dat FOR vbak-erdat.
lv_dat1 = '20140209'.
lv_dat2 = '20140219'.
lv_tim1 = '140000'.
lv_tim2 = '150000'.
lv_dat-sign = 'I'.
lv_dat-option = 'BT'.
lv_dat-low = lv_dat1.
lv_dat-high = lv_dat2.
APPEND lv_dat.
SELECT * FROM vbak INTO TABLE lt_vbak
WHERE erdat IN lv_dat.
IF sy-subrc EQ 0.
LOOP AT lt_vbak INTO ls_vbak.
IF ls_vbak-erdat LE lv_dat1 AND ls_vbak-erzet LT lv_tim1.
DELETE lt_vbak INDEX sy-tabix.
ELSEIF ls_vbak-erdat GE lv_dat2 AND ls_vbak-erzet GT lv_tim2.
DELETE lt_vbak INDEX sy-tabix.
ENDIF.
ENDLOOP.
ENDIF.
So basically the end statements in LOOP will do the magic here.
In your case please use similar conditions after FETCH CURSOR statement and filter out the invalid data.
Please let me know if you need any help in exact statements.
Thanks
Amit