Advertisement
golim22

abap calc with a percentage

Oct 6th, 2017
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 1.17 KB | None | 0 0
  1. REPORT Z_NAAME_COPY_SOLUTION6.
  2.  
  3. TYPES gty_result TYPE p LENGTH 16 DECIMALS 2.
  4.  
  5.  
  6. PARAMETERS: pa_int1 TYPE i,
  7. pa_int2 TYPE i,
  8. pa_op TYPE c LENGTH 1 .
  9.  
  10. DATA gv_result TYPE p LENGTH 16 DECIMALS 2  .
  11.  
  12. IF ( pa_op = '+' OR
  13.   pa_op = '-' OR
  14.   pa_op = '*' OR
  15.   pa_op = '/' AND pa_int2 <> 0  OR
  16.   pa_op = '%').
  17.  
  18. CASE pa_op.
  19.   WHEN '+'.
  20.     gv_result = pa_int1 + pa_int2.
  21.  
  22.      WHEN '-'.
  23.     gv_result = pa_int1 - pa_int2.
  24.  
  25.      WHEN '*'.
  26.     gv_result = pa_int1 * pa_int2.
  27.  
  28.      WHEN '/'.
  29.     gv_result = pa_int1 / pa_int2.
  30.  
  31.     WHEN '%'.
  32.  
  33.       PERFORM calc_precentage
  34.       USING
  35.             pa_int1
  36.             pa_int2
  37.             CHANGING
  38.               gv_result.
  39.  
  40. ENDCASE.
  41.  " -,
  42.   "*,
  43.   "/ .
  44.  
  45. WRITE: 'Result: ', gv_result . WRITE '%'.
  46.  
  47. ELSEIF pa_op = '/' AND pa_int2 = 0.
  48.   WRITE 'no division by zero' .
  49. ELSE.
  50.  
  51. ENDIF .
  52.  
  53.  
  54. FORM calc_precentage USING pv_act TYPE i
  55.                            pv_max TYPE i
  56.                      CHANGING cv_result TYPE gty_result .
  57.  
  58.   IF pv_max = 0.
  59.     cv_result = 0.
  60.     WRITE 'error in precentage calculation'.
  61.  
  62.     ELSE.
  63.       cv_result = pv_act / pv_max * 100.
  64.       ENDIF.
  65.  
  66.       ENDFORM. "calc precentage
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement