ADVPL ou TLPP: qual usar no Protheus em 2026
Diferenças entre ADVPL e TLPP no Protheus: nomes longos, namespaces, tipagem, annotations e REST. Quando vale escrever em TLPP e quando manter o ADVPL que já funciona.
Quem desenvolve para o Protheus hoje escolhe entre duas linguagens: o ADVPL, que sustenta a maior parte do código existente, e o TLPP, a evolução que a TOTVS vem adotando nos produtos mais novos. A boa notícia é que a escolha não é definitiva. As duas rodam no mesmo servidor e conversam entre si.
Este texto resume as diferenças que importam no dia a dia e ajuda a decidir o que usar em cada situação.
O que muda no TLPP
A TOTVS mantém uma comparação oficial entre TLPP e ADVPL. Os pontos que mais aparecem na prática são estes:
Nomes longos. No ADVPL, nomes de funções e variáveis valem até 10 caracteres. Em fontes .tlpp, a TOTVS documenta nomes de até 255 caracteres, a partir da versão 17.3.0.0 do servidor. Parece detalhe, mas acaba com funções chamadas U_XPTOVLD2 que ninguém sabe o que fazem.
Namespaces. Permitem organizar o código por empresa, módulo e assunto, e evitam colisão de nomes entre fontes de equipes ou fornecedores diferentes.
Tipagem. Variáveis, parâmetros e retornos podem ter tipo declarado. Erros que no ADVPL só aparecem em produção passam a ser pegos antes.
Tratamento de erro com try-catch e parâmetros nomeados, que deixam o código mais previsível e fácil de ler.
Annotations e reflection. É com annotations que o TLPP publica APIs REST de forma mais direta, declarando o método e o caminho do endpoint junto da função.
O que não muda
O TLPP não substitui o ADVPL de uma vez. A própria TOTVS afirma que as duas linguagens se complementam. Na prática:
- Um fonte TLPP pode chamar funções ADVPL, desde que elas continuem compiladas no RPO.
- Um fonte ADVPL pode chamar funções TLPP. Quando a função tem nome longo, a documentação indica usar
tlpp.call(). - Pontos de entrada, rotinas padrão e o restante do ambiente continuam funcionando como antes.
Quando usar cada um
| Situação | Recomendação |
|---|---|
| Correção pequena em um fonte ADVPL antigo | Manter em ADVPL |
| Nova API REST para integrar o Protheus | TLPP |
| Novo módulo ou conjunto de rotinas | TLPP, com namespace próprio |
| Ponto de entrada simples | Tanto faz; siga o padrão da equipe |
| Fonte antigo, estável e sem manutenção | Não migrar só por migrar |
O erro mais comum é tratar a mudança como um projeto de reescrita. Reescrever código que funciona traz risco sem trazer ganho para a operação. Faz mais sentido escrever o código novo em TLPP e converter fontes antigos quando eles precisarem de manutenção relevante.
Antes de começar
Confira a versão do servidor. Recursos como nomes longos dependem da versão do AppServer. Verifique a do seu ambiente antes de definir o padrão da equipe.
Combine um padrão de namespaces. Algo como empresa.modulo.assunto resolve. O importante é todo mundo seguir o mesmo.
Atualize as ferramentas. A extensão da TOTVS para o VS Code compila e depura fontes ADVPL e TLPP no mesmo projeto.
Precisa de ajuda com o Protheus?
A MyQube desenvolve em ADVPL e TLPP, de pontos de entrada a APIs REST. Veja desenvolvimento ADVPL e TLPP ou, se o desafio é entender o que já existe no seu ambiente, a consultoria Protheus. Para integrar o Protheus com o Fluig por REST, leia como chamar a API REST do Protheus pelo Fluig.
Sua operação ainda depende de planilhas e retrabalho?
Agende uma conversa gratuita e receba um diagnóstico inicial dos seus gargalos operacionais.
Falar com a MyQubeOu conheça nosso serviço de Consultoria Protheus