Execauto MATA265 - Erro na tabela SDA

Senhores Boa Tarde,

Criei o ponto de entrada abaixo, para no momento que a nota for classificada, já ser feito o endereçamento dos itens, porém está gerando o erro em anexo.

Alguém tem ideia do que seja para me ajudar?

Valeu.


User Function MT103FIM()

    Local _aItensSDB := {}
    Local aAreaDAS   := DAS->(FWGetArea())
    Local aAreaSB1   := SB1->(FWGetArea())
    Local aAreaSB2   := SB2->(FWGetArea())
    Local aAreaSB5   := SB5->(FWGetArea())
    Local aAreaSBD   := SDB->(FWGetArea())
    Local aAreaSBE   := SBE->(FWGetArea())
    Local aAreaSBF   := SBF->(FWGetArea())
    Local aAreaSD1   := SD1->(FWGetArea())
    Local aAreaSD8   := SD8->(FWGetArea())
    Local aAreaSDA   := SDA->(FWGetArea())
    Local aCabSDA    := {}
    Local aItSDB     := {}
    Local cTes       := 0
    Local nCols      := 0
    Local nConfirma  := PARAMIXB[2] // Se o usuario confirmou a operação de gravação da NFE
    Local nOpcao     := PARAMIXB[1] // Opção Escolhida pelo usuario no aRotina
    Local nPosCFOP   := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_CF"})
    Local nPosData   := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_DTDIGIT"})
    Local nPosDoc    := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_DOC"})
    Local nPosForn   := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_FORNECE"})
    Local nPosLocal  := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_LOCAL"})
    Local nPosLote   := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_LOTECTL"})
    Local nPosProd   := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_COD"})
    Local nPosQtde   := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_QUANT"})
    Local nPosSerie  := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_SERIE"})
    Local nPosTES    := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_TES"})
    Local nPosLoja   := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_LOJA"})
    Local nPosItem   := aScan(aHeader, {|x| Alltrim(Upper(x[2])) == "D1_ITEM"})
    Local nTesEst    := ""
    Local lMsErroAuto := .F.




        if nConfirma == 1 .and. nOpcao == 4 // Usuário confirmou a operação e está classificando a pré-nota.

        For nCols := 1 To Len(acols)
            If !Acols[n,len(aHeader)+1]  //nao pega quando a linha esta deletada

                cTES      := aCols[n][nPosTES]
                nTesEst   := Posicione("SF4",1,FWxFilial("SF4")+cTes,"F4_ESTOQUE")
                cLocaliz  := Posicione("SB1",1,FwxFilial("SB1")+aCols[n,nPosProd],"B1_LOCALIZ")
                cNumSeq   := Posicione('SD1',1,FWxFilial('SD1')+aCols[n,nPosDoc]+aCols[n,nPosSerie]+aCols[n,nPosForn]+aCols[n,nPosLoja]+aCols[n,nPosProd]+aCols[n,nPosItem], 'D1_NUMSEQ' )

                If Alltrim(aCols[n][nPosCFOP]) != "6907" .AND. nTesEst == "S" .AND. cLocaliz == "S" .and. Alltrim(cFilAnt) == "10505010001"

                    cCodigo :=   PADR(ALLTRIM(aCols[n,nPosProd]),TamSx3("D1_COD")[1])
                    nQtde   :=   aCols[n,nPosQtde]
                    dData   :=   aCols[n,nPosData]
                    cLoteCtl :=  PADR(ALLTRIM(aCols[n,nPosLote]),TamSx3("D1_LOTECTL")[1])
                    cLocal :=    PADR(ALLTRIM(aCols[n,nPosLocal]),TamSx3("D1_LOCAL")[1])
                    cDoc   :=    PADR(ALLTRIM(aCols[n,nPosDoc]),TamSx3("D1_DOC")[1])
                    cSerie :=    PADR(ALLTRIM(aCols[n,nPosSerie]),TamSx3("D1_DOC")[1])

                    //Cabecalho com a informação que será endereçado.
                    aCabSDA := {{"DA_PRODUTO" ,cCodigo,Nil},;
                        {"DA_QTDORI"   ,nQtde,Nil},;
                        {"DA_SALDO"    ,nQtde,Nil},;
                        {"DA_DATA"     ,dData,Nil},;
                        {"DA_LOTECTL"  ,cLoteCtl,Nil},;
                        {"DA_LOCAL"    ,cLocal,Nil},;
                        {"DA_DOC"      ,cDoc,Nil},;
                        {"DA_SERIE"    ,cSerie,Nil},;
                        {"DA_NUMSEQ"   ,cNumSeq,Nil}}

                    //Dados do item que será endereçado
                    aItSDB := {{"DB_ITEM"  ,"0001"  ,Nil},;
                        {"DB_ESTORNO"     ," ", Nil},;
                        {"DB_LOCALIZ"  ,"LOTEPDR"   ,Nil},;
                        {"DB_DATA"     ,dData, Nil},;
                        {"DB_QUANT"    ,nQtde,Nil}}
                    aadd(_aItensSDB,aitSDB)

                    //Executa o endere?amento do item
                    MATA265( aCabSDA, _aItensSDB, 3)
                    If lMsErroAuto
                        MostraErro()
                    Else
                        MsgAlert("Processamento Ok!")
                        _aItensSDB := {}
                    Endif
                Endif



            Endif
        Next


    Endif

    FwRestArea(aAreaSD1)
    FwRestArea(aAreaSDA)
    FwRestArea(aAreaSBD)
    FwRestArea(aAreaSB1)
    FwRestArea(aAreaSB2)
    FwRestArea(aAreaSBE)
    FwRestArea(aAreaSBF)
    FwRestArea(aAreaDAS)
    FwRestArea(aAreaSB5)
    FwRestArea(aAreaSD8)

Return
compartilhar
  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!

1 resposta

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