Se alguma pergunta ou resposta lhe foi útil, não deixe de dar seu voto positivo!

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
compartilhar
  • Já verificou se ele está como usado? Por default ele é não usado. Abs!

    Jandir Deodato   06 de Nov de 2018
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags sd3 d3usuario tabela ou faça a sua própria pergunta.