Reestruturação do controle de saldos dos cubos do módulo SIGAPCO
Linha de Produto: | Microsiga Protheus |
Segmento: | Serviços |
Módulo: | SIGAPCO - Planejamento e Controle Orçamentário |
Função: | Pcoa300 / Pcoa310 |
Situação/Requisito: | Reestruturação do controle de saldos dos cubos do módulo SIGAPCO e Reprocessamento de Lançamentos |
Solução/Implementação: | Reestruturação do controle de saldos dos cubos do módulo SIGAPCO e Reprocessamento de Lançamentos Após aplicação do patch deste chamado o controle de saldos será somente pela tabela de saldos diários (AKT) não mais atualizando a tabela de saldos mensais (AKS) por motivo de performance. Todas as rotinas que trabalham com saldos foram adequadas para trabalhar com unica tabela de saldos diários (AKT), sendo que para usuário final a funcionalidade do sistema continua exatamente como sempre não afetando os programas padrões do módulo SIGAPCO. Executar o compatiblizador de base de dados U_UPDPCO para criação do campo "Analitico" (AKT_ANALIT) na tabela de saldos diários que indicara se chave gravada é analítica. Criado também o parâmetro "MV_PCOPROC" com conteúdo "" (em branco) onde poderá indicar o processo que esta preparado para no reprocessamento de lançamentos (PCOA310) executar com procedure, sendo que a inclusão e validação do registro será por ponto de entrada. É recomendável que seja excluído os registros da tabela AKS - Saldos Mensais uma vez que esta não será mais utilizada e também que seja reprocessado os saldos, pois o campo "Analitico" (AKT_ANALIT) será populado pela rotina de reprocessamento de saldos. Solicitamos cautela com este procedimento pois dependendo do volume de movimentos este processamento poderá demorar muitas horas, então verificar previamente a viabilidade da aplicação do patch com esta funcionalidade. Esclarecemos que tende a melhorar tempo de resposta de todas integrações, pois a partir da aplicação deste patch teremos menor numero de gravações das tabelas de saldos e semáforo da chave do cubo tende a ser liberado mais rapidamente. Recomendamos para os testes de homologação do pacotes seguir os seguintes procedimentos:
Na rotina de reprocessamento de cubos implementado uma verificação dos movimentos orçamentários x Saldos Diários para indicar se cubo esta integro. Esta verificação ocorre sempre ao sair da rotina de reprocessamento de cubos, independentemente de confirmar ou cancelar o reprocessamento, uma vez que os movimentos devem ser refletidos na tabela de saldo diário. No reprocessamento de lançamento implementado, a condição de executar a inclusão dos movimentos orçamentários via procedure, sendo que a alternativa a macro execução do ponto de lançamento será via ponto de entrada que deve retornar um script em linguagem de procedure nos bancos de dados SQLSERVER, ORACLE, DB2 ou INFORMIX. veja documentação do ponto de entrada PCOA3105 no link TDN: DT_Ponto_entrada_PCOA3105_inclusao_movimentos_orcamentarios_por_procedure No reprocessamento de lançamento implementado também a condição de executar por customização a rotina, para tanto utilizar o exemplo de chamada abaixo: #INCLUDE "PROTHEUS.CH" USER FUNCTION PRCPCOA310() LOCAL APAR1 LOCAL APAR2 APAR1 := {.T., CTOD("01/01/14"), CTOD("31/12/14"), " ", .F., .F. } APAR2 := {} PCOA310( 2, "000082", "01", APAR1, APAR2 ) RETURN
Síntaxe : PCOA310( nOpc, cCodProcesso, cItemProcesso, Array Parametros 1, Array Parametros 2 ) nOpc = 2 – Reprocessar cCodProcesso = "000082" - Processo de Contabilização cItemProcesso = "01" - Contabilização - Itens Array Parametros 1: Posicao 1 (Logico) = .T. - Excluir itens dos movimentos orçamentarios (AKD) referente ao processo indicado Posicao 2 (Data) = CtoD("01/01/14") - Periodo inicial para reprocessamento dos lançamentos e exclusao dos movimentos orçamentarios Posicao 3 (Data) = CtoD("31/01/14") - Periodo finall para reprocessamento dos lançamentos e exclusao dos movimentos orçamentarios Posicao 4 (Caracter) = " " - Filtro na tabela Origem (neste exemplo CT2) Posicao 5 (Logico) = .F. - Visualizar Lançamentos processados (em caso de procedure independente da resposta será considerado .F.) Posicao 6 (Logico) = .F. - Atualiza saldos apos reprocessamento de lançamentos Array Parametros 2: Posicao 1 (Caracter) = " " - Filtro adicional na tabela de movimentos orçamentários (AKD) utilizado para exclusão dos lançamentos |
Chamados relacionados: | TVTMDP |
Reestruturação do controle de saldos dos cubos do módulo SIGAPCO
Características do Requisito
Linha de Produto: | Microsiga Protheus | ||||||||||||||||||||||||||||||||||||||||||||||
Segmento: | Serviços | ||||||||||||||||||||||||||||||||||||||||||||||
Módulo: | SIGAPCO - Planejamento e Controle Orçamentário | ||||||||||||||||||||||||||||||||||||||||||||||
Rotina: |
| ||||||||||||||||||||||||||||||||||||||||||||||
Cadastros Iniciais: | Cadastro de Contas Orçamentarias Cadastro de Classes Orçamentarias Cadastros de Tipos de Saldos Cadastro de Operaçoes Cadastro de Cubos | ||||||||||||||||||||||||||||||||||||||||||||||
Chamados Relacionados | TVTMDP | ||||||||||||||||||||||||||||||||||||||||||||||
País(es): | Todos | ||||||||||||||||||||||||||||||||||||||||||||||
Banco(s) de Dados: | Todos | ||||||||||||||||||||||||||||||||||||||||||||||
Tabelas Utilizadas: | AKT - Saldos Diarios | ||||||||||||||||||||||||||||||||||||||||||||||
Sistema(s) Operacional(is): | Todos |
Descrição
Reestruturação do controle de saldos dos cubos do módulo SIGAPCO
Após aplicação do patch deste chamado o controle de saldos será somente pela tabela de saldos diários (AKT) não mais atualizando a tabela de saldos mensais (AKS) por motivo de performance. Todas as rotinas que trabalham com saldos foram adequadas para trabalhar com unica tabela de saldos diários (AKT), sendo que para usuário final as funcionalidades do sistema continuam exatamente como sempre foram, não afetando os programas padrões do módulo SIGAPCO.
As customizações que utilizavam a tabela AKS-Saldos Mensais deverão ser adequadas para somente ler a tabela AKT-Saldos Diários uma vez que a mensal será descontinuada.
Executar o compatiblizador de base de dados U_UPDPCO para criação do campo "Analitico" (AKT_ANALIT) na tabela de saldos diários que indicara se chave gravada é analítica.
Criado também o parâmetro "MV_PCOPROC" com conteúdo "" (em branco) onde poderá ser indicado o processo que esta preparado para no reprocessamento de lançamentos (PCOA310) executar com procedure, sendo que a inclusão e validação do registro será por ponto de entrada.
É recomendável que seja excluído os registros da tabela AKS - Saldos Mensais uma vez que esta não será mais utilizada e também que seja reprocessado os saldos, pois o campo "Analitico" (AKT_ANALIT) será populado pela rotina de reprocessamento de saldos. Solicitamos cautela com este procedimento pois dependendo do volume de movimentos este processamento poderá demorar muitas horas, então verificar previamente a viabilidade da aplicação do patch com esta funcionalidade.
Esclarecemos que tende a melhorar tempo de resposta de todas integrações, pois a partir da aplicação deste patch teremos menor numero de gravações das tabelas de saldos e semáforo da chave do cubo tende a ser liberado mais rapidamente.
Somente instalar a pacote de procedure p11_13;sps após rodar o compatilizador da base de dados U_UPDPCO, pois estas procedures alimentarão novo campo "Analitico" criado na tabela de movimentos diários.
No reprocessamento de lançamento implementado, a condição de executar a inclusão dos movimentos orçamentários via procedure, sendo que a alternativa a macro execução do ponto de lançamento será via ponto de entrada que deve retornar um script em linguagem de procedure nos bancos de dados SQLSERVER, ORACLE, DB2 ou INFORMIX.
veja documentação do ponto de entrada PCOA3105 no link TDN:
DT_Ponto_entrada_PCOA3105_inclusao_movimentos_orcamentarios_por_procedure
No reprocessamento de lançamento implementado também a condição de executar por customização a rotina, para tanto utilizar o exemplo de chamada abaixo:
#INCLUDE "PROTHEUS.CH"
USER FUNCTION PRCPCOA310()
LOCAL APAR1
LOCAL APAR2
APAR1 := {.T., CTOD("01/01/14"), CTOD("31/12/14"), " ", .F., .F. }
APAR2 := {}
PCOA310( 2, "000082", "01", APAR1, APAR2 )
RETURN
Síntaxe : PCOA310( nOpc, cCodProcesso, cItemProcesso, Array Parametros 1, Array Parametros 2 )
nOpc = 2 – Reprocessar
cCodProcesso = "000082" - Processo de Contabilização
cItemProcesso = "01" - Contabilização - Itens
Array Parametros 1:
Posicao 1 (Logico) = .T. - Excluir itens dos movimentos orçamentarios (AKD) referente ao processo indicado
Posicao 2 (Data) = CtoD("01/01/14") - Periodo inicial para reprocessamento dos lançamentos e exclusao dos movimentos orçamentarios
Posicao 3 (Data) = CtoD("31/01/14") - Periodo finall para reprocessamento dos lançamentos e exclusao dos movimentos orçamentarios
Posicao 4 (Caracter) = " " - Filtro na tabela Origem (neste exemplo CT2)
Posicao 5 (Logico) = .F. - Visualizar Lançamentos processados (em caso de procedure independente da resposta será considerado .F.)
Array Parametros 2:
Posicao 1 (Caracter) = " " - Filtro adicional na tabela de movimentos orçamentários (AKD) utilizado para exclusão dos lançamentos
Importante
(Apenas para Microsiga Protheus, versões anteriores à versão 12)
Antes de executar o compatibilizador U_UPDPCO é imprescindível:
- Realizar o backup da base de dados do produto que será executado o compatibilizador (diretório PROTHEUS_DATA\DATA, se versão 10, ou \PROTHEUS11_DATA\DATA, se versão 11) e dos dicionários de dados SXs (diretório PROTHEUS_DATA_SYSTEM, se versão 10, ou \PROTHEUS11_DATA\SYSTEM, se versão 11).
- Os diretórios acima mencionados correspondem à instalação padrão do Protheus, portanto, devem ser alterados conforme o produto instalado na empresa.
- Essa rotina deve ser executada em modo exclusivo, ou seja, nenhum usuário deve estar utilizando o sistema.
- Se os dicionários de dados possuírem índices personalizados (criados pelo usuário), antes de executar o compatibilizador, certifique-se de que estão identificados pelo nickname. Caso o compatibilizador necessite criar índices, irá adicioná-los a partir da ordem original instalada pelo Protheus, o que poderá sobrescrever índices personalizados, caso não estejam identificados pelo nickname.
- O compatibilizador deve ser executado com a Integridade Referencial desativada*.
Atenção O procedimento a seguir deve ser realizado por um profissional qualificado como Administrador de Banco de Dados (DBA) ou equivalente! A ativação indevida da Integridade Referencial pode alterar drasticamente o relacionamento entre tabelas no banco de dados. Portanto, antes de utilizá-la, observe atentamente os procedimentos a seguir:
Contate o Help Desk Framework EM CASO DE DÚVIDAS! |
---|
- Em Microsiga Protheus TOTVS Smart Client (se versão 10), digite o U_UPDPCO no campo Programa Inicial. Descreva se o compatibilizador deve ter uma data específica ou superior para que a atualização nos dicionários seja efetuada corretamente. Importante: Para a correta atualização do dicionário de dados, certifique-se que a data do compatibilizador seja igual ou superior a 05/08/2016.
- Clique em OK para continuar.
- Após a confirmação é exibida uma tela para a seleção da empresa em que o dicionário de dados será modificado ou é apresentada a janela para seleção do compatibilizador. Selecione o programa xxxx().
- Ao confirmar é exibida uma mensagem de advertência sobre o backup e a necessidade de sua execução em modo exclusivo.
- Clique em Processar para iniciar o processamento. O primeiro passo da execução é a preparação dos arquivos.
É apresentada uma mensagem explicativa na tela. - Em seguida, é exibida a janela Atualização concluída com o histórico (log) de todas as atualizações processadas. Nesse log de atualização são apresentados somente os campos atualizados pelo programa. O compatibilizador cria os campos que ainda não existem no dicionário de dados.
- Clique em Gravar para salvar o histórico (log) apresentado.
- Clique em OK para encerrar o processamento.
- Clique em Processar para iniciar o processamento. O primeiro passo da execução é a preparação dos arquivos.
Descreva se há algum procedimento necessário após a aplicação do compatibilizador.
Atualizações do Compatibilizador
(Apenas para Microsiga Protheus, versões anteriores à versão 12)
1. Criação ou Alteração (mantenha somente a instrução correspondente) de Campos no arquivo SX3 – Campos:
- Tabela AKT - Mov. Diários Cubo Gerencial
Campo | AKT_ANALIT |
Tipo | C |
Tamanho | 1 |
Decimal | 0 |
Título | Chv.Analit. |
Descrição | Chave Analitica |
Nível | 1 |
Usado | Sim |
Obrigatório | Não |
Browse | Não |
Help | Indica se chave é analítica. |
Importante:
O tamanho dos campos que possuem grupo pode variar conforme ambiente em uso.
7. Criação ou Alteração de Parâmetros no arquivo SX6 – Parâmetros:
Nome da Variável | MV_PCOPROC |
Tipo | C |
Descrição | Processos de lancamentos que pode ser executadas por procedure (processo/item). |
Valor Padrão |
|
Procedimento para Configuração
(Estes procedimentos devem ser feitos quando for necessário configurar parâmetros e/ou rotinas no menu).
CONFIGURAÇÃO DE PARÂMETROS
- No Configurador (SIGACFG), acesse Ambientes/Cadastros/Parâmetros (CFGX017). Crie/configure o parâmetro a seguir:
Itens/Pastas | Descrição |
Nome: | MV_PCOTHRD |
Tipo: | N |
Cont. Por.: | 2 |
Descrição: | Numero de Threads utilizadas no reprocessamento do saldos dos cubos. |
CONFIGURAÇÃO DE MENUS
2. No Configurador (SIGACFG), acesse Ambientes/Cadastro/Menu (CFGX013). Informe a nova opção de menu do informe o nome do módulo, conforme instruções a seguir:
Menu | Miscelanea |
Submenu | Reprocessamento |
Nome da Rotina | Cubos Multi-thread Por Periodos |
Programa | PCOA301 |
Módulo | SIGAPCO |
Tipo | PCOA301() |
Procedimento para Utilização
1. No módulo de Planejamento e Controle Orçamentário (SIGAPCO), acesse Miscelânea / Reprocessamento / Cubos Multi-thread Por Periodos (PCOA301).
2. Preencha os parâmetros na pasta Perguntas e Confirme
3. Na pasta Informações pressione o botão Executar.
Descrição
O ponto entrada PCOA3105 permite a inclusão de movimentos orçamentários utilizando linguagem de procedure dos bancos de dados SQLSERVER, ORACLE, DB2 e INFORMIX e funcionará como a transação para o processo de de inclusão do lançamento como alternativa a macro execução dos pontos de lançamentos. Para utilizar esta funcionalidade deverá o parâmetro MV_PCOPROC estar criado com conteúdo código do processo e item.
Esclarecemos que se utilizado esta funcionalidade todas as validações para o lançamento deverá ser efetuado via customização por esse ponto de entrada.
Os parâmetros passados ao ponto de entrada, são os seguintes:
- ParamIxb[1] - Código do processo de lançamento
- ParamIxb[2] - Item do processo de lançamento
- ParamIxb[3] - Parâmetros informados na entrada da rotina
- ParamIxb[4] - Tabela de origem
- ParamIxb[5] - Nome da procedure de item do lote (AKD_ID)
Ponto de Entrada
Descrição: | O ponto_entrada_PCOA3105 permite a inclusão de movimentos orçamentários utilizando linguagem de procedure dos bancos de dados SQLSERVER, ORACLE, DB2 e INFORMIX. O exemplo abaixo se refere ao processo 000082 - Contabilização Itens e deve ser retrabalhado para atendimento das necessidades do cliente. | ||||||||
Localização: | Miscelanea / Reprocessamento / Lançamentos | ||||||||
Eventos: | Reprocessamento de lançamentos | ||||||||
Programa Fonte: | PCOA310 | ||||||||
Função: | A310Proced | ||||||||
Retorno: |
|
Exemplo:
#include "Protheus.ch"
User Function PCOA3105()
Local cProcesso := ParamIxb[1] //Codigo do processo de lancto
Local cItem := ParamIxb[2] //item do processo de lancto
Local aRet := ParamIxb[3] //parametros informados
Local cAliasEntid := ParamIxb[4] //entidade de origem
Local __cProcId := ParamIxb[5] //nome da procedure de item do lote (AKD_ID)
Local cCposAKD
Local cVarsAKD
Local cTipoDB := Upper(Alltrim(TCGetDB()))
Local lOracle := "ORACLE" $ cTipoDB
Local lPostgres := "POSTGRES" $ cTipoDB
Local lDB2 := "DB2" $ cTipoDB
Local lInformix := "INFORMIX" $ cTipoDB
Local cOpConcat := If( lOracle .Or. lPostgres .Or. lDB2 .Or. lInformix, " || ", " + " )
//----------------------------------------------------------------------------------------------------------------//
// VARIAVEIS DAS ENTIDADES DE ORIGEM SAO PRECEDIDAS DE @+TIPO
// EXEMPLO CAMPO CT2_DATA --> VARIAVEL @cCT2_DATA
//
// VARIAVEIS CARACTERS QUE PODEM SER UTILIZADAS POIS SAO PARAMETRO DA PROCEDURE
// @IN_ENTIDA - ENTIDADE ORIGEM
// @IN_PROCES - CODIGO DO PROCESSO DE LANCAMENTO
// @IN_ITEMPR - ITEM DO PROCESSO DE LANCAMENTO
// @IN_NUMLOTE - NUMERO DO LOTE
// @IN_DATAINI - DATA INICIAL
// @IN_DATAFIM - DATA FINAL
//
// variavel @cId recebe proximo item do lote
// A CADA INSERT DEVE SE COLOCAR A CHAMADA DA PROCEDURE PARA PROXIMO ITEM DO LOTE AKD_ID
// cPE3105 +=" EXEC "+__cProcID+"_"+cEmpAnt+" @IN_NUMLOTE, @cId OutPut "+CRLF
//
// SE POSSUIR 2 INSERTs NO SEGUNDO DEVE INCREMENTAR VARIAVEL @iRecno
// cPE3105 += " select @iRecno = IsNull(Max( R_E_C_N_O_ ), 0 ) from "+RetSqlName("AKD") + CRLF
// cPE3105 += " select @iRecno = @iRecno + 1 "+ CRLF
//
// variavel inteira @nLinCount - controla numero de linhas por transacao MV_PCOLIMI
// SE POSSUIR 2 INSERTs NO SEGUNDO DEVE INCREMENTAR VARIAVEL @nLinCount quando for partida dobrada
// cQuery += " Select @nLinCount = @nLinCount + 1 "+ CRLF
//
//SEMPRE QUE UTILIZAR INSERT DEVE COLOCAR A DIRETIVA TRATARECNO antes do begin tran e colocar FIMTRATARECNO Apos commit tran
//cPE3105 += " ##TRATARECNO @iRecno\ "+ CRLF
//cPE3105 += " begin tran"+CRLF
//
//INSERT.........
//cPE3105 += " ##FIMTRATARECNO "+ CRLF
//----------------------------------------------------------------------------------------------------------------//
cPE3105 :=""
cPE3105 +=" select @cId = ' '"+CRLF
cPE3105 +=" if @IN_PROCES = '000082' begin "+CRLF
cCposAKD := "AKD_FILIAL,AKD_STATUS,AKD_LOTE,AKD_ID,AKD_DATA,AKD_CO,AKD_CLASSE,AKD_OPER,AKD_TIPO,AKD_TPSALD,AKD_HIST,AKD_IDREF,AKD_PROCES,AKD_CHAVE,AKD_ITEM,AKD_SEQ,AKD_USER,AKD_COSUP,AKD_VALOR1,AKD_VALOR2,AKD_VALOR3,AKD_VALOR4,AKD_VALOR5,AKD_CODPLA,AKD_VERSAO,AKD_CC,AKD_ITCTB,AKD_CLVLR,AKD_LCTBLQ,AKD_UNIORC,AKD_FILORI,D_E_L_E_T_,R_E_C_N_O_,R_E_C_D_E_L_"
//variaveis debito
cVarsAKD := "@cFil_AKD,'1' ,@IN_NUMLOTE,@cId,@cCT2_DATA,"+IF(cTipoDB$"MSSQL7","RTRIM","TRIM")+"(@cCT2_DEBITO),'000001',' ','2','RE','CONTABILIDADE DEBITO PARA AKD',' ' ,@IN_PROCES,@cCT2_FILIAL"+cOpConcat+"@cCT2_DATA"+cOpConcat+"@cCT2_LOTE"+cOpConcat+"@cCT2_SBLOTE"+cOpConcat+"@cCT2_DOC"+cOpConcat+"@cCT2_LINHA"+cOpConcat+"@cCT2_TPSALD"+cOpConcat+"@cCT2_EMPORI"+cOpConcat+"@cCT2_FILORI"+cOpConcat+"@cCT2_MOEDLC,@IN_ITEMPR,'01','"+__cUserId+"',' ',@nCT2_VALOR,0,0,0,0,' ',' ',@cCT2_CCD,@cCT2_ITEMD,@cCT2_CLVLDB,' ',' ','"+cFilAnt+"',' ',@iRecno,0"
cPE3105 +=" if @cCT2_DC = '3' OR @cCT2_DC = '1' begin "+CRLF
cPE3105 += " select @iRecno = IsNull(Max( R_E_C_N_O_ ), 0 ) from "+RetSqlName("AKD") + CRLF
cPE3105 += " select @iRecno = @iRecno + 1 "+ CRLF
cPE3105 +=" EXEC "+__cProcID+"_"+cEmpAnt+" @IN_NUMLOTE, @cId OutPut "+CRLF
cPE3105 += " ##TRATARECNO @iRecno\ "+ CRLF
cPE3105 += " begin tran"+CRLF
cPE3105 += " INSERT INTO "+RetSqlName("AKD") +" ("+cCposAKD+")"+ CRLF
cPE3105 += " VALUES ("+cVarsAKD+")" + CRLF
cPE3105 += " commit tran"+CRLF
cPE3105 += " ##FIMTRATARECNO "+ CRLF
cPE3105 += " end "+ CRLF //finaliza if @cCT2_DC
cPE3105 +=" if @cCT2_DC = '3' OR @cCT2_DC = '2' begin "+CRLF
cPE3105 += " if @cCT2_DC = '3' begin Select @nLinCount = @nLinCount + 1 end "+ CRLF
cPE3105 += " select @iRecno = IsNull(Max( R_E_C_N_O_ ), 0 ) from "+RetSqlName("AKD") + CRLF
cPE3105 += " select @iRecno = @iRecno + 1 "+ CRLF
cPE3105 +=" EXEC "+__cProcID+"_"+cEmpAnt+" @IN_NUMLOTE, @cId OutPut "+CRLF
//variaveis credito
cVarsAKD := "@cFil_AKD,'1' ,@IN_NUMLOTE,@cId,@cCT2_DATA,"+IF(cTipoDB$"MSSQL7","RTRIM","TRIM")+"(@cCT2_CREDIT),'000001',' ','1','RE','CONTABILIDADE CREDITO PARA AKD',' ' ,@IN_PROCES,@cCT2_FILIAL"+cOpConcat+"@cCT2_DATA"+cOpConcat+"@cCT2_LOTE"+cOpConcat+"@cCT2_SBLOTE"+cOpConcat+"@cCT2_DOC"+cOpConcat+"@cCT2_LINHA"+cOpConcat+"@cCT2_TPSALD"+cOpConcat+"@cCT2_EMPORI"+cOpConcat+"@cCT2_FILORI"+cOpConcat+"@cCT2_MOEDLC,@IN_ITEMPR,'01','"+__cUserId+"',' ',@nCT2_VALOR,0,0,0,0,' ',' ',@cCT2_CCC,@cCT2_ITEMC,@cCT2_CLVLCR,' ',' ','"+cFilAnt+"',' ',@iRecno,0"
cPE3105 += " ##TRATARECNO @iRecno\ "+ CRLF
cPE3105 += " begin tran"+CRLF
cPE3105 += " INSERT INTO "+RetSqlName("AKD") +" ("+cCposAKD+")"+ CRLF
cPE3105 += " VALUES ("+cVarsAKD+")" + CRLF
cPE3105 += " commit tran"+CRLF
cPE3105 += " ##FIMTRATARECNO "+ CRLF
cPE3105 += " end "+ CRLF //finaliza if @cCT2_DC
cPE3105 += " end"+ CRLF //finaliza if @IN_PROCES = '000082'
Return(cPe3105)