CLASS {{p}}roast_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. METHODS base_has_five_fields FOR TESTING. METHODS result_has_ten_fields FOR TESTING. METHODS loss_has_two_decimals FOR TESTING. METHODS result_starts_with_base FOR TESTING. ENDCLASS. CLASS {{p}}roast_test IMPLEMENTATION. METHOD base_has_five_fields. DATA(lo_str) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( '{{P}}ROAST_BASE' ) ). DATA(lt_fields) = lo_str->get_ddic_field_list( ). cl_abap_unit_assert=>assert_equals( exp = 5 act = lines( lt_fields ) ). ENDMETHOD. METHOD result_has_ten_fields. DATA(lo_str) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( '{{P}}ROAST_RESULT' ) ). DATA(lt_fields) = lo_str->get_ddic_field_list( ). cl_abap_unit_assert=>assert_equals( exp = 10 act = lines( lt_fields ) ). ENDMETHOD. METHOD loss_has_two_decimals. DATA(lo_str) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( '{{P}}ROAST_RESULT' ) ). DATA(lt_fields) = lo_str->get_ddic_field_list( ). READ TABLE lt_fields INTO DATA(ls_field) WITH KEY fieldname = 'LOSS_PCT'. cl_abap_unit_assert=>assert_subrc( exp = 0 ). cl_abap_unit_assert=>assert_equals( exp = 2 act = ls_field-decimals ). ENDMETHOD. METHOD result_starts_with_base. DATA(lo_base) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( '{{P}}ROAST_BASE' ) ). DATA(lo_res) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( '{{P}}ROAST_RESULT' ) ). DATA(lt_base) = lo_base->get_ddic_field_list( ). DATA(lt_res) = lo_res->get_ddic_field_list( ). cl_abap_unit_assert=>assert_equals( exp = lt_base[ 1 ]-fieldname act = lt_res[ 1 ]-fieldname ). cl_abap_unit_assert=>assert_equals( exp = lt_base[ 5 ]-fieldname act = lt_res[ 5 ]-fieldname ). cl_abap_unit_assert=>assert_equals( exp = lt_base[ 5 ]-leng act = lt_res[ 5 ]-leng ). ENDMETHOD. ENDCLASS.