If you're working in GUI we've found it useful to change the way you think about screen design and create artificial commit points.
Basically we load all the data on entry to the screen (into either display scratches or workfiles / memory files). On exit from the screen you then call an update LS (or not depending on how the screen exit was achieved). This then removes the file reads from the actual data entry section of the screen and gets rid of the sort of problem you are experiencing here.
It's really the best way to handle it in a language that wasn't really designed for GUI screen development.
The screen that I am busy with was originally designed that way, but functionality had to change drastically. As it is I am pretty close to the limits of what VIP can handle, I think if I had to use scratch variables I would continue getting the workspace exceeded error.
Does anybody know if Pro-IV intend changing how screens work ? Basically follow the same methodology as VB etc when it comes to programming events within screens rather than relying on a timing cycle.