*&---------------------------------------------------------------------*
*& Form F_SET_INDICATOR_PROC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PV_PCT Had been processed Percent
* -->PV_TEXT INDICATOR TEXT
* -->PV_TABIN The lines need to be processed
*----------------------------------------------------------------------*
FORM F_SET_INDICATOR_PROC USING PV_PCT TYPE ANY
PV_TEXT TYPE ANY
PV_TABIN TYPE ANY.
DATA : LV_INDEX(30),
LV_KBETR(30),
LV_TABIN(30),
LV_KBETR_P0(16) TYPE P, "progress percent
LV_KBETR_P(16) TYPE P DECIMALS 2, "progress percent
LV_PCEN(5),
LV_TEXT(100),
LV_PRINDEX TYPE I.
IF PV_PCT IS INITIAL.
LV_PRINDEX = LV_PRINDEX + 1.
IF NOT PV_TABIN IS INITIAL.
LV_KBETR_P = ( LV_PRINDEX / PV_TABIN ) * 100.
ENDIF.
IF LV_KBETR_P <> '10.00' AND
LV_KBETR_P <> '20.00' AND
LV_KBETR_P <> '30.00' AND
LV_KBETR_P <> '40.00' AND
LV_KBETR_P <> '50.00' AND
LV_KBETR_P <> '60.00' AND
LV_KBETR_P <> '70.00' AND
LV_KBETR_P <> '80.00' AND
LV_KBETR_P <> '90.00' AND
LV_KBETR_P <> '100.00'.
*>> At first,Print 1%
IF LV_PRINDEX > 1.
EXIT.
ENDIF.
ENDIF.
LV_INDEX = LV_PRINDEX.
*>> Print decimal point
IF LV_PRINDEX > 1.
LV_KBETR_P0 = LV_KBETR_P.
LV_KBETR = LV_KBETR_P0.
ELSEIF LV_PRINDEX = 1.
LV_KBETR = LV_PRINDEX.
ENDIF.
LV_TABIN = PV_TABIN.
CONDENSE : LV_INDEX, LV_KBETR, LV_TABIN.
IF PV_TEXT IS INITIAL.
CONCATENATE LV_INDEX '/' LV_TABIN '=====>' LV_KBETR TEXT-001
INTO LV_TEXT SEPARATED BY SPACE.
ELSE.
CONCATENATE LV_INDEX '/' LV_TABIN '=====>' LV_KBETR PV_TEXT
INTO LV_TEXT SEPARATED BY SPACE.
ENDIF.
CONDENSE LV_KBETR.
LV_PCEN = LV_KBETR.
ELSE.
LV_TEXT = PV_TEXT.
LV_PCEN = PV_PCT.
ENDIF.
*-- Display indicator
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = LV_PCEN
TEXT = LV_TEXT.
ENDFORM. " F_SET_INDICATOR_PROC