文章转自 http://blog.csdn.net/liangziyisheng/article/details/7580589
有时候,用户希望知道这个报表还要多久能跑出来, 怎么让用户知道程序进度呢?
以下这个function 可以解决这个问题:
SAPGUI_PROGRESS_INDICATOR
它有两个参数传入: percentage 和 text
percentage要求传入一个数值型变量
text要求传入一个字符串,我们通常传入percentage+'%'。
事实上,我们是在程序里面循环的CALL 以上的function,这样状态栏就会出现一个进度盘,旁边就是text传入的值。
*&---------------------------------------------------------------------*
*& Report ZPROGRESSBAR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zprogressbar.
DO 100 TIMES.
PERFORM show_progressbar USING sy-index.
WAIT UP TO 1 SECONDS.
ENDDO.
MESSAGE 'Finished!'(fin) TYPE 'S'.
*&---------------------------------------------------------------------*
*& Form show_progressbar
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PCT text
*----------------------------------------------------------------------*
FORM show_progressbar USING upct TYPE i.
DATA: fbar TYPE c LENGTH 13,
fmsg TYPE c LENGTH 70.
CONSTANTS: percent1 TYPE c VALUE '▏',
percent2 TYPE c VALUE '▎',
percent3 TYPE c VALUE '▍',
percent4 TYPE c VALUE '▌',
percent5 TYPE c VALUE '▋',
percent6 TYPE c VALUE '▊',
percent7 TYPE c VALUE '▉',
percent8 TYPE c VALUE '█'.
DATA: fmod TYPE n,
ftim TYPE i,
ffield TYPE c LENGTH 10,
fidx TYPE c LENGTH 3.
FIELD-SYMBOLS: <fs> TYPE c.
ftim = upct DIV 8.
fmod = upct MOD 8.
CLEAR: fbar.
DO ftim TIMES.
CONCATENATE fbar percent8 INTO fbar.
ENDDO.
IF fmod NE 0.
CONCATENATE 'percent' fmod INTO ffield.
ASSIGN (ffield) TO <fs>.
CONCATENATE fbar <fs> INTO fbar.
ENDIF.
fidx = sy-index.
CONCATENATE fbar fidx '%' INTO fmsg.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = upct
text = fmsg.
.
ENDFORM. "show_progressbar