SAP 标准的进度指示是通过调用函数模块 SAPGUI_PROGRESS_INDICATOR 实现的,表现为一个运行的时钟加上说明文字,但是有些用户认为时钟不好看,希望使用传统的 Windows 进度条,下面程序就是用字符模拟的进度条。
SAP 标准的进度指示是通过调用函数模块 SAPGUI_PROGRESS_INDICATOR 实现的,表现为一个运行的时钟加上说明文字,但是有些用户认为时钟不好看,希望使用传统的 Windows 进度条,下面程序就是用字符模拟的进度条。不过本人认为,这个进度条还不如时钟好看 :-P。
注意,由于模拟字符属于 Unicode 字符集,因此本程序只能在 Unicode 系统中显示进度条,在非 Unicode 系统中,这些字符都会显示成“#”。
显示进度的程序基本封装在一个子程序里,您也可以自己把它封装到函数模块中,还可以添加其它用户消息。
Code
*&---------------------------------------------------------------------*
*& 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