Variável cFilAnt mudança em tempo de execução

Bom dia. Estou com a seguinte dúvida, estou logado na filial 01 e lendo uma tabela temporária, nessa tabela temporário contém diversos registros de outras filiais:

Filial 02 numero SXE da tabela SC7 - 000005

Filial 03 numero SXE da tabela SC7 - 000010

Filial 04 numero SXE da tabela SC7 - 000007

Filial 05 numero SXE da tabela SC7 - 000003

Exemplo:

Blockquote

cSvFilAnt := cFilAnt

Do While (cAlSC7)->(!EOF())

cFilAnt := (cAlSC7)->C7_FILIAL

DbSelectArea("SC7")

SC7->(DbSetOrder(1))

_cNumPed :=GETSXENUM("SC7","C7_NUM")

CONFIRMSX8()

Enddo

cFilAnt := cSvFilAnt

(cAlSC7)->( Dbclosearea() )

Blockquote

Mas a rotina não está buscando a sequencia de cada filial da SXE, qual será o problema?

Rodrigo, trocar a cFilAnt é complexo, uma vez que você tenha gestão corporativa ou sua tabela tenha qualquer tipo de compartilhamento, você pode vir a criar uma cFilAnt com um valor incorreto, e as consequências disso podem ser várias.

Boa tarde Rodrigo, Acredito que ele só esteja pegando da filial 02 ou a filial logada, se for o caso acredito que você terá que força cada filial na cfilant.

Então Tiago, estou passando o conteúdo da tabela temmporária na variável cFilAnt := (cAlSC7)->C7_FILIAL, mesmo assim parece que está buscando o registro SXE (license server) de outra empresa e não da empresa que está na variável cFilAnt

Chegou a debugar para ver se ele esta atribuindo mesmo o da tabela ?, se sim faz um teste tenta colocar fixo tipo cfilant := “05”

A minha sugestação seria usar a a função StartJob, para executar em outra Thread juntamente com algumas funçoes de retormo de filiais como FWXFILIAL http://tdn.totvs.com/display/tec/StartJob https://tdn.totvs.com/pages/releaseview.action?pageId=6815108

Bom dia Givanildo. Mas estou somente trocando a filial em tempo de execução, se fosse a empresa utilizaria o starjob.

isso mesmo rodrigo com a startjob é possível avaliar melhor o cenário o dicionario está no banco?

Pra efetuar a troca de filial você precisa fazer a alteração de ambiente, mesmo que seja para a mesma empresa, alterando apenas a filial.

Exemplo:


RpcClearEnv()
RPCSetType(3)
RpcSetEnv("01","01") //Empresa 01, filial 01



RpcClearEnv()
RPCSetType(3)
RpcSetEnv("01","02") //Empresa 01, filial 02



RpcClearEnv()
RPCSetType(3)
RpcSetEnv("05","01") //Empresa 05, filial 01

Atentar com os colaterais: questão de licenças e tempo de execução que leva para alteração do ambiente. Caso seja em uma API pode dar timeout dependendo do volume de dados.