Versão atual:

Campo D3 USUARIO da tabela SD3 não grava os dados

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

Versões (2):

Ver a versão formatada

Campo D3 USUARIO da tabela SD3 não grava os dados

Comentário

new question