The best thing to debug is to enable Help, Diagnostics, Custom Code, Show Custom Events. This will show you which events fire and when. In your case your personalization fires when you click in the RETURN_DF field and when the return line type has a specific value. Since you mention the field becomes yellow and thus required it seems this fires well.
Now the question is whether something else fires after that which makes the field either not required or the ITEM_REVISION field is not a database field perhaps so the system does not perform the check (although I think it should).
It could be because the _DF field is quite a special field right (It's the flex field indicator). You could also add a WHEN-VALIDATE-RECORD trigger and simply check if ITEM_REVISION is null and if so display a message (with type error so you cannot continue).
OK let me tell our exact issue what we are having.
when our user enters a return line and enters a quantity say 5 and then chooses the return reference sales order number, now oracle overwrites the user entered quantity 5 with sales order quantity say 100.
since there is no when validate item trigger in forms personalization.
i am storing the user entered quantity in a global variable and written when item instance trigger on
all the item fields on the form for reassigning the user entered quantity.
i have written reassigning the user quantity in when validate record trigger also.
all this is working fine for most of the cases.
Here is the case when it is not working.
User enters the return line and sales order reference and without clicking any of the item field directly clicks book order button.
now the form re queries at the line level and overwrites the user entered quantity 5 with sales order quantity say 100.
this is happening because i cannot put DO_KEY COMMIT_FORM in the when validate record trigger, hence the qty 5 is not saved.