Wie der Fehler schon sagt:
Der inner Select findet auf Grund der Whereklausel u.U. keine Daten und deine Zielvariablen erlauben kein NULL.
Nun ist es leider so, dass der Optimizer im Dialog (STRSQL) anders arbeitet als im embedded.
Zusätzlich ist es wohl auch so, dass eben ein Subselect NULL bringen kann, auch wenn er es nachher dann doch nicht tut, was der Optimizer wohl mal wieder vorher prüft.

Vervollständige einfach den SQL mit einer Where-Klausel auf dem Update:

update table
set ... = (select ... where ...)
where ...