- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- MATA261 - TRANSFERENCIAS - EXECAUTO
×
Linguagem de Programação ADVPL
Perguntas MATA261 - TRANSFERENCIAS - EXECAUTO
- Rodrigo Almeida
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 11
- Obrigados Recebidos: 0
11 anos 5 meses atrás #14931
por Rodrigo Almeida
Respondido por Rodrigo Almeida no tópico MATA261 - TRANSFERENCIAS - EXECAUTO
Bom dia!
Não funcionou, mas resolvi meu problema utilizando a função aProcessa260().
Obrigado!
Não funcionou, mas resolvi meu problema utilizando a função aProcessa260().
Obrigado!
Por favor Acessar ou Registrar para participar da conversa.
- fkuhn
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 16
- Obrigados Recebidos: 0
- Ghandy
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 22
- Obrigados Recebidos: 0
11 anos 3 meses atrás #16531
por Ghandy
Respondido por Ghandy no tópico MATA261 - TRANSFERENCIAS - EXECAUTO
Pessoal estou com um problema parecido com o de vocês... Na minha base de testes o sistema simplesmente não grava o SD3 e não retorna erro.
Em outra base, quando eu coloco somente 1 item o sistema grava perfeitamente, mas quando eu coloco mais de 1 item ele informa que o array passado aheader (que não passo este array) esta com inconsistencia dos dados...
Lendo a documentação eu entendi que o array aAuto tem como seu primeiro elemento um array com o documento e a data.
Os demais elementos seriam um array com os itens, mas parece que não é isto... Eu preciso repetir o array com o nr do documento para cada elemento???
Segue parte da rotina:
AADD(aAuto,{cDoc,dDatabase})
WHILE cDoc == SZR->ZR_DOC .AND. !SZR->(Eof())
cProduto := SZR->ZR_COD
IF SZR->ZR_OK == "0"
IF cTM == "501"
cLocal := "GP"
// Origem
aadd(ExpA1,SZR->ZR_COD)
aadd(ExpA1,SZR->ZR_DESCRI)
aadd(ExpA1,SZR->ZR_UM)
aadd(ExpA1,"GP")
aadd(ExpA1,"000001")
// Destino
aadd(ExpA1,SZR->ZR_COD)
aadd(ExpA1,SZR->ZR_DESCRI)
aadd(ExpA1,SZR->ZR_UM)
aadd(ExpA1,SZR->ZR_LOCAL)
aadd(ExpA1,SZR->ZR_LOCALIZ)
ELSE
cLocal := SZR->ZR_LOCAL
// Origem
aadd(ExpA1,SZR->ZR_COD)
aadd(ExpA1,SZR->ZR_DESCRI)
aadd(ExpA1,SZR->ZR_UM)
aadd(ExpA1,SZR->ZR_LOCAL)
aadd(ExpA1,SZR->ZR_LOCALIZ)
// Destino
aadd(ExpA1,SZR->ZR_COD)
aadd(ExpA1,SZR->ZR_DESCRI)
aadd(ExpA1,SZR->ZR_UM)
aadd(ExpA1,"GP")
aadd(ExpA1,"000001")
ENDIF
// Geral
aadd(ExpA1,SZR->ZR_NUMSERI)
aadd(ExpA1,"") //D3_LOTECTL
aadd(ExpA1,"") //D3_NUMLOTE
aadd(ExpA1,CTOD("")) //D3_DTVALID
aadd(ExpA1,0) //D3_POTENCI
aadd(ExpA1,SZR->ZR_QUANT)
aadd(ExpA1,0) //D3_QTDSEGUM
aadd(ExpA1,"") //D3_EXTORNO
aadd(ExpA1,"") //D3_NUMSEQ
aadd(ExpA1,"") //D3_LOTECTL
aadd(ExpA1,CTOD("")) //D3_DTVALID
aadd(ExpA1,"") //D3_ITEMGRD
ENDIF
aadd(aAuto,ExpA1)
//-- Posiciona (ou Cria) o Arquivo de Saldos (SB2)
If !SB2->(dbSeek(xFilial('SB2')+cProduto+cLocal,.F.))
CriaSB2(cProduto,cLocal)
EndIf
SZR->(dbSkip())
END WHILE
IF Len(ExpA1) > 0
MSExecAuto({|x,y| mata261(x,y)},aAuto,3)
If lMsErroAuto
Mostraerro()
Else
// registra a operacao
Em outra base, quando eu coloco somente 1 item o sistema grava perfeitamente, mas quando eu coloco mais de 1 item ele informa que o array passado aheader (que não passo este array) esta com inconsistencia dos dados...
Lendo a documentação eu entendi que o array aAuto tem como seu primeiro elemento um array com o documento e a data.
Os demais elementos seriam um array com os itens, mas parece que não é isto... Eu preciso repetir o array com o nr do documento para cada elemento???
Segue parte da rotina:
AADD(aAuto,{cDoc,dDatabase})
WHILE cDoc == SZR->ZR_DOC .AND. !SZR->(Eof())
cProduto := SZR->ZR_COD
IF SZR->ZR_OK == "0"
IF cTM == "501"
cLocal := "GP"
// Origem
aadd(ExpA1,SZR->ZR_COD)
aadd(ExpA1,SZR->ZR_DESCRI)
aadd(ExpA1,SZR->ZR_UM)
aadd(ExpA1,"GP")
aadd(ExpA1,"000001")
// Destino
aadd(ExpA1,SZR->ZR_COD)
aadd(ExpA1,SZR->ZR_DESCRI)
aadd(ExpA1,SZR->ZR_UM)
aadd(ExpA1,SZR->ZR_LOCAL)
aadd(ExpA1,SZR->ZR_LOCALIZ)
ELSE
cLocal := SZR->ZR_LOCAL
// Origem
aadd(ExpA1,SZR->ZR_COD)
aadd(ExpA1,SZR->ZR_DESCRI)
aadd(ExpA1,SZR->ZR_UM)
aadd(ExpA1,SZR->ZR_LOCAL)
aadd(ExpA1,SZR->ZR_LOCALIZ)
// Destino
aadd(ExpA1,SZR->ZR_COD)
aadd(ExpA1,SZR->ZR_DESCRI)
aadd(ExpA1,SZR->ZR_UM)
aadd(ExpA1,"GP")
aadd(ExpA1,"000001")
ENDIF
// Geral
aadd(ExpA1,SZR->ZR_NUMSERI)
aadd(ExpA1,"") //D3_LOTECTL
aadd(ExpA1,"") //D3_NUMLOTE
aadd(ExpA1,CTOD("")) //D3_DTVALID
aadd(ExpA1,0) //D3_POTENCI
aadd(ExpA1,SZR->ZR_QUANT)
aadd(ExpA1,0) //D3_QTDSEGUM
aadd(ExpA1,"") //D3_EXTORNO
aadd(ExpA1,"") //D3_NUMSEQ
aadd(ExpA1,"") //D3_LOTECTL
aadd(ExpA1,CTOD("")) //D3_DTVALID
aadd(ExpA1,"") //D3_ITEMGRD
ENDIF
aadd(aAuto,ExpA1)
//-- Posiciona (ou Cria) o Arquivo de Saldos (SB2)
If !SB2->(dbSeek(xFilial('SB2')+cProduto+cLocal,.F.))
CriaSB2(cProduto,cLocal)
EndIf
SZR->(dbSkip())
END WHILE
IF Len(ExpA1) > 0
MSExecAuto({|x,y| mata261(x,y)},aAuto,3)
If lMsErroAuto
Mostraerro()
Else
// registra a operacao
Por favor Acessar ou Registrar para participar da conversa.
- Ghandy
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 22
- Obrigados Recebidos: 0
11 anos 3 meses atrás #16538
por Ghandy
Respondido por Ghandy no tópico MATA261 - TRANSFERENCIAS - EXECAUTO
Encontrei o meu problema:
Eu estava inicializando o array ExpA1 fora do looping, coloquei a inicialização logo depois do While e deu certo.
Gravou a movimentação no SD3 da minha base e também parou de dar a mensagem na outra base...
Obrigado!
Eu estava inicializando o array ExpA1 fora do looping, coloquei a inicialização logo depois do While e deu certo.
Gravou a movimentação no SD3 da minha base e também parou de dar a mensagem na outra base...
Obrigado!
Por favor Acessar ou Registrar para participar da conversa.
- henry.charriere
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 492
- Obrigados Recebidos: 0
10 anos 8 meses atrás #21651
por henry.charriere
Respondido por henry.charriere no tópico MATA261 - TRANSFERENCIAS - EXECAUTO
Rodrigo, Bom dia!
Será que pode compartilhar essa função. Estou precisando muito e não consigo usar o mata261.
Obrigado!
Será que pode compartilhar essa função. Estou precisando muito e não consigo usar o mata261.
Obrigado!
Por favor Acessar ou Registrar para participar da conversa.
- marcioquevedoborges
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 2
- Obrigados Recebidos: 0
9 anos 11 meses atrás #26403
por marcioquevedoborges
Respondido por marcioquevedoborges no tópico MATA261 - TRANSFERENCIAS - EXECAUTO
Rodrigo,
Você utilizou o aProcessa260 para efetuar o estorno da transferência? Tens algum material para me dar uma luz de como posso proceder.
Estou tentando executar o Execauto para efetuar um estorno de uma transferência efetuada e não está funcionando.
Grande abraço
Márcio Borges
Você utilizou o aProcessa260 para efetuar o estorno da transferência? Tens algum material para me dar uma luz de como posso proceder.
Estou tentando executar o Execauto para efetuar um estorno de uma transferência efetuada e não está funcionando.
Grande abraço
Márcio Borges
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- MATA261 - TRANSFERENCIAS - EXECAUTO
Tempo para a criação da página:0.086 segundos