REPORT zcrm_test_18.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS: lv_var1 TYPE p LENGTH 3 DECIMALS 2,
lv_op(1) TYPE c,
lv_var2 LIKE lv_var1.
DATA lv_result TYPE p LENGTH 10 DECIMALS 2.
CASE lv_op.
WHEN '+'.
lv_result = lv_var1 + lv_var2.
WHEN '-'.
lv_result = lv_var1 - lv_var2.
WHEN '*'.
lv_result = lv_var1 * lv_var2.
WHEN '/'.
PERFORM calc_div
USING lv_var1 lv_var2
CHANGING lv_result.
WHEN '%'.
PERFORM calc_perc
USING lv_var1 lv_var2
CHANGING lv_result.
WHEN OTHERS.
MESSAGE e208(00) WITH 'Operatör tanımlı değil.' .
ENDCASE.
WRITE:/ lv_var1,lv_op,lv_var2,'=',lv_result NO-ZERO.
SELECTION-SCREEN END OF BLOCK b1.
*& Bölme, sıfıra bölüm kontrolü içermektedir.
*& Form cal_div
*&-------------------------------------------
*& -> pv_sayi1
*& -> pv_sayi2
*& <- cv_result
*&-------------------------------------------
FORM calc_div USING pv_sayi1 TYPE p
pv_sayi2 TYPE p
CHANGING cv_result TYPE p.
DATA oref TYPE REF TO cx_root. "try-catch hata için
DATA lv_text TYPE string. "try-catch hata için
TRY.
cv_result = pv_sayi1 / pv_sayi2.
CATCH cx_sy_zerodivide INTO oref.
lv_text = oref->get_text( ).
MESSAGE e208(00) WITH lv_text .
ENDTRY.
ENDFORM.
*& Yüzde hesaplama
FORM calc_perc USING pv_sayi1 TYPE p
pv_sayi2 TYPE p
CHANGING cv_result TYPE p.
Yorum bırakın