Você montou uma sequência de programas no Magic xpa desta forma:
O programa ‘On-Line’ vai invocar alguns programas ‘Batches’, que trabalharão com acesso a dados.
Como o acesso aos dados, por depender de um recurso externo (o gerenciador de acesso aos dados), pode ter algum problema e executar com sucesso, você cuidadosamente coloca um ‘Error Handling’ para detectar as possíveis exceções, salvando os detalhes numa variável do Main Program, para posterior consulta:
Porém, nenhuma informação retorna (fica atualizada na variável do Main Program) caso ocorra um erro:
Não se desespere.
O que ocorre, é que por definição, todos os campos (incluindo-se os reais e virtuais) são restaurados ao seu valor original antes da abertura da transação, após a conclusão de um Error Handling.
Por isso, a virtual do Main Program volta a ficar vazia logo após a execução deste Event Handler de Erro.
A solução para estes casos, e usar SetParam / GetParam.
Variáveis criadas com SetParam não são restauradas ao seu valor original, após um Error Handling:
Pronto!
As informações geradas dentro do Error Handling estarão disponíveis também após ele ser finalizado:
Baixe aqui neste link um projeto exemplo (uniPaaS 1.9n, mas pode converter para Magic xpa), sobre este tema.