Hi Michael,
i think you can solve this with an auxillary let binding and the base addition of corresponding.
Like this:
lt_target =VALUE#(FOR wa IN lt_source
INDEXINTO index
LET base =VALUE t_struct2( field3 = index )
IN(CORRESPONDING#(BASE( base ) wa ) ) ).
cl_demo_output=>display( lt_target ).
results in:
Regards Christian