Mateus,
O ideal é que as funções de numeração automática do Protheus lhe atendam. Agora é necessário compreender o porque dela ter traduzido dados os quais não são de acordo com o que você espera, essa função é amplamente usada no sistema. Você consegue conferir os valores atuais na rotina APCFG110
, caso ela não conste no menu do seu Configurador, basta adicionar, talvez vendo os valores atuais ou editando o valor atual, você já consiga compreender e/ou normalizar a situação.
Usar uma query, com MAX
funciona, porém você não terá um semáforo, logo a colisão é possível, basta usuários usarem a mesma rotina de forma sincronizada e você terá numerações repetidas, se a numeração for uma chave única da tabela (índice único) você terá um error.log.
Caso deseja controlar via banco, o ideal é criar uma sequence
.