The message tells you that there is a locking conflict. Another user is holding a lock on the record you try to fetch with a share or an exclusive lock. If the application is utilizing a pessimistic locking strategy, or even worse, is working with share locks, this is "classic" application behavior. The only solution is for the user who is holding the lock to release the lock. Usually such behavior occurs when the application utilizes pessimistic locking and a user presses the update button and the leaves, for a coffee break ... or for good ( just kidding ).
First you should tell the user to release the lock in either committing or rolling back his work.
But, if you are certain, that the user does not lock the record anymore, then most likely the lock is still there because the client process disappeared from the database without the database recognizing it. If this was a remote client then the database depends on the TCP/IP keep alive to recognize the disappeared client. The default for this is 30 minutes on most system I know. If this was a self-service client then most likely the watchdog is not running which is responsible to clean-up resources held be these types of clients.
If nothing else does help you need to restart the database - this will clear the lock table effectively ...
I should point out that I have no knowledge about MFG/PRo whatsoever - this is generic Progress knowledge.
Heavy Regards, RealHeavyDude.