Estou utilizando a função FWGetSX5 e verifiquei que ela não funciona corretamente.
Na documentação do TDN esta função possuí 3 parametros, tabela, chave e idioma.
Função: FWGetSX5
Função de retorno dos campos de uma tabela no SX5.
Sintaxe
FWGetSX5 ( < cTable >, [ cKey ] ,[cIdiom]) --> aRetorno
Porém, se preciso fazer uma busca informando a tabela + a chave, o array retorna vazio. Só funciona se eu informar somente a tabela.
Verifiquei que este problema pode ser no tamanho do campo chave. Se a minha chave tem o tamanho exato de caracteres do X5_CHAVE, o array retorna o valor esperado corretamente, mas no TDN não há nenhuma informação adicional quanto a isso.
Gostaria de saber se mais alguem teve problemas com a função FWGetSX5 e se conseguiu uma solução sem precisar tratar o array. Outra pergunta: a função TABELA continua funcionando normalmente nos releases mais novos?
Boa noite Gabriela, os dados são pesquisados com um DBSeek, consegue verificar no log do DBAccess como ficou a query no SX5 quando você reproduz o problema, por favor.
Ola Gabriela Dalle Luche,
Vale ressaltar como está configurada a tabela SX5 na SX2 caso a tabela esteja compartilhada e você utiliza ela de forma ex clusiva "por filial" a função não ira funcionar !!
Eu tive esse problema "com a virada da 12.1.17 para 12.1.25" no qual a minha tabela erra compartilhada porem para o cadastros de serie no SIGAFAT eu cadastrava de forma exclusiva , para resolver esse problema no padrão existe o ponto de entrada https://centraldeatendimento.totvs.com/hc/pt-br/articles/360007367911-MP-TMS-Ponto-de-entrada-CHGX5FIL-utiliza-tabela-01-exclusiva-em-um-SX5-compartilhado
E no meus fontes customizados eu fiz o seguinte, criei uma user function que resolve minha vida :
user function xGetSx5(_cFilial, _cSerie)
Local aDados := {}
Local cQuery := ""
if Select("cAliasSX5") > 0
cAliasSX5->(DbCloseArea())
EndIF
cQuery += " SELECT X5_FILIAL AS FILIAL,X5_CHAVE AS CHAVE,X5_DESCRI AS DESCRI"
cQuery += " FROM " + RetSqlName("SX5")
cQuery += " WHERE X5_FILIAL = '" + _cFilial + "'"
cQuery += " AND X5_CHAVE = '" + _cSerie + "'"
DbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),"cAliasSX5",.T.,.T.)
while ! cAliasSX5->(Eof())
aAdd( aDados, {cAliasSX5->FILIAL,cAliasSX5->CHAVE,cAliasSX5->DESCRI} )
cAliasSX5->(DbSkip())
end
cAliasSX5->(DbCloseArea())
return aDados