CLASS {{p}}t13_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS fee_for IMPORTING iv_type TYPE string iv_amount TYPE decfloat34 RETURNING VALUE(rv_fee) TYPE decfloat34. METHODS invoice_fee FOR TESTING. METHODS fee_limits FOR TESTING. METHODS credit_memo FOR TESTING. METHODS negative_amount FOR TESTING. ENDCLASS. CLASS {{p}}t13_test IMPLEMENTATION. METHOD fee_for. DATA lv_skip TYPE abap_bool. CALL FUNCTION '{{P}}EVT_FEE' EXPORTING iv_doc_type = iv_type iv_amount = iv_amount IMPORTING ev_skip = lv_skip CHANGING cv_fee = rv_fee EXCEPTIONS invalid_amount = 1 OTHERS = 2. cl_abap_unit_assert=>assert_subrc( exp = 0 ). ENDMETHOD. METHOD invoice_fee. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 4 ) act = fee_for( iv_type = `IN` iv_amount = 200 ) ). ENDMETHOD. METHOD fee_limits. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = fee_for( iv_type = `IN` iv_amount = 5 ) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 50 ) act = fee_for( iv_type = `IN` iv_amount = 9000 ) ). ENDMETHOD. METHOD credit_memo. DATA lv_skip TYPE abap_bool. DATA lv_fee TYPE decfloat34 VALUE 3. CALL FUNCTION '{{P}}EVT_FEE' EXPORTING iv_doc_type = `CR` iv_amount = 100 IMPORTING ev_skip = lv_skip CHANGING cv_fee = lv_fee. cl_abap_unit_assert=>assert_true( lv_skip ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 3 ) act = lv_fee ). ENDMETHOD. METHOD negative_amount. DATA lv_fee TYPE decfloat34. CALL FUNCTION '{{P}}EVT_FEE' EXPORTING iv_doc_type = `IN` iv_amount = -5 CHANGING cv_fee = lv_fee EXCEPTIONS invalid_amount = 1 OTHERS = 2. cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ). ENDMETHOD. ENDCLASS.