alguém já pegoum problema com o BeginSQL quando temos nele um filtro por filial na última posição do where?
BeginSQL Alias cAliasAL
SELECT *
FROM %Table:VC1% VC1
WHERE VC1_ORIGEM = %exp:cOriCEV% AND VC1_FILIAL = %xfilial:VC1%
EndSQL
A SQL acima produz o erro abaixo (vide as duas aspas simples no final).
TCVersion [18.2.1.4] ARCH [64] OS [WINDOWS] BUILD [RELEASE]
SELECT * FROM VC1010 VC1 WHERE VC1_ORIGEM = '00020008' AND VC1_FILIAL = '010103' ' on __EXECSQL(APLIB300.PRW) 18/11/2019 18:56:02 line : 149
Alguém sabe se tem alguma DOC que trate este assunto?
Edit
Previsão de correção para quem quiser: 27-02-20
quando sair a correção posto como resposta da pergunta!
O Tiago Campos deu uma ótima dica. Consultei no portal e verifiquei que a última versão disponível para a Release 12 é datada de 20/12/2019. Não sei se vai funcionar mas segue o link para download: https://suporte.totvs.com/portal/p/10098/download#detail/491499
Aparenta ser algum problema do framework, efetuei a aplicação da LIB e includes mais recentes e também consegui reproduzir o erro.
Recomendo efetuar a abertura de um chamado na TOTVS com a evidência.
User Function TSTSQL
Local _cAlias := GetNextAlias()
BeginSql Alias _cAlias
SELECT * FROM %TABLE:SA1%
WHERE A1_COD = '000002' AND A1_FILIAL = %xFilial:SA1%
EndSql
(_cAlias)->(DbGoTop())
If(!(_cAlias)->(EoF()))
MsgInfo('Encontrou!')
EndIf
(_cAlias)->(DbCloseArea())
Return
TCVersion [18.2.1.4] ARCH [64] OS [WINDOWS] BUILD [RELEASE]
SELECT * FROM SA1010 WHERE A1_COD = '000002' AND A1_FILIAL = ' ' '
__EXECSQL - APLIB300.PRW(149) - Params: CALIAS:SCGN000007,CQUERY:SELECT * FROM SA1010 WHERE A1_COD = '000002' AND A1_FILIAL = ' ' ',@ACAMPOSCONV:,LNOPARSER:.F. )
Realmente existe um erro, o mesmo parece estar presente na pré-compilação, consegui reproduzir até mesmo ser colocar um include no fonte, só de gerar o PPO do fonte, já fica evidente a aspas simples a mais no final da instrução SQL.
Já abri uma issue sobre isso para a equipe responsável, não tenho qualquer data para informar, o erro parece estar presente no appre ou no appserver, não consigo dizer com exatidão.
Por enquanto, é workaround, que não tem qualquer impacto em relação ao retorno da query:
BeginSQL Alias cAliasAL
SELECT *
FROM %Table:VC1% VC1
WHERE VC1_FILIAL = %xfilial:VC1% AND VC1_ORIGEM = %exp:cOriCEV%
EndSQL
Basta NÃO deixar o %xFilial:Alias% no final da instrução SQL, isso já resolvi de forma pontual o problema, considere também utilizar o %NotDel% no final da instrução SQL, são raras as rotinas que trazemos também registros deletados de forma lógica.