Files
abap-llm/tasks_gen/train/G1952/hidden/t16_hidden.clas.abap
2026-10-05 22:08:59 +02:00

213 lines
9.1 KiB
ABAP

CLASS {{p}}t16_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES ty_fields TYPE STANDARD TABLE OF dfies WITH EMPTY KEY.
TYPES ty_fieldname TYPE c LENGTH 30.
TYPES ty_datatype TYPE c LENGTH 4.
TYPES ty_flag TYPE c LENGTH 1.
CLASS-DATA go_env TYPE REF TO if_osql_test_environment.
CLASS-METHODS class_setup.
CLASS-METHODS class_teardown.
METHODS setup.
METHODS field_names FOR TESTING.
METHODS key_fields FOR TESTING.
METHODS field_attributes FOR TESTING.
METHODS insert_and_read FOR TESTING.
METHODS read_by_date FOR TESTING.
METHODS get_fields RETURNING VALUE(rt_fields) TYPE ty_fields.
METHODS get_field
IMPORTING it_fields TYPE ty_fields
iv_name TYPE ty_fieldname
RETURNING VALUE(rs_field) TYPE dfies.
METHODS assert_present
IMPORTING it_fields TYPE ty_fields
iv_name TYPE ty_fieldname.
METHODS assert_key
IMPORTING it_fields TYPE ty_fields
iv_name TYPE ty_fieldname
iv_key TYPE ty_flag.
METHODS assert_field
IMPORTING it_fields TYPE ty_fields
iv_name TYPE ty_fieldname
iv_type TYPE ty_datatype
iv_leng TYPE i
iv_decimals TYPE i.
METHODS to_struct_descr
IMPORTING io_descr TYPE REF TO cl_abap_typedescr
RETURNING VALUE(ro_struct) TYPE REF TO cl_abap_structdescr.
ENDCLASS.
CLASS {{p}}t16_hidden 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 get_fields.
DATA lo_struct TYPE REF TO cl_abap_structdescr.
lo_struct = to_struct_descr( cl_abap_typedescr=>describe_by_name( '{{P}}SESS' ) ).
rt_fields = lo_struct->get_ddic_field_list( ).
ENDMETHOD.
METHOD to_struct_descr.
DATA lo_table TYPE REF TO cl_abap_tabledescr.
TRY.
ro_struct = CAST cl_abap_structdescr( io_descr ).
CATCH cx_sy_move_cast_error.
lo_table = CAST cl_abap_tabledescr( io_descr ).
ro_struct = CAST cl_abap_structdescr( lo_table->get_table_line_type( ) ).
ENDTRY.
ENDMETHOD.
METHOD get_field.
READ TABLE it_fields INTO rs_field WITH KEY fieldname = iv_name.
cl_abap_unit_assert=>assert_equals(
exp = 0
act = sy-subrc
msg = |Field { iv_name } is missing in table {{P}}SESS| ).
ENDMETHOD.
METHOD assert_present.
DATA ls_field TYPE dfies.
READ TABLE it_fields INTO ls_field WITH KEY fieldname = iv_name.
cl_abap_unit_assert=>assert_equals(
exp = 0
act = sy-subrc
msg = |Field { iv_name } is missing in table {{P}}SESS| ).
ENDMETHOD.
METHOD assert_key.
DATA ls_field TYPE dfies.
DATA lv_flag TYPE ty_flag.
ls_field = get_field( it_fields = it_fields iv_name = iv_name ).
lv_flag = ls_field-keyflag.
cl_abap_unit_assert=>assert_equals(
exp = iv_key
act = lv_flag
msg = |Wrong key flag of field { iv_name }| ).
ENDMETHOD.
METHOD assert_field.
DATA ls_field TYPE dfies.
DATA lv_leng TYPE i.
DATA lv_decimals TYPE i.
ls_field = get_field( it_fields = it_fields iv_name = iv_name ).
lv_leng = ls_field-leng.
lv_decimals = ls_field-decimals.
cl_abap_unit_assert=>assert_equals( exp = iv_leng act = lv_leng
msg = |Wrong length of { iv_name }| ).
cl_abap_unit_assert=>assert_equals( exp = iv_decimals act = lv_decimals
msg = |Wrong decimals of { iv_name }| ).
cl_abap_unit_assert=>assert_equals( exp = iv_type act = ls_field-datatype
msg = |Wrong type of { iv_name }| ).
ENDMETHOD.
METHOD field_names.
DATA lt_fields TYPE ty_fields.
lt_fields = get_fields( ).
cl_abap_unit_assert=>assert_equals( exp = 10 act = lines( lt_fields )
msg = 'Wrong number of fields in {{P}}SESS' ).
assert_present( it_fields = lt_fields iv_name = 'CLIENT' ).
assert_present( it_fields = lt_fields iv_name = 'STUDIO_ID' ).
assert_present( it_fields = lt_fields iv_name = 'SESSION_NO' ).
assert_present( it_fields = lt_fields iv_name = 'CUSTOMER' ).
assert_present( it_fields = lt_fields iv_name = 'SESSION_DATE' ).
assert_present( it_fields = lt_fields iv_name = 'BOOKED_HOURS' ).
assert_present( it_fields = lt_fields iv_name = 'RATE_MODE' ).
assert_present( it_fields = lt_fields iv_name = 'TARIFF_GROUP' ).
assert_present( it_fields = lt_fields iv_name = 'TRACK_COUNT' ).
assert_present( it_fields = lt_fields iv_name = 'SESSION_VALUE' ).
ENDMETHOD.
METHOD key_fields.
DATA lt_fields TYPE ty_fields.
lt_fields = get_fields( ).
assert_key( it_fields = lt_fields iv_name = 'CLIENT' iv_key = 'X' ).
assert_key( it_fields = lt_fields iv_name = 'STUDIO_ID' iv_key = 'X' ).
assert_key( it_fields = lt_fields iv_name = 'SESSION_NO' iv_key = 'X' ).
assert_key( it_fields = lt_fields iv_name = 'CUSTOMER' iv_key = ' ' ).
assert_key( it_fields = lt_fields iv_name = 'SESSION_DATE' iv_key = ' ' ).
assert_key( it_fields = lt_fields iv_name = 'BOOKED_HOURS' iv_key = ' ' ).
assert_key( it_fields = lt_fields iv_name = 'RATE_MODE' iv_key = ' ' ).
assert_key( it_fields = lt_fields iv_name = 'TARIFF_GROUP' iv_key = ' ' ).
assert_key( it_fields = lt_fields iv_name = 'TRACK_COUNT' iv_key = ' ' ).
assert_key( it_fields = lt_fields iv_name = 'SESSION_VALUE' iv_key = ' ' ).
ENDMETHOD.
METHOD field_attributes.
DATA lt_fields TYPE ty_fields.
lt_fields = get_fields( ).
assert_field( it_fields = lt_fields iv_name = 'CLIENT' iv_type = 'CLNT'
iv_leng = 3 iv_decimals = 0 ).
assert_field( it_fields = lt_fields iv_name = 'STUDIO_ID' iv_type = 'CHAR'
iv_leng = 4 iv_decimals = 0 ).
assert_field( it_fields = lt_fields iv_name = 'SESSION_NO' iv_type = 'NUMC'
iv_leng = 6 iv_decimals = 0 ).
assert_field( it_fields = lt_fields iv_name = 'CUSTOMER' iv_type = 'CHAR'
iv_leng = 10 iv_decimals = 0 ).
assert_field( it_fields = lt_fields iv_name = 'SESSION_DATE' iv_type = 'DATS'
iv_leng = 8 iv_decimals = 0 ).
assert_field( it_fields = lt_fields iv_name = 'BOOKED_HOURS' iv_type = 'DEC'
iv_leng = 5 iv_decimals = 2 ).
assert_field( it_fields = lt_fields iv_name = 'RATE_MODE' iv_type = 'CHAR'
iv_leng = 4 iv_decimals = 0 ).
assert_field( it_fields = lt_fields iv_name = 'TARIFF_GROUP' iv_type = 'CHAR'
iv_leng = 4 iv_decimals = 0 ).
assert_field( it_fields = lt_fields iv_name = 'TRACK_COUNT' iv_type = 'INT4'
iv_leng = 10 iv_decimals = 0 ).
assert_field( it_fields = lt_fields iv_name = 'SESSION_VALUE' iv_type = 'DEC'
iv_leng = 15 iv_decimals = 2 ).
ENDMETHOD.
METHOD insert_and_read.
DATA lt_sess TYPE STANDARD TABLE OF {{p}}sess WITH EMPTY KEY.
DATA lv_day TYPE d.
lv_day = '20250110'.
lt_sess = VALUE #(
( client = sy-mandt studio_id = 'R1' session_no = '000001'
customer = 'CUST01' session_date = lv_day 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 = lv_day act = ls_read-session_date ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '3.50' )
act = CONV decfloat34( ls_read-booked_hours ) ).
cl_abap_unit_assert=>assert_equals( exp = 'STD' act = ls_read-rate_mode ).
cl_abap_unit_assert=>assert_equals( exp = 'A' act = ls_read-tariff_group ).
cl_abap_unit_assert=>assert_equals( exp = 8 act = ls_read-track_count ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '450.00' )
act = CONV decfloat34( ls_read-session_value ) ).
ENDMETHOD.
METHOD read_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.