Dört İşlem

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

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

WordPress.com'da bir web sitesi veya blog oluşturun

Yukarı ↑