REPORT Z_Progress.
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 'Veriler alınıyor...'(001)
sy-tabix
mara_lines.
ENDLOOP.
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 '% Tamamlandı'(002) INTO w_text.
*bu kontrolü büyük verilerde loop yaptığımızda tekrar
*tekrar görünmesini engellemek için yapıyoruz
if w_percentage gt gd_percent or p_tabix eq 1.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = w_percentage
text = w_text.
gd_percent = w_percentage.
endif.
endform. " PROGRESS_BAR
WRITE: /20 'Bitti" OK'.
Serkan AKKAVAK
Bilgisayar Mühendisi
serkurumsal@yandex.com
Social Plugin