Tempo aproximado para leitura: 00:15:00min
Dúvida
Podemos utilizar Begin Transaction em um fonte customizado e chamar um execauto padrão e depois encerrar End Transaction?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - Financeiro - Todas as versões
Solução
A utilização do comando Begin Transaction em conjunto com rotinas automáticas (ExecAuto) padrão não é recomendada, exceto quando expressamente documentado no execauto pontual da rotina a sua utilização.
Essa prática pode interferir nos controles internos de transação do sistema, resultando em comportamentos inesperados, tais como:
-
Tabelas temporárias não finalizadas, causando erros como:
"Application Server Work area table full (Max=1024)" - Falhas de validação
- Inconsistências de dados
- Outros erros não previstos
Caso o controle de transação seja realmente necessário, recomenda-se uma análise criteriosa e o uso de DisarmTransaction() com responsabilidade, evitando conflitos com o fluxo padrão do sistema.
Por esse motivo, nas documentações oficiais de cada ExecAuto de cada rotina deve estar claramente especificado quais comandos e práticas são permitidos.
Exemplo de falha:
User Function U_TESTEFINA()
Local lSucesso := .T.
Local aParametros := {}
Begin Transaction // Não é recomendado ter essa chamada, a não ser que tenha documentado na documentação da rotina oficinal o uso do Begin Transaction
aParametros := {
"FILIAL" => "01", // Código da filial
"TIPO" => "R", // Tipo de título: R = Receber, P = Pagar
"NUMERO" => "000123", // Número do título
"PARCELA" => "01", // Parcela
"VALOR" => 100.00, // Valor da baixa
}
lSucesso := ExecAuto("FINA460", aParametros) // <---- Chamada de um execauto exemplo
DisarmTransaction()
End Transaction // Não é recomendado ter essa chamada, a não ser que tenha documentado na documentação da rotina oficinal o uso do End Transaction
Return
Saiba mais:
ADVPL - Begin transaction
0 Comentários