Olá comunidade,
Eu sei que a pergunta 'Como ler BSEG de forma eficiente' foi feita várias vezes aqui. Embora eu tenha encontrado algumas sugestões, ainda não consegui otimizar significativamente meu programa ABAP. É por isso que estou aqui em busca de novos conselhos. Aqui estão algumas boas respostas que encontrei:
"Como BSEG é uma tabela de cluster, a tabela BSEG consiste em dados das tabelas BSIS, BSAS, BSID, BSAD, BSIK e BSAK.
BSIS: Partidas em aberto de G/L
BSAS: Partidas fechadas de G/L
BSID: Partidas em aberto de clientes (Contas a receber)
BSAD: Partidas fechadas de clientes (Contas a receber)
BSIK: Partidas em aberto de fornecedores (Contas a pagar)
BSAK: Partidas fechadas de fornecedores (Contas a pagar)
É melhor recuperar dados das tabelas anteriores com base nos dados (fornecedor, cliente, conta de G/L). Caso contrário, podem surgir problemas de desempenho se BSEG for usado em produção e podem ocorrer erros em tempo de execução. Por favor, utilize as tabelas anteriores para evitar erros em tempo de execução na Produção." (Não, na verdade precisamos recuperar dados da tabela BSEG)
Outra sugestão:
"Em vez de selecionar de BSEG por vbel2 = 'xxx' e posn2 = 'yyy', eu deveria: a. obter uma lista de todas as chaves de BSEG que atendam à minha condição de pesquisa na tabela BSID: selecionar burks, belnr, gjahr, buzel de BSID onde vbel2 = 'xxx' e posn2 = 'yyy' b. selecionar todos os dados que preciso de BSEG usando suas chaves: selecionar * de BSEG onde burks =
e belnr =
e gjahr = .. e buzel =
Dado que BSID é uma tabela de banco de dados normal, posso definir um índice nas colunas vbel2, posn2, e como seleciono de BSEG por suas chaves (onde há um bom índice de banco de dados único), este trecho de código será executado bastante rápido." (usamos isso)
Alguns sugerem lê-lo como uma tabela ordenada (até mesmo uma tabela hash!)... Não consigo adicionar um índice lá porque é uma tabela de cluster -Eu sei que há uma nota que descreve como transformar essa tabela de cluster em uma transparente (para que você possa adicionar índices) mas isso não é recomendado e pode gerar muitos dumps de memória- e assim por diante...
Apesar de tudo, nosso programa continua demorando muito tempo. Fico pensando se têm outras soluções que possam otimizar o processo de consulta.
Muito obrigado!