Merged branch upstream-master into master

This commit is contained in:
sbcgua 2016-10-09 13:49:14 +03:00
commit bd8c99fc13

View File

@ -887,21 +887,11 @@ CLASS lcl_progress DEFINITION FINAL.
iv_text TYPE csequence. iv_text TYPE csequence.
PRIVATE SECTION. PRIVATE SECTION.
TYPES: BEGIN OF ty_stack,
key TYPE string,
current TYPE i,
total TYPE i,
text TYPE string,
END OF ty_stack.
CLASS-DATA:
gt_stack TYPE STANDARD TABLE OF ty_stack WITH DEFAULT KEY.
CLASS-METHODS: CLASS-METHODS:
calc_pct calc_pct
RETURNING VALUE(rv_pct) TYPE i, IMPORTING iv_current TYPE i
build_text iv_total TYPE i
RETURNING VALUE(rv_text) TYPE string. RETURNING VALUE(rv_pct) TYPE i.
ENDCLASS. ENDCLASS.
@ -912,66 +902,24 @@ CLASS lcl_progress IMPLEMENTATION.
DATA: lv_pct TYPE i, DATA: lv_pct TYPE i,
lv_text TYPE string. lv_text TYPE string.
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
* assumption: lv_pct = calc_pct( iv_current = iv_current
* all callers must end with calling this method with iv_current = iv_total iv_total = iv_total ).
* to clear the progress of that sub element CONCATENATE iv_key '-' iv_text INTO lv_text SEPARATED BY space.
ASSERT lines( gt_stack ) < 10.
READ TABLE gt_stack INDEX lines( gt_stack ) ASSIGNING <ls_stack>.
IF sy-subrc <> 0 OR <ls_stack>-key <> iv_key.
APPEND INITIAL LINE TO gt_stack ASSIGNING <ls_stack>.
ENDIF.
<ls_stack>-key = iv_key.
<ls_stack>-current = iv_current.
<ls_stack>-total = iv_total.
<ls_stack>-text = iv_text.
lv_pct = calc_pct( ).
lv_text = build_text( ).
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING EXPORTING
percentage = lv_pct percentage = lv_pct
text = lv_text. text = lv_text.
IF iv_current = iv_total.
DELETE gt_stack INDEX lines( gt_stack ).
ENDIF.
ENDMETHOD.
METHOD build_text.
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
LOOP AT gt_stack ASSIGNING <ls_stack>.
IF sy-tabix = 1.
rv_text = |{ <ls_stack>-key } { <ls_stack>-text }|.
ELSE.
rv_text = |{ rv_text } - { <ls_stack>-key } { <ls_stack>-text }|.
IF <ls_stack>-current <> 1 AND <ls_stack>-total <> 1.
rv_text = |{ rv_text } ({ <ls_stack>-current }/{ <ls_stack>-total })|.
ENDIF.
ENDIF.
ENDLOOP.
ENDMETHOD. ENDMETHOD.
METHOD calc_pct. METHOD calc_pct.
DATA: lv_f TYPE f. DATA: lv_f TYPE f.
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
lv_f = ( iv_current / iv_total ) * 100.
READ TABLE gt_stack ASSIGNING <ls_stack> INDEX 1.
ASSERT sy-subrc = 0.
lv_f = ( <ls_stack>-current / <ls_stack>-total ) * 100.
rv_pct = lv_f. rv_pct = lv_f.
IF rv_pct = 100. IF rv_pct = 100.