× Linguagem de Programação ADVPL

Perguntas MATA261 - TRANSFERENCIAS - EXECAUTO

Mais
11 anos 6 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 6 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 6 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 6 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 5 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 5 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.157 segundos
Joomla templates by a4joomla