CLASS {{p}}t13_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call IMPORTING iv_type TYPE string iv_amount TYPE decfloat34 iv_fee TYPE decfloat34 DEFAULT 7 EXPORTING ev_skip TYPE abap_bool ev_fee TYPE decfloat34 ev_subrc TYPE sysubrc. METHODS invoice_percent FOR TESTING. METHODS invoice_minimum FOR TESTING. METHODS invoice_maximum FOR TESTING. METHODS invoice_rounding FOR TESTING. METHODS credit_memo_skips FOR TESTING. METHODS other_type_zero FOR TESTING. METHODS negative_amount FOR TESTING. METHODS skip_false_for_invoice FOR TESTING. ENDCLASS. CLASS {{p}}t13_hidden IMPLEMENTATION. METHOD call. ev_fee = iv_fee. CALL FUNCTION '{{P}}EVT_FEE' EXPORTING iv_doc_type = iv_type iv_amount = iv_amount IMPORTING ev_skip = ev_skip CHANGING cv_fee = ev_fee EXCEPTIONS invalid_amount = 1 OTHERS = 2. ev_subrc = sy-subrc. ENDMETHOD. METHOD invoice_percent. call( EXPORTING iv_type = `IN` iv_amount = 1000 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 20 ) act = lv_fee ). ENDMETHOD. METHOD invoice_minimum. call( EXPORTING iv_type = `IN` iv_amount = 10 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 1 ) act = lv_fee ). ENDMETHOD. METHOD invoice_maximum. call( EXPORTING iv_type = `IN` iv_amount = 100000 IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 50 ) act = lv_fee ). ENDMETHOD. METHOD invoice_rounding. call( EXPORTING iv_type = `IN` iv_amount = '123.25' IMPORTING ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '2.47' ) act = lv_fee ). ENDMETHOD. METHOD credit_memo_skips. call( EXPORTING iv_type = `CR` iv_amount = 500 iv_fee = 7 IMPORTING ev_skip = DATA(lv_skip) ev_fee = DATA(lv_fee) ). cl_abap_unit_assert=>assert_equals( exp = abap_true act = lv_skip ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 7 ) act = lv_fee ). ENDMETHOD. METHOD other_type_zero. call( EXPORTING iv_type = `XX` iv_amount = 500 IMPORTING ev_fee = DATA(lv_fee) ev_skip = DATA(lv_skip) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_fee ). cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_skip ). ENDMETHOD. METHOD negative_amount. call( EXPORTING iv_type = `IN` iv_amount = -1 IMPORTING ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ). ENDMETHOD. METHOD skip_false_for_invoice. call( EXPORTING iv_type = `IN` iv_amount = 100 IMPORTING ev_skip = DATA(lv_skip) ). cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_skip ). ENDMETHOD. ENDCLASS.