Olá,
Não é possível fazer dessa forma.
Tanto o #define
quanto o BeginSQL
passam por uma pré-compilação e isso faz com que o BeginSQL
fique com o nome da constante e não com seu valor.
Para situações como essa, é necessário criar uma variável ou deixar o valor fixo na query.
Exemplo com variável:
#DEFINE PAIS "105"
local cPais as character
cPais := PAIS
BeginSQL Alias cAliasZZ2
SELECT *
FROM %table:SA1% SA1
WHERE SA1.%Notdel%
AND SA1.A1_CODPAIS = %Exp:cPais%
EndSQL
Exemplo com valor fixo:
BeginSQL Alias cAliasZZ2
SELECT *
FROM %table:SA1% SA1
WHERE SA1.%Notdel%
AND SA1.A1_CODPAIS = '105'
EndSQL
Documentações:
https://tdn.totvs.com/display/framework/Desenvolvendo+queries+no+Protheus
https://tdn.totvs.com/display/tec/AdvPL+-+Compiler+Directives
https://tdn.totvs.com/display/framework/Embedded+SQL