Execauto EICPO400 (alteração)

Boa tarde, não encontrei uma categoria para o módulo do EIC, mas como o PO do EIC grava no Compras, acho que se encaixaria aqui.

Estou tentando fazer uma alteração via execauto na rotina EICPO400, como inclusão funciona 100%, porem como alteração dá uma mensagem:

AJUDA:AVISO
Erro ao montar a chave do registro da tabela WORK. Verifique se todos os campos da chave WKCC+WKSI_NUM+WKPOSIT foram informados.

Estou fazendo um bem simples para testar, preciso apenas atualizar a data do embarque (W3_DT_EMB). Com base no código abaixo, o que mais esta faltando?

WKCC = W3_CC
WKSI_NUM = W3_SI_NUM
WKPOSIT = W3_POSICAO

#Include 'Protheus.ch'
#Include 'Totvs.ch'
#Include 'Tbiconn.ch'
  
User Function PO400Auto()
  
Local aCab  := {} //Array com os dados da Capa do Purchase Order
Local aItem := {} //Array com os dados dos Itens do Purchase Order
 
Local nOpc:= 4 //Opção a ser executada. 3-Inclusão; 4-alteração; 5=exclusao
  
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
  
   FWAlertInfo("TESTE PO: 100675","ATENÇÃO")
     
   //Capa do Purchase Order
   AADD(aCab,{"W2_PO_NUM"  , "100675              "              , NIL})
  
   //Dados para os Itens do Purchase Order
   aAdd(aItem,{;
      {"W3_COD_I"  ,  "3968616             "    , NIL},;            
      {"W3_CC"     ,  "01   "         			, NIL},;            
      {"W3_POSICAO",  "0001"          			, NIL},;            
      {"W3_DT_EMB" ,  DDATABASE+20               	, NIL},;  
	  {"W3_REG"    ,  1               , NIL},;          
      {"W3_SI_NUM" ,  "349260"		  			, NIL}})
  
   MSExecAuto({|a,b,c,d| EICPO400(a,b,c,d)}, NIL, aCab, aItem, nOpc)
  
   If lMsErroAuto
      MostraErro()
   Else
      MsgInfo("Ok - P.O.")
   EndIf     
  
Return Nil

Desde já agradeço!