From f678ee2505126ce3161c4e12e02a0066179a18ff Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 9 Oct 2016 10:47:28 +0000 Subject: [PATCH] simplify lcl_progress, close #380 --- src/zabapgit_util.prog.abap | 66 ++++--------------------------------- 1 file changed, 7 insertions(+), 59 deletions(-) diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index 78b1cddb0..7b0ceccd2 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -887,21 +887,11 @@ CLASS lcl_progress DEFINITION FINAL. iv_text TYPE csequence. 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: calc_pct - RETURNING VALUE(rv_pct) TYPE i, - build_text - RETURNING VALUE(rv_text) TYPE string. + IMPORTING iv_current TYPE i + iv_total TYPE i + RETURNING VALUE(rv_pct) TYPE i. ENDCLASS. @@ -912,66 +902,24 @@ CLASS lcl_progress IMPLEMENTATION. DATA: lv_pct TYPE i, lv_text TYPE string. - FIELD-SYMBOLS: LIKE LINE OF gt_stack. -* assumption: -* all callers must end with calling this method with iv_current = iv_total -* to clear the progress of that sub element - ASSERT lines( gt_stack ) < 10. - - READ TABLE gt_stack INDEX lines( gt_stack ) ASSIGNING . - IF sy-subrc <> 0 OR -key <> iv_key. - APPEND INITIAL LINE TO gt_stack ASSIGNING . - ENDIF. - -key = iv_key. - -current = iv_current. - -total = iv_total. - -text = iv_text. - - lv_pct = calc_pct( ). - lv_text = build_text( ). + lv_pct = calc_pct( iv_current = iv_current + iv_total = iv_total ). + CONCATENATE iv_key '-' iv_text INTO lv_text SEPARATED BY space. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING percentage = lv_pct text = lv_text. - IF iv_current = iv_total. - DELETE gt_stack INDEX lines( gt_stack ). - ENDIF. - - ENDMETHOD. - - METHOD build_text. - - FIELD-SYMBOLS: LIKE LINE OF gt_stack. - - - LOOP AT gt_stack ASSIGNING . - IF sy-tabix = 1. - rv_text = |{ -key } { -text }|. - ELSE. - rv_text = |{ rv_text } - { -key } { -text }|. - - IF -current <> 1 AND -total <> 1. - rv_text = |{ rv_text } ({ -current }/{ -total })|. - ENDIF. - ENDIF. - ENDLOOP. - ENDMETHOD. METHOD calc_pct. DATA: lv_f TYPE f. - FIELD-SYMBOLS: LIKE LINE OF gt_stack. - - READ TABLE gt_stack ASSIGNING INDEX 1. - ASSERT sy-subrc = 0. - - lv_f = ( -current / -total ) * 100. + lv_f = ( iv_current / iv_total ) * 100. rv_pct = lv_f. IF rv_pct = 100.