Hi,
In that case have you considered EXPORTING and then overwriting the parameters before they are passed, I think Free memory ID does not initialize the values but initializes the memory ID information. Also before the before the below lines
fill_bdc_data using ' ' ' ' ' ' 'R_BUDAT-LOW' lv_start,
fill_bdc_data using ' ' ' ' ' ' 'R_BUDAT-HIGH' lv_end,
Try deleting the entries from the gt_BDCDATA or modifying such lines in the table with the updated date. The current code might not be overwriting but just adding lines ti BDCdata.
Cheers,
Arindam