Exercise _ 16

권영은·2023년 7월 9일
0

SAP_수업

목록 보기
13/36
post-custom-banner

Subroutin master내에 만들기

REPORT zbc400_01_subroutine.

PARAMETERS : pa_int1 TYPE i,
             pa_op   TYPE c LENGTH 1,
             pa_int2 TYPE i.

DATA : tv_result type p length 16 decimals 2,
      gv_result TYPE tv_result.

gv_result = pa_int1 + pa_int2.

IF ( pa_op ='+' OR
    pa_op = '-' OR
    pa_op = '*' OR
    pa_op =  '/' AND
    pa_int2 <> 0 or pa_op = '%' ).
  CASE pa_op.
    WHEN '+'.
      gv_result = pa_int1 + pa_int2 .
    WHEN '-'.
      gv_result = pa_int1 - pa_int2 .
    WHEN '*'.
      gv_result = pa_int1 * pa_int2 .
    WHEN '/'.
      gv_result = pa_int1 / pa_int2 .
    when '%'.
      perform calc_percentage using pa_int1 pa_int2
            changing gv_result.
  ENDCASE.


  WRITE: ' gv_reuslt = ', gv_result.

ELSEIF pa_op = '/' AND pa_int2 = 0.
  WRITE 'No Division by zero! '.
ELSE.
  WRITE 'Invalid operatior!'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form CALC_PERCENTAGE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*      -->P_PA_INT1  text
*      -->P_PAINT2  text
*      -->P_CHAING  text
*      -->P_GV_RESULT  text
*&---------------------------------------------------------------------*
FORM calc_percentage  USING    pv_act type i
                               pv_max type i
                               changing cv_result type tv_result.
    if  pv_max = 0.
      cv_result = 0.
      write 'Error in percentage calculation.'.
    else.
      cv_result = pv_act / pv_max * 100 .
    endif.

ENDFORM.

A분의 B의 퍼센테이지 값을 local에서 쓸 타입인 tv_result type 을 추가로 선언
% 입력시 perform calc_percentage 서브루틴을 만들어줌 .

int_1은 pv_act로 받고 int_2는 pv_max 값으로 받아서 만약 나눌 값이 0 이면 에러글을 써주고 제대로 된 숫자값을 받으면 a/b *100으로 계산해준다.

profile
SAP/ ABAP Student
post-custom-banner

0개의 댓글