mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
simplify lcl_progress, close #380
This commit is contained in:
parent
dd58542a88
commit
f678ee2505
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user