Tenho algumas integrações SOAP que usam o mesmo endpoint para varias empresas e no programa eu ficava mudando entre as empresas utilizando o trecho abaixo:
dbCloseAll()
cEmpAnt := cEmpRet
cFilAnt := cFilRet
OpenSM0(cEmpAnt+cFilAnt)
OpenFile(cEmpAnt+cFilAnt)
Após a atualização para o release 12.1.2410 não é mais permitido alterar a variável cEmpAnt, existe alguma outra forma de mudar a empresa posicionada durante a "execução" ?
Murilo, a thread tem seu ambiente preparado conforme a configuração do SOAP, cada thread vai atender um grupo de empresas específico, se você deseja mudar de grupo de empresas, você deveria fazer uma requisição para cada grupo de empresas e tratar o grupo via o header TenantId.
Chamar funções como DBCloseAll tem um impacto extremamente negativo, parando semáforos de controle em diversos outros problemas, isso não é recomendado.
Aqui temos customizações onde realizamos operações com diversas empresas e suas filiais. Na maioria dos casos, para não dar problema, encapsulamos a rotina de integração com um StartJob. Criamos assim uma sessão no server que "morre" ao finalizar o que precisa ser feito. Isso eliminou bastante errorlog que era gerado no uso de um RpcSetEnv.