Avalados por :

Consultas sobre tabelas ordenadas: chaves únicas e pesquisa binária no SAP ABAP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 15 Vistas
0
Cargando...

Olá Gurus,

Tenho algumas perguntas sobre tabelas ordenadas

tenho uma tabela interna ordenada,

itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.

Loop em itab_sortd em wa_srtd onde matnr = 'xxxx'.

.....

Endloop.

Se eu usar ambas as chaves na declaração where posso conseguir uma pesquisa binária.

1. mas e se eu não estiver usando toda a chave? Ainda fará uma pesquisa binária ao usar a parte mais à esquerda da chave?

Li que se usarmos a parte mais à esquerda da chave, podemos realizar uma pesquisa binária em tabelas ordenadas.

2. Também e quanto ao loop com todos os campos chave + campos adicionais?

por exemplo

itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.

Loop em itab_sortd em wa_srtd onde MATNR = 'xxxx' WERKS= 'yyyy' PSTNK = 'zzzz'.

.....

Endloop

3.

itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.

LER TABELA itab_sortd COM CHAVE matnr = 'XXXX'.

A declaração acima resultará em uma pesquisa binária?

Obrigado antecipadamente,

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

uba_heraeus Sabes, não é tão importante responder a respostas antigas de alguém está errado na internet ?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá a todos,

Lamento, mas mesmo que isso tenha sido publicado há muito tempo, devo discordar do ponto 3):

Quando itab_sortd é declarado como SORTED TABLE, qualquer acesso (LOOP, READ,...) será uma busca binária assim que uma parte inicial de uma chave for utilizada.

LER TABELA itab_sortd COM CHAVE DE TABELA matnr = 'XXXX'

LER TABELA itab_sortd COM CHAVE matnr = 'XXXX'

ambos serão executados como busca binária, porque matnr é o primeiro campo da chave primária. (o mesmo se aplica para as chaves secundárias...)

É APENAS a TABELA PADRÃO que precisa da adição explícita de BINARY SEARCH!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Rojar,

Por favor, encontre minhas respostas para sua pergunta.

1) SIM. Dado que a tabela já está ordenada com MATNR e WERKS, se você usar apenas MATNR, atuará como uma busca binária apenas.

2) Por favor, encontre a seguinte declaração de sintaxe para sua necessidade (Loop com todos os campos chave + campos adicionais)

itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.

Loop em itab_sortd em wa_srtd onde MATNR = 'xxxx' e WERKS= 'yyyy' e PSTNK = 'zzzz'.

.....

Endloop

3) Não.

Para as declarações mencionadas por você acima, apenas a Busca Linear ocorrerá, pois você não mencionou ao compilador para usar a técnica de Busca Binária para a leitura. Você precisa mencionar explicitamente 'BINARY SEARCH' na declaração de leitura, mesmo que já esteja ordenado. A busca binária diminuirá o tempo de busca, esse é o seu propósito.

itab_sortd tipo tabela ordenada com chave não única MATNR WERKS.

LER TABELA itab_sortd COM CHAVE matnr = 'XXXX' BINARY SEARCH .

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Rojer,

1) Você está correto.

2) A busca binária só funcionará para as chaves mencionadas na tabela de chaves.

3) Sim.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?