Erros relacionados ao Repositório de Objetos (RPO) podem ser frustrantes. Eles impedem a execução de código, mesmo que seu fonte pareça correto. Este guia prático ajuda a diagnosticar e resolver problemas como:

  • Função que existe no fonte, mas não no repositório.
  • Compilação incompleta que invalida o RPO.
  • Chamada de função que não é encontrada no AppMap.

Invalid function type. Please check RPO file

Este erro ocorre quando o servidor de aplicação tenta executar uma função básica da linguagem (disponibilizada pela plataforma) que foi compilada em um repositório de objetos que ainda não possuía essa função. O servidor critica a chamada por estar marcada como função de repositório, mas não encontrada.

Um exemplo é a função strTokArr2, disponível a partir da build 7.00.131227A-20140908. Se um programa que a utiliza é compilado e executado em um ambiente desatualizado que não reconhece a função como básica, o erro pode ocorrer.

Function has compilation problems. Rebuild RPO

Similar ao anterior, este erro acontece ao executar uma função básica da linguagem que não é suportada pelo servidor de aplicação em uso, mesmo que o programa tenha sido compilado em um ambiente que a suporta. Isso pode ocorrer se o repositório de objetos de um ambiente atualizado for copiado para um ambiente desatualizado.

O servidor de aplicação mapeia a função como básica, mas ao tentar executá-la, a encontra ausente, resultando na mensagem de erro.

InterFunctionCall: cannot find function in AppMap

Este erro indica que o servidor de aplicação tentou chamar uma função que não foi compilada ou foi removida do repositório de objetos. O AppMap, que mapeia as funções disponíveis, não encontra a chamada.

Um cenário comum é a aplicação de um patch em um ambiente desatualizado. A função mapeada como de repositório pelo patch não é encontrada no RPO do ambiente base, gerando o erro.

Invalid repository due to an incomplete compilation

Quando a compilação de um código-fonte AdvPL é abortada por um erro no próprio código, o arquivo-fonte é marcado como inválido. A presença de um ou mais arquivos inválidos torna todo o repositório de objetos (RPO) inválido para uso.

O repositório só volta a ser considerado válido após todos os arquivos com erros de compilação serem corrigidos e recompilados com sucesso, ou removidos do repositório.

Armadilhas

  • Atualização de ambiente: A principal causa para os erros relacionados a funções básicas ausentes ou mal mapeadas é a inconsistência entre as versões do servidor de aplicação e o repositório de objetos. Certifique-se de que os patches e compilações estejam alinhados com a build do seu ambiente.
  • Compilação abortada: Um erro simples em um fonte pode invalidar todo o RPO, impedindo a execução de outras rotinas. Monitore os logs de compilação para identificar e corrigir rapidamente fontes com problemas.

Fontes oficiais

Paginas publicadas pela TOTVS na Developer Network.