quarta-feira, 10 de dezembro de 2014

Criando relatórios SALV

As classes SALV são uma verdadeira mão na roda quando se trata da criação de reports em ABAP, esqueça as funções REUSE_XXX_DISPLAY e as classes cl_gui_alv_xxx, pois o SALV é muito mais fácil e prático.
O SALV é wrapper dessas funções e classes que permite utilizar a mesma sintaxe para todos eles, a melhor parte é que não há a necessidade de manipular fieldcats, nade de perform fieldcat ou LVC_FIELDCATALOG_MERGE, basta apenas passar a sua tabela interna e ele cuidará do fieldcat a partir dos campos dela. Há diversos exemplos muito bons, procure pelos programas SALV_DEMO*.
Se você der uma olhada no programa SALV_DEMO_TABLE_REAL_SIMPLE vai ver o quão simples é criar um ALV com o SALV. São necessárias apenas três instruções para criar um ALV Fullscreen (o mesmo da funçaõ REUSE_ALV_GRID_DISPLAY ):

1 - Declarar o objeto:  
datagr_table  type ref to cl_salv_table.

2 -  Instanciar o objeto a partir da factory do SALV
  call method cl_salv_table=>factory
    IMPORTING
      R_SALV_TABLE gr_table
    changing
      t_table      gt_outtab.


3 - Exibir o ALV
gr_table->display). 



Agora é possivel otimizar a largura das colunas  de forma adequada
 

É possivel configurar uma barra de ferramentas básica sem precisar manipular a tabela interna da toolbar.
 

É possivel declarar um campo na tabela interna para ser utilizado apenas internamente. 



 

Procurar trechos de código em programas ABAP

Embora não seja uma boa prática colocar valores fixos no meio do código ao inves de parametrizá-los, muitos programadores fazem isso e pode ser que você acabe com a ardua tarefa de substitui-los em vários programas, mas como encontrar so programas a serem atualizados?
Felizmente a SAP disponibiliza o programa RS_ABAP_SOURCE_SCAN para fazer isso, com esse report você pode por exemplo localizar a sentença LGORT = 'ABCD' em todos os programas Z.
O report permite fazer busca tanto usando sentenças quanto expressões regulares e se você ainda não conhece essas expressões corra aprender porque elas agilizam muito o dia a dia.
Vamos a alguns exemplos:

Procurar todas as comparações de depósito

 Resultado:





Procurar todos os selects nos programas MB51,MB52, etc.
Resultado: