CLASS {{p}}t20_test DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. CLASS-DATA go_env TYPE REF TO if_osql_test_environment. CLASS-METHODS class_setup. CLASS-METHODS class_teardown. METHODS setup. METHODS stores_row FOR TESTING. METHODS rejects_duplicate FOR TESTING. METHODS keeps_three_decimals FOR TESTING. ENDCLASS. CLASS {{p}}t20_test IMPLEMENTATION. METHOD class_setup. go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}STOCK' ) ) ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. go_env->clear_doubles( ). ENDMETHOD. METHOD stores_row. DATA ls_row TYPE {{p}}stock. DATA ls_read TYPE {{p}}stock. DATA lv_subrc TYPE sy-subrc. ls_row-client = sy-mandt. ls_row-bin_id = 'BIN-0001'. ls_row-article_id = 'ART-000001'. ls_row-quantity = '12.500'. ls_row-unit_of_measure = 'ST'. ls_row-shelf_no = '0042'. ls_row-last_count_date = '20250115'. ls_row-blocked = 'X'. INSERT {{p}}stock FROM @ls_row. lv_subrc = sy-subrc. cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_subrc ). SELECT SINGLE * FROM {{p}}stock WHERE bin_id = 'BIN-0001' AND article_id = 'ART-000001' INTO @ls_read. cl_abap_unit_assert=>assert_equals( exp = ls_row-quantity act = ls_read-quantity ). cl_abap_unit_assert=>assert_equals( exp = ls_row-unit_of_measure act = ls_read-unit_of_measure ). cl_abap_unit_assert=>assert_equals( exp = ls_row-blocked act = ls_read-blocked ). ENDMETHOD. METHOD rejects_duplicate. DATA ls_row TYPE {{p}}stock. DATA lv_subrc TYPE sy-subrc. ls_row-client = sy-mandt. ls_row-bin_id = 'BIN-0002'. ls_row-article_id = 'ART-000002'. INSERT {{p}}stock FROM @ls_row. INSERT {{p}}stock FROM @ls_row. lv_subrc = sy-subrc. cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_subrc ). ENDMETHOD. METHOD keeps_three_decimals. DATA ls_row TYPE {{p}}stock. DATA lv_quantity TYPE {{p}}stock-quantity. ls_row-client = sy-mandt. ls_row-bin_id = 'BIN-0003'. ls_row-article_id = 'ART-000003'. ls_row-quantity = '0.125'. ls_row-unit_of_measure = 'KG'. INSERT {{p}}stock FROM @ls_row. SELECT SINGLE quantity FROM {{p}}stock WHERE bin_id = 'BIN-0003' AND article_id = 'ART-000003' INTO @lv_quantity. cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '0.125' ) act = CONV decfloat34( lv_quantity ) ). ENDMETHOD. ENDCLASS.