Try adding a few things to your script
Set variable ($row; get portal row)
Your stuff goes here
Goto object(your portals object name here )
Goto portal row $row -1)
This should put you back I the same approximate row. Hopefully your portal will not jump much.
Sent from my mobile device... Please excuse typos.
From your description I gather it would be sufficient to set the flag, then simply omit the record from the found set, rather than performing a Constrain.
Not sure why, but I was thinking you were using a portal. After re-reading your description and erolst's comments, I think he has the right idea for you.
You could add an on modify script trigger to the got it field.
if got it = 1;
if you used a button, have it set field, commit and omit.
Either way, this should leave you in the same position on the screen and the records below would slide up one.