UPD_ENTRY is a "mode sensitive" command when being used with a browse list. Refer to RDML Screen Modes and Mode Sensitive Commands for details.
IBM i and CPF operating system restrictions prevent logic like the following example from ever working correctly on two (or more) browse lists:
SELECTLIST NAMED(#LIST01)
<< process LIST01 entry >>
SELECTLIST NAMED(#LIST02)
<< process LIST02 entry >>
UPD_ENTRY IN_LIST(#LIST02)
ENDSELECT
UPD_ENTRY IN_LIST(#LIST01)
ENDSELECT
The reason is that all browse lists belong to the same "file" (ie: display file) and therefore the update implicitly attempts to update the last "record" processed in the "file". If a program like this example was compiled, it would fail on the UPD_ENTRY command to #LIST01 with an error indicating an update was attempted "without a prior read".
In other words, you can only update a browse list entry if the last operation performed on any browse list was a read operation against the browse list that is being updated (ie: SELECTLIST or GET_ENTRY).
This restriction can usually be overcome by altering the point at which the update operation is performed like this:
SELECTLIST NAMED(#LIST01)
<< process LIST01 entry >>
=> UPD_ENTRY IN_LIST(#LIST01)
SELECTLIST NAMED(#LIST02)
<< process LIST02 entry >>
UPD_ENTRY IN_LIST(#LIST02)
ENDSELECT
ENDSELECT
If a solution like this cannot be implemented, use a GET_ENTRY command immediately before the UPD_ENTRY command.
This restriction does not apply to working lists.