update d27, z_d27_std as imp01
set d27.p02  = imp01.p02, 
    d27.p03  = if(imp01.p03='',  d27.p03,  imp01.p03), 
    d27.ep02 = if(imp01.ep02='', d27.ep02, imp01.ep02), 
    d27.d23  = imp01.d23, 
    
    d27.remdate=curdate(), 
    d27.remtime=curtime(), 
    d27.remuser='{user_pswd}@std_tables'
     
where d27.p01=imp01.p01 
   && (   d27.p02  <> imp01.p02 
       || d27.p03  <> if(imp01.p03='',  d27.p03,  imp01.p03) 
       || d27.ep02 <> if(imp01.ep02='', d27.ep02, imp01.ep02) 
       || d27.d23  <> imp01.d23  
      );
/*peg_end*/

insert into d27
(nr01, p01, p02, p03, ep02, d23, p300, tax, 
remfdate, remftime, remfuser, remdate, remtime, remuser)
select peg_new_nr01('d27', 1) as nr01, 
       imp01.p01, 
       imp01.p02, 
       imp01.p03, 
       imp01.ep02, 
       imp01.d23, 
       imp01.p300, 
       imp01.tax, 
       
       curdate() as remfdate, 
       curtime() as remftime, 
       '{user_pswd}@std_tables' as remfuser, 
       curdate() as remdate, 
       curtime() as remtime, 
       '{user_pswd}@std_tables' as remuser 
from z_d27_std as imp01
left join d27 on d27.p01=imp01.p01
where d27.nr01 is null;
/*peg_end*/