Tempo aproximado para leitura: 00:02:00 min
Ocorrência
Ao utilizar a função Estrut2() para efetuar a abertura da tabela ESTRUT e em seguida a função FimEstrut2(), a tabela não está sendo devidamente fechada.
Ambiente
Cross Segmentos - Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.80
Causa
Este incidente é reproduzido quando não são passados todos os parâmetros necessários na função Estrut2().
Solução
Passar por referência o quarto parâmetro (oTempTable) na função Estrut2() e utilizá-lo para efetuar o fechamento na função FimEstrut2():
// BIBLIOTECAS NECESSÁRIAS
#Include "TOTVS.ch"
#Include "TBICONN.ch"
// FUNÇÃO PRINCIPAL (CRIADA PARA TESTE)
User Function VldEstrut()
Local nCont := 0 // CONTADOR DE LAÇO
Local nQuant := 1 // QUANTIDADE A SER EXPLODIDA
Local cProduto := "PRDT0002" // PRODUTO
Local cArquivo := "" // ALIAS DO ARQUIVO TEMPORÁRIO
Local oTempTable := NIL // NOME DO OBJETO UTILIZADO PELA TABELA
Private nEstru := 0
RPCSetEnv("99", "01", NIL, NIL, "PCP", NIL, {"SG1"}) // SE VIA SMARTCLIENT, REMOVER ESTA LINHA
// EFETUA 1500 VEZES A ABERTURA E FECHAMENTO DA TABELA
While (nCont < 1500)
// EFETUA A ABERTURA DA TABELA
cArquivo := Estrut2(cProduto, nQuant, NIL, @oTempTable, .T.)
ConOut(ESTRUT->CODIGO)
nCont++ // AUTO INCREMENTA O CONTADOR DO LAÇO
// EFETUA O FECHAMENTO DA TABELA
FimEstrut2(NIL, oTempTable)
nEstru:=0
ConOut(nCont)
End
RPCClearEnv() // SE VIA SMARTCLIENT, REMOVER ESTA LINHA
Return (NIL)
Saiba mais
ESTRUT2 - Explosão de estrutura cadastrada no SG1
FIMESTRUT2 - Apagar os arquivos gerados pela função ESTRUT2
0 Comentários