CLASS {{p}}t14_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS call IMPORTING iv_quantity TYPE decfloat34 iv_scrap TYPE decfloat34 iv_rework TYPE decfloat34 DEFAULT 0 EXPORTING ev_pct TYPE decfloat34 ev_severity TYPE string ev_rework TYPE decfloat34 ev_subrc TYPE sysubrc. METHODS percent_rounds_half_up FOR TESTING. METHODS zero_scrap_is_ok FOR TESTING. METHODS low_upper_boundary FOR TESTING. METHODS high_lower_boundary FOR TESTING. METHODS high_upper_boundary FOR TESTING. METHODS critical_above_twenty FOR TESTING. METHODS rework_unchanged_for_low FOR TESTING. METHODS rework_set_for_high FOR TESTING. METHODS quantity_zero_raises FOR TESTING. METHODS scrap_negative_raises FOR TESTING. METHODS scrap_above_quantity_raises FOR TESTING. ENDCLASS. CLASS {{p}}t14_hidden IMPLEMENTATION. METHOD call. ev_pct = 0. ev_severity = ``. ev_rework = iv_rework. CALL FUNCTION '{{P}}PRD_SCRAP' EXPORTING iv_quantity = iv_quantity iv_scrap = iv_scrap IMPORTING ev_scrap_pct = ev_pct ev_severity = ev_severity CHANGING cv_rework_qty = ev_rework EXCEPTIONS invalid_quantity = 1 scrap_too_high = 2 OTHERS = 3. ev_subrc = sy-subrc. ENDMETHOD. METHOD percent_rounds_half_up. call( EXPORTING iv_quantity = 800 iv_scrap = 7 IMPORTING ev_pct = DATA(lv_pct) ev_severity = DATA(lv_sev) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '0.9' ) act = lv_pct ). cl_abap_unit_assert=>assert_equals( exp = `LOW` act = lv_sev ). ENDMETHOD. METHOD zero_scrap_is_ok. call( EXPORTING iv_quantity = 100 iv_scrap = 0 IMPORTING ev_pct = DATA(lv_pct) ev_severity = DATA(lv_sev) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 0 ) act = lv_pct ). cl_abap_unit_assert=>assert_equals( exp = `OK` act = lv_sev ). ENDMETHOD. METHOD low_upper_boundary. call( EXPORTING iv_quantity = 100 iv_scrap = 5 IMPORTING ev_pct = DATA(lv_pct) ev_severity = DATA(lv_sev) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 5 ) act = lv_pct ). cl_abap_unit_assert=>assert_equals( exp = `LOW` act = lv_sev ). ENDMETHOD. METHOD high_lower_boundary. call( EXPORTING iv_quantity = 100 iv_scrap = '5.1' IMPORTING ev_pct = DATA(lv_pct) ev_severity = DATA(lv_sev) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '5.1' ) act = lv_pct ). cl_abap_unit_assert=>assert_equals( exp = `HIGH` act = lv_sev ). ENDMETHOD. METHOD high_upper_boundary. call( EXPORTING iv_quantity = 100 iv_scrap = 20 IMPORTING ev_pct = DATA(lv_pct) ev_severity = DATA(lv_sev) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 20 ) act = lv_pct ). cl_abap_unit_assert=>assert_equals( exp = `HIGH` act = lv_sev ). ENDMETHOD. METHOD critical_above_twenty. call( EXPORTING iv_quantity = 100 iv_scrap = '20.1' IMPORTING ev_pct = DATA(lv_pct) ev_severity = DATA(lv_sev) ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '20.1' ) act = lv_pct ). cl_abap_unit_assert=>assert_equals( exp = `CRITICAL` act = lv_sev ). ENDMETHOD. METHOD rework_unchanged_for_low. call( EXPORTING iv_quantity = 200 iv_scrap = 4 iv_rework = 99 IMPORTING ev_rework = DATA(lv_rework) ev_severity = DATA(lv_sev) ). cl_abap_unit_assert=>assert_equals( exp = `LOW` act = lv_sev ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 99 ) act = lv_rework ). ENDMETHOD. METHOD rework_set_for_high. call( EXPORTING iv_quantity = 100 iv_scrap = 10 iv_rework = 99 IMPORTING ev_rework = DATA(lv_rework) ev_severity = DATA(lv_sev) ). cl_abap_unit_assert=>assert_equals( exp = `HIGH` act = lv_sev ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 10 ) act = lv_rework ). ENDMETHOD. METHOD quantity_zero_raises. call( EXPORTING iv_quantity = 0 iv_scrap = 0 IMPORTING ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ). ENDMETHOD. METHOD scrap_negative_raises. call( EXPORTING iv_quantity = 100 iv_scrap = -1 IMPORTING ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ). ENDMETHOD. METHOD scrap_above_quantity_raises. call( EXPORTING iv_quantity = 100 iv_scrap = 101 IMPORTING ev_subrc = DATA(lv_rc) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_rc ). ENDMETHOD. ENDCLASS.