Rotinas automáticas e execução sem interface
Separa o contrato da rotina automática do seu canal de execução.
Visão geral
Identifique a rotina suportada e seus campos, operação e formato dos vetores. Prepare identidade, empresa e filial apenas se o chamador não os fornecer. Em MsExecAuto, lMsErroAuto sinaliza erro não fatal; não captura sozinho toda exceção possível. lMsHelpAuto habilita captura e lAutoErrNoFile controla a geração padrão de arquivo. Em execução sem interface, não dependa de MsgInfo ou MostraErro em tela: trate mensagens com o mecanismo documentado, minimize dados sensíveis e defina transação e limpeza. O exemplo prepara somente as variáveis, sem chamar uma rotina ou gravar registros. (Fontes: refs. 1–2.)
Exemplo comentado
#Include "Protheus.ch"
User Function Ed635()
// Identificadores PRIVATE impostos pelo contrato MsExecAuto.
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
Private lAutoErrNoFile := .T.
// Resetar lMsErroAuto imediatamente antes da chamada homologada.
ConOut(ValType(lMsErroAuto))
Return NilImprime L. Não executa MsExecAuto nem declara sucesso de processamento. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Não inventar vetor universal para rotinas distintas. Homologar falhas de regra, exceções, concorrência e reexecução.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.