Olá, mais um artigo aqui no Blog!
Hoje vamos falar sobre FOR ALL ENTRIES e outras táticas novas para dar mais performance na conversa com o banco de dados. Vamos lá!
Quando falamos de poucos registros, o FOR ALL ENTRIES é interessante, porém quando falamos de muitos registros, ele passa a não corresponder tão bem ao desempenho.
Claro, algumas pessoas já sabiam disso faz tempo! (rs). Pensando nisso, a SAP, na nova versão do ABAP fez uma feature interessante. Você poderá usar tabelas internas do tipo sorted para usar na chave do seu JOIN.
Veja:
Em um primeiro momento, use uma tabela interna como um “data source”, quase como um ponteiro utilizando buffer tb!
SELECT item~rbukrs, item~gjahr, item~belnr FROM acdoca AS item INNER JOIN @lt_bkpf AS head
ON item~rldnr = ‘0L’
AND item~rbukrs = head~bukrs
AND item~gjahr = head~gjahr
AND item~belnr = head~gjahr
INTO TABLE @lt_acdoca BYPASSING BUFFER.
Isso torna a consulta bem mais rápida do que o FOR ALL ENTIRES;
Outra dica é usar uma tabela interna, só que do tipo SORTED TABLE:
TYPES tt_bkpf_sort TYPE SORTED TABLE OF ts_bkpf WITH UNIQUE KEY bukrs gjahr belnr.
DATA lt_bkpf_sort TYPE tt_bkpf_sort.
SORT lt_bkpf BY bukrs gjahr belnr.
lt_bkpf_sort = CORRESPONDING #( lt_bkpf ).
SELECT item~rbukrs, item~gjahr, item~belnr
FROM acdoca AS item INNER JOIN @lt_bkpf_sort AS head
ON item~rldnr = ‘0L’
AND item~rbukrs = head~bukrs
AND item~gjahr = head~gjahr
AND item~belnr = head~gjahr
INTO TABLE @data(lt_acdoca) BYPASSING BUFFER.
- Veja que na minha 1, temos o tipo de tabela interna classificada com uma chave única, ordenada por Empresa, Exercício e Número de Documento;
- Depois, na linha 4, temos a estrutura que foi ordenada para realizar a busca pela chave no banco de dados, é como se fosse um FOR ALL ENTRIES mas não é! rs
Bom povo, vou vendo mais artigos e novidades e vou postando aqui!