Protheus Advpl Agendamento em ambiente de desenvolvimento com erro de execução

Estou programando uma User Function para disparar um email num agendamento.

O nome da função é U_TERCEIRO(), registrada no Cadastro do Schedule.

Está acontecendo um caso curioso para mim que sou iniciante.

a) Se a rotina é simplesmente enviar email, constando no código somente elementos de criação de objetos e 'engessando-se' os destinatários, assunto e corpo, o agendamento executa a função sem problemas e o email é enviado;

b) Se a rotina envolve uma busca em banco de dados para depois enviar o email com base no resultado do SELECT, ocorre erro - o email não é enviado - e no console do servidor aparece como

Alias does not exist: SX2 on RETSQLNAME(APLIB070.PRW)

Há uma informação adicional que fica mais estranho: se abro o DBAccess, acesso o Menu no módulo onde a função está registrada e o executo manualmente, funciona sem problema, isto é, os mesmos códigos tanto em a) quanto em b) acima correm bem. Os emails são enviados sem problema.

Olá,

O seu agendamento está sendo executado como processo especial, nessa situação, o ambiente não está aberto e vai gerar um erro, pois o SX2 entre diversas outras tabelas não estão abertas.

Portanto, você deve abrir o ambiente via RpcSetEnv ou preparar a sua rotina via SchedDef.

O recomendado, é você preparar sua rotina via SchedDef, dessa forma, você não precisa se preocupar em abrir o ambiente entre demais questões, o Schedule vai chamar sua rotina já com o ambiente preparada conforme seu agendamento.

Documentações:
Schedule Protheus - Frameworksp - TDN
Schedule - Como agendar a execução de rotinas - Frameworksp - TDN
Definição de Static Function SchedDef para o Schedule - Frameworksp - TDN
https://tdn.totvs.com.br/display/public/framework/RpcSetEnv