Boa tarde,
estou tentando gravar o nome do usuário no campo D3_USUARIO da tabela SD3 mas não estou conseguindo, não da erro mas também não grava os dados. tentei passando valores fixos mas também não deu certo. segue abaixo parte do código da função que grava o campo mencionado
_aCab := { {"D3_TM" ,"509" , NIL},{"D3_EMISSAO" ,u_strToDate(DTCHEGADA), NIL},{"D3_USUARIO", UPPER(CUSUARIO),NIL}}
for nI := 1 to Len( ::_DATA100:REGS100 )
if(ALLTRIM(::_DATA100:REGS100[nI]:DATA100)<>"")
dadosDsp := StrTokArr(ALLTRIM(::_DATA100:REGS100[nI]:DATA100),";")
_aItem:={{"D3_COD" ,dadosDsp[piProd],NIL},{"D3_UM" ,POSICIONE("SB1", 1, xFilial("SB1") + dadosDsp[piProd], "B1_UM") ,NIL},{"D3_QUANT" ,VAL(dadosDsp[piQtde]) ,NIL},{"D3_LOCAL" ,dadosDsp[piArmazem] ,NIL},{"D3_CUSTO1",POSICIONE("SB1", 1, xFilial("SB1") + dadosDsp[piProd], "B1_UPRC") * VAL(dadosDsp[piQtde]),NIL},{"D3_OSTEC" ,NUMOS ,NIL}}
aAdd(_atotitem,_aitem)
endif
next
if len(_aCab)>0 .and. len(_atotitem)>0
lMsErroAuto := .F.
dbselectarea("SD3")
MSExecAuto({|x,y,z| MATA241(x,y,z)},_aCab,_atotitem,3)
If lMsErroAuto
CONOUT(Mostraerro())
DisarmTransaction()
CONOUT("ERRO MSEXECAUTO SD3")
return .F.
break
endif
endif
alguma sugestão de como posso resolver esse problema?
codigo da solução
IF (!lMsErroAuto)
// GRAVAR D3_USUARIO AQUI
DBSELECTAREA("SD3")
DBSETORDER(3) // D3_FILIAL + D3_COD + D3_LOCAL + D3_NUMSEQ + D3_CF
IF DBSEEK(xFilial("SD3")+d3_cod+d3_local+d3_seq+d3_cf)
CONOUT("ACHOU REGISTRO EM SD3")
RECLOCK("SD3", .F.)
SD3->D3_USUARIO := CUSUARIO
MSUNLOCK()
ELSE
CONOUT("NAO ACHOU REGISTRO EM SD3")
CONOUT(xFilial("SD3")+d3_cod+d3_local+d3_seq+d3_cf)
ENDIF
ENDIF