Ceerrtttooo Zombizada!!!
Desde a antiguidade, antes do mundo começar a contar o tempo e os dias… Antes da galinha ou do ovo… Já debugava pela terra, o Terrível Homem Zumbie ABAP das Cavernas.
Em quase todas as outras linguagens de programação, existem programas para auxiliar os programadores em consultas no banco de dados.
Um grande amigo e também ABAP, me disse uma vez:
- Bem que poderia ter uma transação para fazer testes das clausulas where dos comandos SQL.
Pensando nisso e com tempo extra no projeto, fiz uma pequena ferramenta Module Pool com base no post Desvendando o Select Dinâmico
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | REPORT zombie_teste_where. ********************************************************************** * Object (O_XX) * ********************************************************************** DATA: o_alv TYPE REF TO cl_gui_alv_grid, o_container TYPE REF TO cl_gui_custom_container. ********************************************************************** * Tabela Interna (TL_XX) * ********************************************************************** DATA: tl_tabela TYPE REF TO data. ********************************************************************** * Variavel (VL_XX) * ********************************************************************** DATA: vl_tabela TYPE string, vl_where TYPE string, vl_rows TYPE string VALUE '10', vl_structure TYPE dd02l-tabname. ********************************************************************** * Field-Symbols <FS_XX> * ********************************************************************** FIELD-SYMBOLS: <fs_tabela> TYPE STANDARD TABLE. *&---------------------------------------------------------------------* *& Module STATUS_9000 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_9000 OUTPUT. * SET PF-STATUS 'xxxxxxxx'. * SET TITLEBAR 'xxx'. ENDMODULE. " STATUS_9000 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9000 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_9000 INPUT. "Foi digitado um nome de tabela? CHECK vl_tabela IS NOT INITIAL. TRY. "Criação da tabela dinâmica CREATE DATA tl_tabela TYPE TABLE OF (vl_tabela). CATCH cx_root. EXIT. ENDTRY. ASSIGN tl_tabela->* TO <fs_tabela>. "Faz a seleção no banco de dados SELECT * UP TO vl_rows ROWS FROM (vl_tabela) INTO TABLE <fs_tabela> WHERE (vl_where). "Caso o ALV ja tenha sido instanciado, limpa seus atributos IF o_alv IS BOUND. o_alv->free( ). ENDIF. IF o_container IS NOT BOUND. "Faz a criação do objecto do container apenas uma vez CREATE OBJECT o_container EXPORTING container_name = 'ALV'. ENDIF. "Criação do Objecto do ALV CREATE OBJECT o_alv EXPORTING i_parent = o_container. vl_structure = vl_tabela. "Exibe o AVL CALL METHOD o_alv->set_table_for_first_display EXPORTING i_structure_name = vl_structure CHANGING it_outtab = <fs_tabela>. ENDMODULE. " USER_COMMAND_9000 INPUT |
Segue a tela 9000 do Module Pool:
Esta versão é 1.0, minha ideia é ter a possibilidade de fazer Inner Join, Subquery e etc. 8O
Programa de teste de calusula where
Este programinha vale também como estudo para ajuda em ALV Orientado a Objetos, Criação de Objeto Data e SQL Dinâmico.
Espero que ajude mais alguém alem de mim, pois ja utilizei em outro projeto. 8)
Abraços a todos que ja usaram o PHPMyAdmin e pensaram, porque não em ABAP?!











Você quer testar queries SQL. Não tem ferramenta nenhuma. #abapdepressao
Ótimo post Mauro, a solução é simples e muito boa. Eu já tinha topado com esse problema, e fuçando na net achei o YES4SQL:
http://www.sapdev.co.uk/programs/custom/zyes4sql.htm
Mais complicado de implementar, mas é uma alternativa.
Vlw pela dica Leo, vou dar uma olhada nesse link que vc passou.
Abs,
Mauro Laranjeira
Talvez não tenha entendido bem a proposta, mas a utilização da SE16N, por exemplo, não substitui esse programa que você fez?
Tudo bem Douglas?
Esse programa ainda esta em sua primeira versão.
Mas a ideia dele não é apenas exibir os dados das tabelas, futuramente quero poder testar inner join, sub query e etc.
Quero testar os comandos SQL sem precisar ficar rodando os programas, quando colocar comando SQL no código ter certeza que estará correto.
Abs,
Mauro Laranjeira