Если данные mt_data можно вытащить из БД, то можно попробовать поизвращаться таким способом:
Code:
UPDATE zsd_nrv
SET zprpst = ''
WHERE zmode IN ('1', '2', '3')
AND EXISTS ( SELECT 1 FROM zsd_data
WHERE gjahr = zsd_nrv~gjahr
AND monat = zsd_nrv~monat
AND bukrs = zsd_nrv~bukrs
AND werks = zsd_nrv~gjahr
AND matnr = zsd_nrv~matnr
).
Если данные только во внтуренней таблице, то да: ставят блокировки, считывают нужные данные во внутреннюю таблицу, меняют в ней всё необходимое, а потом пишут:
Code:
UPDATE zsd_nrv FROM TABLE mt_data.
В версионных БД всё равно при изменениях будут записываться новые строки, а старые строки помечаться как удалённые, поэтому всё равно обновляется только одно поле или же целая строка.
А вот как себя HANA ведёт в таких случаях, к сожалению, не знаю, но, думаю, что обновление одного поля для неё будет лучше.