Ocorrência
O sistema está gerando erro invalid macro source (SSYacc0105e: Error token failed, no valid token).
Ambiente
Microsiga Protheus - todas as versões
Causa
A causa deste tipo de erro geralmente está relacionada a validação de usuário nos campos de estrutura sx3, exemplo x3_relação, x3_pictvar, x3_when ou x3_inibrw de algum campo de tabela.
Também pode estar relacionada ao cadastro de fórmulas (, geralmente quando a query está incompleta.
Solução Avalie: 1. Se os campos x3_relação, x3_pictvar, x3_when ou x3_inibrw, da tabela informada no erro, se há alguma informação que não esteja entre aspas duplas, ou está com aspas duplas e simples ao mesmo tempo; para corrigir, acerte a informação colocando entre aspas duplas;
2. Se alguma informação do tipo numérica sendo passada sem uso de aspas, visto que o campos x3_relação, x3_pictvar, x3_when ou x3_inibrw são do tipo carácter;para corrigir, acerte a informação colocando entre aspas duplas;
3. Se está sendo passado uma instrução ADVPL e não está fechando adequadamente parênteses, chaves e coxetes, para corrigir, acerte a expressão Advpl colocando os devidos parênteses, chaves e coxetes que estão faltando.
OBS 1: Para descobrir o campo que apresenta o erro, basta procurar no errorlog, a tabela de estrutura SX3, que demonstrará o campo que foi lido e está com erro, exemplo:
d:\outsourcing\clientes\lvz2xd\protheus_data\system\sx3010.dtc; Rdd:DBFCDX; Alias:SX3; Filter :; Recno:124520; Total Recs:124529; Order:2
Index (1) :**SX30101 X3_ARQUIVO+X3_ORDEM
Field 1: D_E_L_E_T_E_D(C) :
Field 2: R_E_C_N_O(N) :124520
Field 3: X3_ARQUIVO(C) :SA1
Field 4: X3_ORDEM(C) :P6
Field 5: X3_CAMPO(C) :A1_NR_END
Field 6: X3_TIPO(C) :C
Field 18: X3_RELACAO(C) : Field 33: X3_PICTVAR(C) :@!
Field 34: X3_WHEN(C) :
Field 35: X3_INIBRW(C) :
OBS 2: No caso do cadastro de fórmulas, procure no erro por querys incompletas que poderão também ser indicadas após a informação do erro no valid token:
invalid macro source (SSYacc0105e: Error token failed, no valid token) :IF(U_NEO34A04(SF2->F2_FILIAL,SF2->F2_DOC,SF2->F2_SERIE,SF2->F2_CLIENTE,SF2->F2_LOJA,SF2->F2_TIPO) .AND.SUBSTR(SF2->F2_EMISSAO,1,6)==SUBSTR(DTOS(DATE()),1,6).AND.!SF2->F2_TIPO $ "D/B",SF2->F2_VALISS ,0 on DETPROVA(MATXFUNA.PRX) - Veja que nesta instrução falta o parenteses para fechar a query.
invalid macro source (SSYacc0105e: Error token failed, no valid token) :DbSetFilter({||(A1_MSBLQL== "1" dToS(A1_DTCAD) >= "20170201" .AND. )},'(A1_MSBLQL== "1" dToS(A1_DTCAD) >= "20170201" .AND. )') on FWBRWTABLE:EXECUTEFILTER(FWBRWTABLE.PRW) - Veja que nesta instrução que não há término da query após o operador .AND.
Fonte: https://centraldeatendimento.totvs.com/hc/pt-br/articles/360025544331-MP-FAT-Invalid-Macro-Source
Comments