La barra de Progreso es muy util cuando se quiere informar al usuario que un proceso esta tardando , pero que pronto llegara a su fin... (para que no pierda la paciencia...jejej).
internamente sirve tambien para evitar dumps por time out.
Aqui va un ejemplo :
*&**********************************************************************
*&**********************************************************************
REPORT zprogind.
TYPES: BEGIN OF t_mara,
matnr LIKE mara-matnr,
END OF t_mara.
DATA: it_mara TYPE STANDARD TABLE OF t_mara INITIAL SIZE 0,
wa_mara TYPE t_mara.
DATA: mara_lines TYPE i,
gd_percent TYPE i.
START-OF-SELECTION.
SELECT matnr
INTO TABLE it_mara
FROM mara.
CHECK sy-subrc EQ 0.
mara_lines = sy-dbcnt.
clear: gd_percent.
LOOP AT it_mara INTO wa_mara.
PERFORM progress_bar USING 'Retrieving data...'(001)
sy-tabix
mara_lines.
* WAIT UP TO 2 SECONDS.
ENDLOOP.
WRITE: /20 'Report is "Complete" OK'.
*&---------------------------------------------------------------------*
*& Form PROGRESS_BAR
*&---------------------------------------------------------------------*
FORM progress_bar USING p_value
p_tabix
p_nlines.
DATA: w_text(40),
w_percentage TYPE p,
w_percent_char(3).
w_percentage = ( p_tabix / p_nlines ) * 100.
w_percent_char = w_percentage.
SHIFT w_percent_char LEFT DELETING LEADING ' '.
CONCATENATE p_value w_percent_char '% Complete'(002) INTO w_text.
* This check needs to be in otherwise when looping around big tables
* SAP will re-display indicator too many times causing report to run
* very slow. (No need to re-display same percentage anyway)
if w_percentage gt gd_percent or p_tabix eq 1.
EXPORTING
percentage = w_percentage
text = w_text.
gd_percent = w_percentage.
endif.
endform.
cabe aclarar que si no tiene el parámetro activado en el perfil de usuario no funciona...
ResponderEliminarSaludos
Como asi? explicate mejor Desmoquattro.
ResponderEliminarNi recordaba esto....2 años tiene! je
ResponderEliminarvas a la trx SU3, solapa Parámetros, y cargás el parámetro SIN y lo ponés en 1 o X, y te muestra el relojito, si lo seteás en cero, no te lo va a mostrar.