sexta-feira, 27 de janeiro de 2012

Consulta utilizando SQL dinâmico

Nesse post vou mostar como fazer para criar um tabela interna, selecionar dados e escrevê-los na tela dinamicamente a partir de uma string com o nome da tabela, outra com os campos a serem selecionados e outra com as condições de seleção. O programa exemplo abaixo foi criado a partir desse post.

A primeira coisa a fazer é montar um fieldcat com a estrutura da tabela dinámica, nesse exemplo eu utilizei a função LVC_FIELDCATALOG_MERGE para obter o fieldcat a partir do nome da tabela, em seguida a tabela interna é criada a partir desse fieldcat.


O próximo passo é selecionar os dados preenchendo a tabela interna. Primeiro as linhas com os campos a serem selecionados são montadas e armazenada na tabela lt_fields, em seguida as condições são montadas e armazenada na tabela lt_where em seguida é feita a seleção com todas as informações dinâmicas, inclusive o nome da tabela.


O último passo é escrever as informações na tela. A tabela é dinâmica, então a workarea também é dinâmica, assim como seus campos, então o loop é feito usando assigning e para os valores do campos é utilizada a intrução ASSIGN COMPONENT. Nesse outro post você pode ver um exemplo interessante em que é utilizado DO e SY-INDEX para obter e escrever os campos da workarea.


Exemplo Completo:

Nenhum comentário:

Postar um comentário