Files
abap-llm/tasks_gen/train/G1901/hidden/t20_hidden.clas.abap

183 lines
8.5 KiB
ABAP

CLASS {{p}}t20_hidden 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 fields_exist FOR TESTING.
METHODS key_fields FOR TESTING.
METHODS field_lengths FOR TESTING.
METHODS field_types FOR TESTING.
METHODS insert_and_read FOR TESTING.
METHODS decimal_roundtrip FOR TESTING.
METHODS duplicate_key FOR TESTING.
METHODS other_key_allowed FOR TESTING.
METHODS get_fields RETURNING VALUE(rt_fields) TYPE ddfields.
METHODS field_of IMPORTING it_fields TYPE ddfields
iv_name TYPE string
RETURNING VALUE(rs_field) TYPE dfies.
METHODS assert_has_field IMPORTING it_fields TYPE ddfields
iv_name TYPE string.
ENDCLASS.
CLASS {{p}}t20_hidden 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 get_fields.
DATA(lo_descr) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( '{{P}}STOCK' ) ).
rt_fields = lo_descr->get_ddic_field_list( ).
ENDMETHOD.
METHOD field_of.
LOOP AT it_fields INTO DATA(ls_field).
IF to_upper( ls_field-fieldname ) = to_upper( iv_name ).
rs_field = ls_field.
RETURN.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD assert_has_field.
cl_abap_unit_assert=>assert_true(
act = boolc( field_of( it_fields = it_fields iv_name = iv_name )-fieldname IS NOT INITIAL )
msg = |Field { iv_name } is missing| ).
ENDMETHOD.
METHOD fields_exist.
DATA(lt_fields) = get_fields( ).
cl_abap_unit_assert=>assert_equals( exp = 8 act = lines( lt_fields ) ).
assert_has_field( it_fields = lt_fields iv_name = 'CLIENT' ).
assert_has_field( it_fields = lt_fields iv_name = 'BIN_ID' ).
assert_has_field( it_fields = lt_fields iv_name = 'ARTICLE_ID' ).
assert_has_field( it_fields = lt_fields iv_name = 'QUANTITY' ).
assert_has_field( it_fields = lt_fields iv_name = 'UNIT_OF_MEASURE' ).
assert_has_field( it_fields = lt_fields iv_name = 'SHELF_NO' ).
assert_has_field( it_fields = lt_fields iv_name = 'LAST_COUNT_DATE' ).
assert_has_field( it_fields = lt_fields iv_name = 'BLOCKED' ).
ENDMETHOD.
METHOD key_fields.
DATA(lt_fields) = get_fields( ).
cl_abap_unit_assert=>assert_equals( exp = 'X' act = field_of( it_fields = lt_fields iv_name = 'CLIENT' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = 'X' act = field_of( it_fields = lt_fields iv_name = 'BIN_ID' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = 'X' act = field_of( it_fields = lt_fields iv_name = 'ARTICLE_ID' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_of( it_fields = lt_fields iv_name = 'QUANTITY' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_of( it_fields = lt_fields iv_name = 'UNIT_OF_MEASURE' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_of( it_fields = lt_fields iv_name = 'SHELF_NO' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_of( it_fields = lt_fields iv_name = 'LAST_COUNT_DATE' )-keyflag ).
cl_abap_unit_assert=>assert_equals( exp = ' ' act = field_of( it_fields = lt_fields iv_name = 'BLOCKED' )-keyflag ).
ENDMETHOD.
METHOD field_lengths.
DATA(lt_fields) = get_fields( ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = field_of( it_fields = lt_fields iv_name = 'CLIENT' )-leng ).
cl_abap_unit_assert=>assert_equals( exp = 8 act = field_of( it_fields = lt_fields iv_name = 'BIN_ID' )-leng ).
cl_abap_unit_assert=>assert_equals( exp = 12 act = field_of( it_fields = lt_fields iv_name = 'ARTICLE_ID' )-leng ).
cl_abap_unit_assert=>assert_equals( exp = 13 act = field_of( it_fields = lt_fields iv_name = 'QUANTITY' )-leng ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = field_of( it_fields = lt_fields iv_name = 'UNIT_OF_MEASURE' )-leng ).
cl_abap_unit_assert=>assert_equals( exp = 4 act = field_of( it_fields = lt_fields iv_name = 'SHELF_NO' )-leng ).
cl_abap_unit_assert=>assert_equals( exp = 8 act = field_of( it_fields = lt_fields iv_name = 'LAST_COUNT_DATE' )-leng ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = field_of( it_fields = lt_fields iv_name = 'BLOCKED' )-leng ).
ENDMETHOD.
METHOD field_types.
DATA(lt_fields) = get_fields( ).
cl_abap_unit_assert=>assert_equals( exp = 'CLNT' act = field_of( it_fields = lt_fields iv_name = 'CLIENT' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = field_of( it_fields = lt_fields iv_name = 'BIN_ID' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = field_of( it_fields = lt_fields iv_name = 'ARTICLE_ID' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'P' act = field_of( it_fields = lt_fields iv_name = 'QUANTITY' )-inttype ).
cl_abap_unit_assert=>assert_equals( exp = 3 act = field_of( it_fields = lt_fields iv_name = 'QUANTITY' )-decimals ).
cl_abap_unit_assert=>assert_equals( exp = 'UNIT' act = field_of( it_fields = lt_fields iv_name = 'UNIT_OF_MEASURE' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'NUMC' act = field_of( it_fields = lt_fields iv_name = 'SHELF_NO' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'DATS' act = field_of( it_fields = lt_fields iv_name = 'LAST_COUNT_DATE' )-datatype ).
cl_abap_unit_assert=>assert_equals( exp = 'CHAR' act = field_of( it_fields = lt_fields iv_name = 'BLOCKED' )-datatype ).
ENDMETHOD.
METHOD insert_and_read.
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-shelf_no act = ls_read-shelf_no ).
cl_abap_unit_assert=>assert_equals( exp = ls_row-last_count_date act = ls_read-last_count_date ).
cl_abap_unit_assert=>assert_equals( exp = ls_row-blocked act = ls_read-blocked ).
cl_abap_unit_assert=>assert_equals( exp = ls_row-client act = ls_read-client ).
ENDMETHOD.
METHOD decimal_roundtrip.
DATA ls_row TYPE {{p}}stock.
DATA lv_quantity TYPE {{p}}stock-quantity.
ls_row-client = sy-mandt.
ls_row-bin_id = 'BIN-0002'.
ls_row-article_id = 'ART-000002'.
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-0002' AND article_id = 'ART-000002'
INTO @lv_quantity.
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( '0.125' )
act = CONV decfloat34( lv_quantity ) ).
ENDMETHOD.
METHOD duplicate_key.
DATA ls_row TYPE {{p}}stock.
DATA lv_subrc TYPE sy-subrc.
ls_row-client = sy-mandt.
ls_row-bin_id = 'BIN-0003'.
ls_row-article_id = 'ART-000003'.
INSERT {{p}}stock FROM @ls_row.
lv_subrc = sy-subrc.
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_subrc ).
INSERT {{p}}stock FROM @ls_row.
lv_subrc = sy-subrc.
cl_abap_unit_assert=>assert_equals( exp = 4 act = lv_subrc ).
ENDMETHOD.
METHOD other_key_allowed.
DATA ls_row TYPE {{p}}stock.
DATA lv_subrc TYPE sy-subrc.
DATA lv_count TYPE i.
ls_row-client = sy-mandt.
ls_row-bin_id = 'BIN-0004'.
ls_row-article_id = 'ART-000004'.
INSERT {{p}}stock FROM @ls_row.
ls_row-article_id = 'ART-000005'.
INSERT {{p}}stock FROM @ls_row.
lv_subrc = sy-subrc.
cl_abap_unit_assert=>assert_equals( exp = 0 act = lv_subrc ).
SELECT COUNT(*) FROM {{p}}stock INTO @lv_count.
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_count ).
ENDMETHOD.
ENDCLASS.