[Appeon] Erro ao abrir janelas (OpenSheet e OpenSheetWithParm)
Overview
Ao migrar aplicações do PowerBuilder para o Appeon, pode-se encontrar certos desafios, especialmente com as funções OpenSheet e OpenSheetWithParm, que, apesar de funcionarem da mesma maneira em ambos os ambientes, às vezes resultam em falhas inesperadas. Neste post, vamos mergulhar em uma descoberta intrigante: um espaço em branco inofensivo no nome de um objeto de menu que pode ser a raiz de problemas frustrantes. Acompanhe-nos nesta jornada técnica para aprender uma solução simples, mas eficaz, garantindo que suas janelas abram sem contratempos no Appeon.
Nem todas as operações do PowerBuilder funcionam da mesma forma no Appeon. Felizmente, as funções OpenSheet e OpenSheetWithParm tem o mesmo funcionamento. O que não quer dizer que erros não possam acontecer somente quando a aplicação é executada via Appeon.
Durante alguns testes, percebemos que ambas funções (OpenSheet e OpenSheetWithParm) retornavam -1 (falha) ao tentar abrir determinadas janelas que, aparentemente, estão funcionando corretamente no PowerBuilder.
Nestes casos, o problema pode não estar na janela em si, mas na forma como o Appeon interpreta o código delas.
Em uma aplicação, detectamos que algumas janelas não estavam abrindo e a função OpenSheet sempre retornava -1. Ao analisar, percebemos que o nome do menu associado a ela estava com um espaço no final. Sim, um simples caractere espaço no final do nome do objeto de menu estava causando os erros. (Exemplo: “mn_main_action “)
Na imagem acima, você pode perceber que existe um caractere (espaço) logo depois do nome do objeto de menu. Este é o culpado pelos erros.
A solução é simples. Basta remover este espaço que está sobrando, salvar e realizar um novo Deploy.
Na imagem acima, o problema foi corrigido e a janela passará a abrir normalmente tanto no PowerBuilder quanto no Appeon.
Não sei se este problema também pode afetar objetos do tipo DataWindow ou DataStore, mas é bom ficar atento caso elas estejam se comportando de forma diferente no Appeon.