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으로 계산해준다.