Versão atual:

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

Versão (1):

Ver a versão formatada

Execauto MATA265 - Erro na tabela SDA

Comentário

new question