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