Abertura de ambiente em rotinas automáticas - Parte 1


Existe uma forma de interagir com o sistema sem a necessidade de informar usuario e senha. É a abertura de ambiente usando a função RpcSetEnv. Você pode criar suas rotina, e se colocar RpcSetEnv(cEmp,cFil,,,,GetEnvServer(),{ }), você consegue testar inclusive se tiver consulta em tabelas Usando um exemplo simples de envio de e-mail

#Include 'Protheus.ch'
User Function testemail() //U_testemail()
	Local cMensagem := ""
	Local aArquivo  := {}
	Local cEmail    := "email destinatario"
	Local cEmp      := "01"  //codigo da empresa
	Local cFil      := "01"  //codigo da filial
	Private cMailConta	:= NIL
	Private cMailServer	:= NIL
	Private cMailSenha	:= NIL
	
	RPCSetType(3)  //Nao consome licensas
	RpcSetEnv(cEmp,cFil,,,,GetEnvServer(),{ }) //Abertura do ambiente em rotinas automáticas

	cMailConta	:=If(cMailConta == NIL,GETMV("MV_EMCONTA"),cMailConta)             //Conta utilizada p/envio do email
	cMailServer	:=If(cMailServer == NIL,GETMV("MV_RELSERV"),cMailServer)           //Server
	cMailSenha	:=If(cMailSenha == NIL,GETMV("MV_EMSENHA"),cMailSenha)
	 
	If Empty(cEmail)
		Conout('Funcao: testemail() >>> e-mail nao informado')
		Return
	Endif

	//Verifica se existe o SMTP Server                            
	If Empty(cMailServer)
		Conout("Funcao: testemail() >>> O Servidor de SMTP nao foi configurado !!!")
		Return(.F.)
	EndIf
	
	//Verifica se existe a CONTA                                  
	If Empty(cMailServer)
		Conout("Funcao: testemail() >>> A Conta do email nao foi configurado !!!"
		Return(.F.)
	EndIf
	
	cMensagem := 'sua mensagem'
	Conout(GPEMail("Assunto",cMensagem,cEmail,aArquivo))
	RpcClearEnv()   //Libera o Ambiente
Return
  Parametros:
Nome Tipo Descrição Padrao
cRpcEmp Caracter Código da empresa.
cRpcFil Caracter Código da filial.
cEnvUser Caracter Nome do usuário.
cEnvPass Caracter Senha do usuário.
cEnvMod Caracter Código do módulo. 'MODULO'
cFunName Caracter Nome da rotina que será setada para retorno da função FunName(). 'ROTINA'
aTables Vetor Array contendo as tabelas a serem abertas. {}
lShowFinal Lógico Alimenta a variável publica lMsFinalAuto. .F.
lAbend Lógico Se .T., gera mensagem de erro ao ocorrer erro ao checar a licença para a estação. .T.
lOpenSX Lógico SE .T. pega a primeira filial do arquivo SM0 quando não passar a filial e realiza a abertura dos SXs. .T.
lConnect Lógico Se .T., faz a abertura da conexao com servidor As400, SQL Server etc. .T.
  No próximo artigo, mostro como configurar para rodar um schedule de tempo em tempo no servidor.