Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
joao_sp_campina
Creator II
Creator II

Criar chave dinâmica a partir de tabelas do Protheus

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.

1 Solution

Accepted Solutions
pablolabbe
Luminary Alumni
Luminary Alumni

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,

Pablo Labbe

View solution in original post

5 Replies
Not applicable

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

aderlanrm
Partner - Specialist
Partner - Specialist

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.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
pablolabbe
Luminary Alumni
Luminary Alumni

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,

Pablo Labbe

joao_sp_campina
Creator II
Creator II
Author

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.

pablolabbe
Luminary Alumni
Luminary Alumni

Olá João,

  Obrigado pelo retorno e que bom a minha dica te ajudou na sua solução.

Um abraço,

Pablo