Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia Pessoal,
Estou com uma dificuldade em um relacionamento entre tabelas do Protheus. Preciso a partir de uma tabela de amarração determinar qual tipo de lançamento será realizado na tabela de movimento bancário. São 3 tabelas envolvidas. Vou explicar como tudo deve funcionar:
Tabelas do Protheus:
CTL -> Tabela de amarração das chaves por tipo de lançamento
CT2 -> Tabela de movimento contábil
SE5 -> tabela de movimento bancário
A situação é seguinte: Na tabela CTL eu tenho o campo CTL_KEY, este determina qual chave deve ser usada na amarração entre a CT2 e SE5 por tipo de lançamento padrão (CTL_LP).
Exemplo:
CTL_KEY -> CampoSE51+CampoSE52+CampoSE53_CampoSE54 -> Chave 1
CTL_KEY -> CampoSE51+CampoSE52+CampoSE53_CampoSE54+CampoSE55 -> Chave 2
A CTL_KEY guarda os campos da chave.
CTL_LP -> 563 = este entra na Chave 1
CTL_LP -> 560 = este entra na Chave 2
CT2_LP -> 563 = este entra na Chave 1
CT2_LP -> 560 = este entra na Chave 2
CT2_KEY - 0001RG12359ET= Chave 1
0001RG12359ET890= Chave 2
Na tabela de CT2 eu tenho o campo CT2_KEY, este campo é o resultado da concatenação acima. Porem eu preciso gerar esta busca na tabela SE5 de acordo com a amarração dos campos pela chave CTL_KEY.
Para isso funcionar eu preciso a partir da tabela CTL identificar qual chave da CT2 está sendo usada na amarração com SE5.
Preciso amarrar estas informações pela chave do campo CTL_KEY
Alguém já passou por algo parecido no protheus. Poderiam me ajudar?
Att,
João Carlos Ferreira.
Olá João Carlos,
Modelo de dados complicado esse em que a chave de relacionamento muda conforme o registro. Não conheço o modelo de dados do Protheus, mas vou tentar ajudar mesmo assim dando pensando num raciocínio lógico.
Eu tentaria resolver este problema por blocos:
No bloco 1, identifico todos os registros que possa associar com a chave de 5 campos entre se5 e ct2 e monto uma tabela temporária temp1.
No bloco 2, identifico todos os registros que possa associar com a chave de 4 campos entre se5 e ct2 e monto uma tabela temporária temp2.
No bloco 3 concateno temp1 e temp2 criando uma nova tabela e descarto as tabelas anteriores.
Um Abraço,
Olá amigo tudo bem?
A empresa que eu trabalho também usa protheus eu entendo o seu problema em criar chaves eu mesmo passei por um problema parecido aqui não faz muito tempo só que com as Notas Fiscais. cara o que eu fiz foi eu mesmo montar as chaves no script de carga do Qlikview, juntei os campos que eu precisava e montei uma chave e fiz o mesmo na outra tabela e funcionou tá funcionando belezinha. vou colocar aqui um exemplo de chave que eu montei na unha.
LOAD
D2_FILIAL&D2_DOC&D2_SERIE&D2_FORMUL AS %ChaveNFS,
D2_COD,
D2_QUANT,
D2_TOTAL,
D2_DESC,
D2_PRCVEN;
Se você precisar de ajuda é só chamar
Abraços e Boa Sorte
Olá Marcos e João,
Usem o comando AutoNumber, é uma boa prática e melhora o desempenho.
Ex:
LOAD
AutoNumberHash128(D2_FILIAL,D2_DOC,D2_SERIE,D2_FORMUL) AS %ChaveNFS,
...
Abraço.
Olá João Carlos,
Modelo de dados complicado esse em que a chave de relacionamento muda conforme o registro. Não conheço o modelo de dados do Protheus, mas vou tentar ajudar mesmo assim dando pensando num raciocínio lógico.
Eu tentaria resolver este problema por blocos:
No bloco 1, identifico todos os registros que possa associar com a chave de 5 campos entre se5 e ct2 e monto uma tabela temporária temp1.
No bloco 2, identifico todos os registros que possa associar com a chave de 4 campos entre se5 e ct2 e monto uma tabela temporária temp2.
No bloco 3 concateno temp1 e temp2 criando uma nova tabela e descarto as tabelas anteriores.
Um Abraço,
Boa tarde Pablo,
Conseguir resolver usando uma ideia parecida como essa.
Criei as chaves em tabelas separadas na CT2 e associei as chaves com a CTL.
Para cada tabela da CT2 eu criei uma chave na SE5, associando as tabelas. Na SE5 eu criei tabelas independentes por cada chave da CT2.
Com esta lógica, eu consegui identificar os lançamentos na CT2 e na CTL e amarrar cada lançamento por uma chave especifica. Os mesmos lançamentos são identificados na tabela de movimento bancário SE5.
A chave entre as tabelas CT2 e SE5 ficou dinâmica e muda conforme o lançamento na CT2.
Muito obrigado a todos vocês.
Att,
João Carlos Ferreira.
Olá João,
Obrigado pelo retorno e que bom a minha dica te ajudou na sua solução.
Um abraço,
Pablo