Vídeo Aula – AdvPL 011 – Gravação de Registros via MsExecAuto

Olá pessoal…

Na vídeo aula de hoje, vou falar um pouco sobre gravação de registros rotinas automáticas (MsExecAuto) e Controle de transações.



Abaixo o código fonte utilizado para os testes:

//Bibliotecas
#Include "Protheus.ch"
#Include "RwMake.ch"
#Include "TBIConn.ch"

/*/{Protheus.doc} zExecAuto
Exemplo de gravação via ExecAuto
@author Atilio
@since 29/11/2015
@version 1.0
	@example
	u_zExecAuto()
/*/

User Function zExecAuto()
	Local aArea	:= GetArea()
	Local aVetor	:= {}
	//Variáveis utilizadas pelo ExecAuto (caso queira gravar o log em arquivo texto, utilize as duas variáveis abaixo
	/*Private lMSHelpAuto		:= .T.
	Private lAutoErrNoFile	:= .T.*/
	Private lMsErroAuto		:= .F.
	
	//Adicionando dados no produto para testar inclusão
	aVetor :=	{;
					{"B1_COD",			"99999Z",									Nil},;
					{"B1_DESC",		"PRODUTO TESTE - ROTINA AUTOMATICA",	Nil},;
					{"B1_TIPO",		"P+",										Nil},;
					{"B1_UM",			"UN",										Nil},;
					{"B1_LOCPAD",		"01",										Nil},;
					{"B1_PICM",		0,											Nil},;
					{"B1_IPI",			0,											Nil},;
					{"B1_CONTRAT",	"N",										Nil},;
					{"B1_LOCALIZ",	"N",										Nil};
				}
	
	//Iniciando controle de transação
	Begin Transaction
		//Chamando o cadastro de produtos de forma automática
		MSExecAuto({|x,y| Mata010(x,y)},aVetor,3)
		
		//Se houve erro
		If lMsErroAuto
			//Caso queira gravar o log em arquivo texto, não se deve usar a rotina MostraErro, mas sim o trecho abaixo:
			/*
			aLogAuto	:= {}
			cLogTxt	:= ""
			
			//Pegando log do ExecAuto
			aLogAuto := GetAutoGRLog()
			
			//Percorrendo o Log
			For nAux:=1 To Len(aLogAuto)
				cLogTxt += aLogAuto[nAux] + Chr(13)+Chr(10)
			Next
			*/
		
			//Mostrando a janela de erro
			MostraErro()
			
			//Disarmando a transação
			DisarmTransaction()
		EndIf
	             
	End Transaction

	RestArea(aArea)
Return

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Se quiser fazer o download desse código ou do conteúdo mostrado na vídeo aula, acesse nosso GitHub pelo link github.com/dan-atilio/AdvPL (Exemplos > Vídeo Aulas > 011 – Gravação de Registros via MsExecAuto).

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas na TOTVS Oeste Paulista Bauru. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

4 respostas em “Vídeo Aula – AdvPL 011 – Gravação de Registros via MsExecAuto

  1. Parabéns pelo vídeo, ficou bom. Geralmente não ensinam sobre os campos obrigatórios no Execauto e no início quebramos a cabeça.

  2. Bom dia Dan_Atilio. Seu post é antigo, mas pra mim foi muito útil. Estou com uma dúvida e se voce puder me responder agradeço. Segue: Há possibilidade de criar um msexecauto entre empresas? No meu caso seria a rotina FINA100 – Transferencia.

    Valeu!!!

    • Boa noite Anizio, tudo bem?

      Não entendi muito bem, você quer rodar a FINA100 para todas as empresas? Filiais?

      Se sim, você pode criar uma variável com as empresas / filiais (ou usar rotinas padrão, como a FWAllFilial), e depois alterar as variáveis cEmpAnt e cFilAnt (respectivamente Empresa e Filial), lembrando de tomar cuidado de sempre fazer um backup dessas variáveis (pois são variáveis públicas do Protheus).

      Abaixo um pequeno exemplo:

      aEmpresas := {"01"}
      aFiliais  := {"01","02"}
      cEmpBkp   := cEmpAnt
      cFilBkp   := cFilAnt
      
      //Percorrendo as empresas
      For nEmpAtu := 1 To Len(aEmpresas)
          cEmpAnt := aEmpresas[nEmpAtu]
      
          //Percorrendo as filiais
          For nFilAtu := 1 To Len(aFiliais)
              cFilAnt := aFiliais[nFilAtu]
              //Seus tratamentos e ExecAuto
          Next
      Next
      
      //Voltando os backups
      cEmpAnt := cEmpBkp
      cFilAnt := cFilBkp
      

      Espero ter ajudado.
      Um grande abraço.

Deixe uma resposta