" Ha, essa vai ser legal heimmm, me perguntaram por email como fazer
" uma atualização automática de um ALV de 5 a 5 mim que mostrava dados
" de uma tabela transparente, na hora eu falei.... pronto to ferrado pois
" eu não sei e gostaria muito de saber, até que mexendo na sdn e na net
" afora achei uma classe manerissima que é um timer, abaixo tem um código
" usando essa classe.
" Vocês se lembram do programa que era um alv que atualizava uma tabela
" transaparente que eu postei mês passado? Então use o programa do link
" abaixo pra atualizar/modificar a tabela transparente ...
" http://abapjuniores.blogspot.com.br/2012/04/alv-editavel-atualizacao-tab.html
" e use este programa pra ver a atualização automaticamente. Valeuuuu.
REPORT z_cl_gui_timer.
CLASS lcl_timer DEFINITION DEFERRED .
" tabela Interna
DATA : it_sflight TYPE TABLE OF sflight .
" Objetos
DATA : o_grid TYPE REF TO cl_gui_alv_grid , " ALV
o_actio TYPE REF TO lcl_timer , " Criação do Evento
o_timer TYPE REF TO cl_gui_timer . " Timer
*----------------------------------------------------------------------*
* CLASS lcl_receiver DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_timer DEFINITION.
PUBLIC SECTION.
METHODS:
handle_finished FOR EVENT finished OF cl_gui_timer.
ENDCLASS. "lcl_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_timer IMPLEMENTATION.
METHOD handle_finished.
* Perform que cria/atualiza o tabela
PERFORM refresh_data .
* Mensagem soh pra ver que esta funcionando.
MESSAGE s351(bt) WITH 'Relatório atualizado às ' sy-uzeit.
* Inicia timer.
CALL METHOD o_timer->run.
ENDMETHOD. "handle_finished
ENDCLASS. "lcl_receiver IMPLEMENTATION
*--------------------------------------------------------------------*
* Start of Selection
*--------------------------------------------------------------------*
START-OF-SELECTION .
* Select soh pra mostrar algo na tela
PERFORM select_data .
*--------------------------------------------------------------------*
* End of Selection
*--------------------------------------------------------------------*
END-OF-SELECTION .
* Criação do timer e do objeto do evento
CREATE OBJECT o_timer.
CREATE OBJECT o_actio.
* Junta o evento com o metodo
SET HANDLER o_actio->handle_finished FOR o_timer.
* Intervalo do Timer em segundos
o_timer->interval = 10 .
* Inicia Timer
CALL METHOD o_timer->run.
* Cria ALV
PERFORM display_data .
*--------------------------------------------------------------------*
*& Form Select_Date
*--------------------------------------------------------------------*
FORM select_data .
" Só peguei as 20 primeiras pois eh um teste né...
SELECT *
FROM sflight
INTO TABLE it_sflight
UP TO 20 ROWS
.
ENDFORM. "SELECT_DATA
*&---------------------------------------------------------------------*
*& Form refresh_data
*&---------------------------------------------------------------------*
FORM refresh_data .
IF o_grid IS INITIAL .
* Cria ALV
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = o_grid.
ENDIF.
" Pelo amor de Deus, depois de debuggarem e fizerem tudo que vocês queiram,
" tire esse break daqui pois senão o programa deixa de ser automatico.
BREAK-POINT.
IF o_grid IS NOT INITIAL.
* Seleciona os dados
PERFORM select_data.
* Atualiza ALV
CALL METHOD o_grid->refresh_table_display.
ENDIF.
ENDFORM. "refresh_data
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
FORM display_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_structure_name = 'SFLIGHT'
TABLES
t_outtab = it_sflight
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM . "display_data
Mto bom!
ResponderExcluirVou tirar um tempinho do dia pra dar uma estudada no programa.
boa Rapaizzz
ResponderExcluirmuito bom cara !!!!
ResponderExcluirOpaaaaaa, Valeo !!!!!
ResponderExcluir