× Linguagem de Programação ADVPL

Perguntas MATA261 - TRANSFERENCIAS - EXECAUTO

Mais
11 anos 10 meses atrás #13653 por fkuhn
E ai pessoal..blz?
Estou procurando algo sobre a rotina automatica do Mata261 (Transferencias mod2)

Alguem teria um exemplo claro dessa rotina...
Desde já agradeço

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 10 meses atrás #13657 por kanaamlrr
Segue documentação e exemplo do TDN.
Em anexo vai um fonte que utilizei essa rotina.
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 10 meses atrás #13660 por fkuhn
Respondido por fkuhn no tópico MATA261 - TRANSFERENCIAS - EXECAUTO
Agora entendi como funciona,
Obrigado Kanaãm

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 10 meses atrás #13673 por fkuhn
Respondido por fkuhn no tópico MATA261 - TRANSFERENCIAS - EXECAUTO
Rapaz,
Agora os mistérios do Protheus,
o ExecAuto é executado sem erros, mas ele não grava as movimentações na SD3

Segue abaixo o parte do código correspondente
Static Function MovMerc() //Movimenta mercadorias

Local aAuto := {}
Local cNumDoc := M->Z3_YNUM
Local nI := 0
Local cProduto // Cod Produto
Local cDescProd // Descrição do produto
Local cUM // Unidade de medida
Local cArmOri := "01" // Armazem origem
Local cEndOri := Space(15) // Endereço de origem
Local cArmDest := "04" // Armazem destino
Local cEndDest := Space(15) // Endereço destino
Local cNumSer := "" // Numero de série
Local cLote := "" // Lote
Local cSLote := "" // Sub-Lote
Local cValidade := criavar('D3_DTVALID') // Validade
Local nPoten := 0 // Potencia
Local nQuant // Quantidade
Local cQtSegUm := criavar("D3_QTSEGUM") // Quantidade 2ª UM
Local cEstorno := criavar("D3_ESTORNO") // Estornado
Local cNumSeq := criavar("D3_NUMSEQ") // Numero sequencia
Local cLoteDest := "" // Lote destino
Local cValDest := criavar("D3_DTVALID") // Val dest


aAdd(aAuto,{cNumDoc,dDataBase})

// Alimenta o array para execução do MsExecAuto

For nI:=1 To Len(aCols)

SB1->(DBSEEK(xFilial("SB1") + aCols[nI][2] ))


cProduto := aCols[nI][2]
cDescProd := SB1->B1_DESC
cUm := SB1->B1_UM
nQuant := aCols[nI][5]

IF !SB2->(DBSEEK(xFilial("SB2") + aCols[nI][2] + cArmDest ))
CriaSB2( cProduto, cArmDest)
ENDIF


aAdd(aAuto, {cProduto ,;
cDescProd ,;
cUM ,;
cArmOri ,;
cEndOri ,;
cArmDest ,;
cEndDest ,;
cNumSer ,;
cLote ,;
cSLote ,;
cValidade ,;
nPoten ,;
nQuant ,;
cQtSegUm ,;
cEstorno ,;
cNumSeq ,;
cLoteDest ,;
cValDest })
next nI

MSExecAuto({|x,y| mata261(x,y)},aAuto,3)//inclusão

If lMsErroAuto
ConOut("Erro na inclusao!")
MostraErro()
EndIf


Return !lMsErroAuto

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 9 meses atrás #14907 por Rodrigo Almeida
Boa tarde!

Estou tentando utilizar a função MsExecAuto na rotina Mata 261, utilizei como
referência o exemplo do link: tdn.totvs.com/pages/releaseview.action ?
pageId=6089268

Quando executo a rotina, aparece o seguinte erro:

Titulo:
SC807700.LOG

Mensagem:
HELP: MA260OBR
Algum campo de preenchimento obrigatório não foi preenchido.

Não estou conseguindo identificar qual campo é obrigatório no MsExecAuto.
Alguém me informar quais campos devo preencher? Utilizei todos os campos
preenchidos na rotina padrão, verifiquei pelo apsdu, os campos preenchidos e não funcionou...

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 9 meses atrás #14909 por kanaamlrr
Cara, aqui eu utilizei essa estrutura:
/*
Funcao      : GrvTrans
Objetivos   : Realiza o ExecAuto da rotina de transf de materiais
Autor       : Kanaãm L. R. Rodrigues 
Data/Hora   : 13/08/2012
*/
*------------------------*
Static Function GrvTrans()
*------------------------*
Local   aAuto       := {}
Private lMsErroAuto := .F.

aAdd(aAuto,{cDocumento,dA261Data})

For i:=1 To Len(aCols2)
   aAdd(aAuto, {aCols2[i][01],;  //Prod Origem
                aCols2[i][02],;  //Descrição
                aCols2[i][03],;  //Unid Medida
                aCols2[i][04],;  //Armazem origem
                aCols2[i][07],;  //End. Origem
                aCols2[i][08],;  //Prod Dest.
                aCols2[i][09],;  //Descrição
                aCols2[i][10],;  //Unid Medida
                aCols2[i][05],;  //Armazém destino
                aCols2[i][11],;  //End. Dest.
                aCols2[i][12],;  //Num. Serie
                aCols2[i][13],;  //Lote
                aCols2[i][14],;  //Sub-Lote
                aCols2[i][15],;  //Validade
                aCols2[i][16],;  //Potencia
                aCols2[i][06],;  //Quantidade
                aCols2[i][17],;  //Qtde 2ª UM
                aCols2[i][18],;  //Estornado
                aCols2[i][19],;  //Seq.
                aCols2[i][20],;  //Lote Dest.
                aCols2[i][21],;  //Valid Dest.
                aCols2[i][22]})  //Item Grade
Next i

MSExecAuto({|x,y| mata261(x,y)},aAuto,3)//inclusão
If lMsErroAuto
   ConOut("Erro na inclusao!")			
   MostraErro()
EndIf
//
Return !lMsErroAuto


deu certinho, da uma verificada ai.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.260 segundos
Joomla templates by a4joomla