CLASS {{p}}t16_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_and_reads FOR TESTING. METHODS rejects_duplicate FOR TESTING. METHODS counts_by_date FOR TESTING. ENDCLASS. CLASS {{p}}t16_test IMPLEMENTATION. METHOD class_setup. go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}SESS' ) ) ). ENDMETHOD. METHOD class_teardown. go_env->destroy( ). ENDMETHOD. METHOD setup. go_env->clear_doubles( ). ENDMETHOD. METHOD stores_and_reads. DATA lt_sess TYPE STANDARD TABLE OF {{p}}sess WITH EMPTY KEY. lt_sess = VALUE #( ( client = sy-mandt studio_id = 'R1' session_no = '000001' customer = 'CUST01' session_date = '20250110' booked_hours = '3.50' rate_mode = 'STD' tariff_group = 'A' track_count = 8 session_value = '450.00' ) ). go_env->insert_test_data( lt_sess ). SELECT SINGLE * FROM {{p}}sess WHERE studio_id = 'R1' AND session_no = '000001' INTO @DATA(ls_read). cl_abap_unit_assert=>assert_equals( exp = 0 act = sy-subrc ). cl_abap_unit_assert=>assert_equals( exp = 'CUST01' act = ls_read-customer ). cl_abap_unit_assert=>assert_equals( exp = 8 act = ls_read-track_count ). cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '3.50' ) act = CONV decfloat34( ls_read-booked_hours ) ). ENDMETHOD. METHOD rejects_duplicate. DATA lt_sess TYPE STANDARD TABLE OF {{p}}sess WITH EMPTY KEY. lt_sess = VALUE #( ( client = sy-mandt studio_id = 'R9' session_no = '000009' customer = 'CUST09' session_date = '20250401' booked_hours = '1.00' rate_mode = 'STD' tariff_group = 'A' track_count = 1 session_value = '80.00' ) ). INSERT {{p}}sess FROM TABLE @lt_sess. cl_abap_unit_assert=>assert_equals( exp = 0 act = sy-subrc ). INSERT {{p}}sess FROM TABLE @lt_sess. cl_abap_unit_assert=>assert_equals( exp = 4 act = sy-subrc ). ENDMETHOD. METHOD counts_by_date. DATA lt_sess TYPE STANDARD TABLE OF {{p}}sess WITH EMPTY KEY. DATA lv_day TYPE d. lv_day = '20250301'. lt_sess = VALUE #( ( client = sy-mandt studio_id = 'R1' session_no = '000010' customer = 'CUST10' session_date = lv_day booked_hours = '1.00' rate_mode = 'STD' tariff_group = 'A' track_count = 1 session_value = '80.00' ) ( client = sy-mandt studio_id = 'R2' session_no = '000011' customer = 'CUST11' session_date = '20250302' booked_hours = '2.00' rate_mode = 'STD' tariff_group = 'A' track_count = 2 session_value = '160.00' ) ). go_env->insert_test_data( lt_sess ). SELECT COUNT(*) FROM {{p}}sess WHERE session_date = @lv_day INTO @DATA(lv_count). cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_count ). ENDMETHOD. ENDCLASS.