Stage 2 summary at 50 accepted trajectories
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
137
tasks_gen/train/G1130/faulty/m0_groom_bill_old.prog.abap
Normal file
137
tasks_gen/train/G1130/faulty/m0_groom_bill_old.prog.abap
Normal file
@@ -0,0 +1,137 @@
|
||||
REPORT {{p}}groom_bill_old.
|
||||
|
||||
TYPES: ty_charge TYPE p LENGTH 9 DECIMALS 2,
|
||||
BEGIN OF ty_line,
|
||||
groom_id TYPE {{p}}groom-groom_id,
|
||||
pet TYPE {{p}}groom-pet,
|
||||
service TYPE {{p}}groom-service,
|
||||
charge TYPE ty_charge,
|
||||
END OF ty_line,
|
||||
tt_line TYPE STANDARD TABLE OF ty_line WITH EMPTY KEY,
|
||||
tt_pet TYPE RANGE OF {{p}}groom-pet.
|
||||
|
||||
DATA gv_pet TYPE {{p}}groom-pet.
|
||||
|
||||
PARAMETERS p_date TYPE d OBLIGATORY.
|
||||
SELECT-OPTIONS s_pet FOR gv_pet.
|
||||
|
||||
CLASS lcl_groom_bill DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: c_service_basic TYPE {{p}}groom-service VALUE 'BASIC',
|
||||
c_service_full TYPE {{p}}groom-service VALUE 'FULL',
|
||||
c_coat_long TYPE {{p}}groom-coat VALUE 'LONG',
|
||||
c_coat_curly TYPE {{p}}groom-coat VALUE 'CURLY',
|
||||
c_charge_basic TYPE ty_charge VALUE '30.00',
|
||||
c_charge_full TYPE ty_charge VALUE '50.00',
|
||||
c_surch_long TYPE ty_charge VALUE '10.00',
|
||||
c_surch_curly TYPE ty_charge VALUE '15.00',
|
||||
c_surch_heavy TYPE ty_charge VALUE '20.00',
|
||||
c_discount TYPE ty_charge VALUE '5.00',
|
||||
c_heavy_kg TYPE {{p}}groom-weight_kg VALUE '25.0'.
|
||||
METHODS bill
|
||||
IMPORTING iv_date TYPE d
|
||||
it_pet TYPE tt_pet
|
||||
RETURNING VALUE(rt_lines) TYPE tt_line.
|
||||
METHODS display
|
||||
CHANGING ct_lines TYPE tt_line.
|
||||
PRIVATE SECTION.
|
||||
METHODS charge_of
|
||||
IMPORTING is_groom TYPE {{p}}groom
|
||||
RETURNING VALUE(rv_charge) TYPE ty_charge.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_groom_bill IMPLEMENTATION.
|
||||
METHOD bill.
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
|
||||
SELECT *
|
||||
FROM {{p}}groom
|
||||
WHERE visit_date = @iv_date
|
||||
OR pet IN @it_pet
|
||||
ORDER BY groom_id
|
||||
INTO TABLE @lt_groom.
|
||||
|
||||
rt_lines = VALUE #(
|
||||
FOR ls_groom IN lt_groom
|
||||
( groom_id = ls_groom-groom_id
|
||||
pet = ls_groom-pet
|
||||
service = ls_groom-service
|
||||
charge = charge_of( ls_groom ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charge_of.
|
||||
IF is_groom-service = c_service_full.
|
||||
rv_charge = c_charge_full.
|
||||
ELSEIF is_groom-service = c_service_basic.
|
||||
rv_charge = c_charge_basic.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge + c_surch_long.
|
||||
ELSEIF is_groom-coat = c_coat_curly.
|
||||
rv_charge = rv_charge + c_surch_curly.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-weight_kg > c_heavy_kg.
|
||||
rv_charge = rv_charge + c_surch_heavy.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-service = c_service_full AND is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge - c_discount.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD display.
|
||||
TRY.
|
||||
cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv)
|
||||
CHANGING t_table = ct_lines ).
|
||||
lo_alv->display( ).
|
||||
CATCH cx_salv_msg INTO DATA(lx_msg).
|
||||
MESSAGE lx_msg TYPE 'I' DISPLAY LIKE 'E'.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
START-OF-SELECTION.
|
||||
DATA(go_bill) = NEW lcl_groom_bill( ).
|
||||
DATA(gt_lines) = go_bill->bill( iv_date = p_date it_pet = s_pet[] ).
|
||||
go_bill->display( CHANGING ct_lines = gt_lines ).
|
||||
|
||||
CLASS ltc_bill DEFINITION FINAL 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 charges FOR TESTING.
|
||||
METHODS pet_filter FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltc_bill IMPLEMENTATION.
|
||||
METHOD class_setup.
|
||||
go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}GROOM' ) ) ).
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
lt_groom = VALUE #(
|
||||
( groom_id = 1 pet = 'DOG' coat = 'SHORT' weight_kg = '10.0' service = 'BASIC' visit_date = '20260401' )
|
||||
( groom_id = 2 pet = 'CAT' coat = 'CURLY' weight_kg = '30.0' service = 'FULL' visit_date = '20260401' )
|
||||
( groom_id = 3 pet = 'CAT' coat = 'LONG' weight_kg = '5.0' service = 'FULL' visit_date = '20260331' ) ).
|
||||
go_env->insert_test_data( lt_groom ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_teardown.
|
||||
go_env->destroy( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charges.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill( iv_date = '20260401' it_pet = VALUE #( ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '30.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 2 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD pet_filter.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill(
|
||||
iv_date = '20260401' it_pet = VALUE #( ( sign = 'I' option = 'EQ' low = 'CAT' ) ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
137
tasks_gen/train/G1130/faulty/m1_groom_bill_old.prog.abap
Normal file
137
tasks_gen/train/G1130/faulty/m1_groom_bill_old.prog.abap
Normal file
@@ -0,0 +1,137 @@
|
||||
REPORT {{p}}groom_bill_old.
|
||||
|
||||
TYPES: ty_charge TYPE p LENGTH 9 DECIMALS 2,
|
||||
BEGIN OF ty_line,
|
||||
groom_id TYPE {{p}}groom-groom_id,
|
||||
pet TYPE {{p}}groom-pet,
|
||||
service TYPE {{p}}groom-service,
|
||||
charge TYPE ty_charge,
|
||||
END OF ty_line,
|
||||
tt_line TYPE STANDARD TABLE OF ty_line WITH EMPTY KEY,
|
||||
tt_pet TYPE RANGE OF {{p}}groom-pet.
|
||||
|
||||
DATA gv_pet TYPE {{p}}groom-pet.
|
||||
|
||||
PARAMETERS p_date TYPE d OBLIGATORY.
|
||||
SELECT-OPTIONS s_pet FOR gv_pet.
|
||||
|
||||
CLASS lcl_groom_bill DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: c_service_basic TYPE {{p}}groom-service VALUE 'BASIC',
|
||||
c_service_full TYPE {{p}}groom-service VALUE 'FULL',
|
||||
c_coat_long TYPE {{p}}groom-coat VALUE 'LONG',
|
||||
c_coat_curly TYPE {{p}}groom-coat VALUE 'CURLY',
|
||||
c_charge_basic TYPE ty_charge VALUE '30.00',
|
||||
c_charge_full TYPE ty_charge VALUE '50.00',
|
||||
c_surch_long TYPE ty_charge VALUE '10.00',
|
||||
c_surch_curly TYPE ty_charge VALUE '15.00',
|
||||
c_surch_heavy TYPE ty_charge VALUE '20.00',
|
||||
c_discount TYPE ty_charge VALUE '5.00',
|
||||
c_heavy_kg TYPE {{p}}groom-weight_kg VALUE '25.0'.
|
||||
METHODS bill
|
||||
IMPORTING iv_date TYPE d
|
||||
it_pet TYPE tt_pet
|
||||
RETURNING VALUE(rt_lines) TYPE tt_line.
|
||||
METHODS display
|
||||
CHANGING ct_lines TYPE tt_line.
|
||||
PRIVATE SECTION.
|
||||
METHODS charge_of
|
||||
IMPORTING is_groom TYPE {{p}}groom
|
||||
RETURNING VALUE(rv_charge) TYPE ty_charge.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_groom_bill IMPLEMENTATION.
|
||||
METHOD bill.
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
|
||||
SELECT *
|
||||
FROM {{p}}groom
|
||||
WHERE visit_date = @iv_date
|
||||
AND pet IN @it_pet
|
||||
ORDER BY groom_id
|
||||
INTO TABLE @lt_groom.
|
||||
|
||||
rt_lines = VALUE #(
|
||||
FOR ls_groom IN lt_groom
|
||||
( groom_id = ls_groom-groom_id
|
||||
pet = ls_groom-pet
|
||||
service = ls_groom-service
|
||||
charge = charge_of( ls_groom ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charge_of.
|
||||
IF is_groom-service = c_service_full.
|
||||
rv_charge = c_charge_full.
|
||||
ELSEIF is_groom-service = c_service_basic.
|
||||
rv_charge = c_charge_basic.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-coat <> c_coat_long.
|
||||
rv_charge = rv_charge + c_surch_long.
|
||||
ELSEIF is_groom-coat = c_coat_curly.
|
||||
rv_charge = rv_charge + c_surch_curly.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-weight_kg > c_heavy_kg.
|
||||
rv_charge = rv_charge + c_surch_heavy.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-service = c_service_full AND is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge - c_discount.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD display.
|
||||
TRY.
|
||||
cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv)
|
||||
CHANGING t_table = ct_lines ).
|
||||
lo_alv->display( ).
|
||||
CATCH cx_salv_msg INTO DATA(lx_msg).
|
||||
MESSAGE lx_msg TYPE 'I' DISPLAY LIKE 'E'.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
START-OF-SELECTION.
|
||||
DATA(go_bill) = NEW lcl_groom_bill( ).
|
||||
DATA(gt_lines) = go_bill->bill( iv_date = p_date it_pet = s_pet[] ).
|
||||
go_bill->display( CHANGING ct_lines = gt_lines ).
|
||||
|
||||
CLASS ltc_bill DEFINITION FINAL 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 charges FOR TESTING.
|
||||
METHODS pet_filter FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltc_bill IMPLEMENTATION.
|
||||
METHOD class_setup.
|
||||
go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}GROOM' ) ) ).
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
lt_groom = VALUE #(
|
||||
( groom_id = 1 pet = 'DOG' coat = 'SHORT' weight_kg = '10.0' service = 'BASIC' visit_date = '20260401' )
|
||||
( groom_id = 2 pet = 'CAT' coat = 'CURLY' weight_kg = '30.0' service = 'FULL' visit_date = '20260401' )
|
||||
( groom_id = 3 pet = 'CAT' coat = 'LONG' weight_kg = '5.0' service = 'FULL' visit_date = '20260331' ) ).
|
||||
go_env->insert_test_data( lt_groom ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_teardown.
|
||||
go_env->destroy( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charges.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill( iv_date = '20260401' it_pet = VALUE #( ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '30.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 2 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD pet_filter.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill(
|
||||
iv_date = '20260401' it_pet = VALUE #( ( sign = 'I' option = 'EQ' low = 'CAT' ) ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
137
tasks_gen/train/G1130/faulty/m2_groom_bill_old.prog.abap
Normal file
137
tasks_gen/train/G1130/faulty/m2_groom_bill_old.prog.abap
Normal file
@@ -0,0 +1,137 @@
|
||||
REPORT {{p}}groom_bill_old.
|
||||
|
||||
TYPES: ty_charge TYPE p LENGTH 9 DECIMALS 2,
|
||||
BEGIN OF ty_line,
|
||||
groom_id TYPE {{p}}groom-groom_id,
|
||||
pet TYPE {{p}}groom-pet,
|
||||
service TYPE {{p}}groom-service,
|
||||
charge TYPE ty_charge,
|
||||
END OF ty_line,
|
||||
tt_line TYPE STANDARD TABLE OF ty_line WITH EMPTY KEY,
|
||||
tt_pet TYPE RANGE OF {{p}}groom-pet.
|
||||
|
||||
DATA gv_pet TYPE {{p}}groom-pet.
|
||||
|
||||
PARAMETERS p_date TYPE d OBLIGATORY.
|
||||
SELECT-OPTIONS s_pet FOR gv_pet.
|
||||
|
||||
CLASS lcl_groom_bill DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: c_service_basic TYPE {{p}}groom-service VALUE 'BASIC',
|
||||
c_service_full TYPE {{p}}groom-service VALUE 'FULL',
|
||||
c_coat_long TYPE {{p}}groom-coat VALUE 'LONG',
|
||||
c_coat_curly TYPE {{p}}groom-coat VALUE 'CURLY',
|
||||
c_charge_basic TYPE ty_charge VALUE '30.00',
|
||||
c_charge_full TYPE ty_charge VALUE '50.00',
|
||||
c_surch_long TYPE ty_charge VALUE '10.00',
|
||||
c_surch_curly TYPE ty_charge VALUE '15.00',
|
||||
c_surch_heavy TYPE ty_charge VALUE '20.00',
|
||||
c_discount TYPE ty_charge VALUE '5.00',
|
||||
c_heavy_kg TYPE {{p}}groom-weight_kg VALUE '25.0'.
|
||||
METHODS bill
|
||||
IMPORTING iv_date TYPE d
|
||||
it_pet TYPE tt_pet
|
||||
RETURNING VALUE(rt_lines) TYPE tt_line.
|
||||
METHODS display
|
||||
CHANGING ct_lines TYPE tt_line.
|
||||
PRIVATE SECTION.
|
||||
METHODS charge_of
|
||||
IMPORTING is_groom TYPE {{p}}groom
|
||||
RETURNING VALUE(rv_charge) TYPE ty_charge.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_groom_bill IMPLEMENTATION.
|
||||
METHOD bill.
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
|
||||
SELECT *
|
||||
FROM {{p}}groom
|
||||
WHERE visit_date = @iv_date
|
||||
AND pet IN @it_pet
|
||||
ORDER BY groom_id
|
||||
INTO TABLE @lt_groom.
|
||||
|
||||
rt_lines = VALUE #(
|
||||
FOR ls_groom IN lt_groom
|
||||
( groom_id = ls_groom-groom_id
|
||||
pet = ls_groom-pet
|
||||
service = ls_groom-service
|
||||
charge = charge_of( ls_groom ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charge_of.
|
||||
IF is_groom-service = c_service_full.
|
||||
rv_charge = c_charge_full.
|
||||
ELSEIF is_groom-service = c_service_basic.
|
||||
rv_charge = c_charge_basic.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge - c_surch_long.
|
||||
ELSEIF is_groom-coat = c_coat_curly.
|
||||
rv_charge = rv_charge + c_surch_curly.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-weight_kg > c_heavy_kg.
|
||||
rv_charge = rv_charge + c_surch_heavy.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-service = c_service_full AND is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge - c_discount.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD display.
|
||||
TRY.
|
||||
cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv)
|
||||
CHANGING t_table = ct_lines ).
|
||||
lo_alv->display( ).
|
||||
CATCH cx_salv_msg INTO DATA(lx_msg).
|
||||
MESSAGE lx_msg TYPE 'I' DISPLAY LIKE 'E'.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
START-OF-SELECTION.
|
||||
DATA(go_bill) = NEW lcl_groom_bill( ).
|
||||
DATA(gt_lines) = go_bill->bill( iv_date = p_date it_pet = s_pet[] ).
|
||||
go_bill->display( CHANGING ct_lines = gt_lines ).
|
||||
|
||||
CLASS ltc_bill DEFINITION FINAL 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 charges FOR TESTING.
|
||||
METHODS pet_filter FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltc_bill IMPLEMENTATION.
|
||||
METHOD class_setup.
|
||||
go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}GROOM' ) ) ).
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
lt_groom = VALUE #(
|
||||
( groom_id = 1 pet = 'DOG' coat = 'SHORT' weight_kg = '10.0' service = 'BASIC' visit_date = '20260401' )
|
||||
( groom_id = 2 pet = 'CAT' coat = 'CURLY' weight_kg = '30.0' service = 'FULL' visit_date = '20260401' )
|
||||
( groom_id = 3 pet = 'CAT' coat = 'LONG' weight_kg = '5.0' service = 'FULL' visit_date = '20260331' ) ).
|
||||
go_env->insert_test_data( lt_groom ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_teardown.
|
||||
go_env->destroy( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charges.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill( iv_date = '20260401' it_pet = VALUE #( ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '30.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 2 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD pet_filter.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill(
|
||||
iv_date = '20260401' it_pet = VALUE #( ( sign = 'I' option = 'EQ' low = 'CAT' ) ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
137
tasks_gen/train/G1130/faulty/m3_groom_bill_old.prog.abap
Normal file
137
tasks_gen/train/G1130/faulty/m3_groom_bill_old.prog.abap
Normal file
@@ -0,0 +1,137 @@
|
||||
REPORT {{p}}groom_bill_old.
|
||||
|
||||
TYPES: ty_charge TYPE p LENGTH 9 DECIMALS 2,
|
||||
BEGIN OF ty_line,
|
||||
groom_id TYPE {{p}}groom-groom_id,
|
||||
pet TYPE {{p}}groom-pet,
|
||||
service TYPE {{p}}groom-service,
|
||||
charge TYPE ty_charge,
|
||||
END OF ty_line,
|
||||
tt_line TYPE STANDARD TABLE OF ty_line WITH EMPTY KEY,
|
||||
tt_pet TYPE RANGE OF {{p}}groom-pet.
|
||||
|
||||
DATA gv_pet TYPE {{p}}groom-pet.
|
||||
|
||||
PARAMETERS p_date TYPE d OBLIGATORY.
|
||||
SELECT-OPTIONS s_pet FOR gv_pet.
|
||||
|
||||
CLASS lcl_groom_bill DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: c_service_basic TYPE {{p}}groom-service VALUE 'BASIC',
|
||||
c_service_full TYPE {{p}}groom-service VALUE 'FULL',
|
||||
c_coat_long TYPE {{p}}groom-coat VALUE 'LONG',
|
||||
c_coat_curly TYPE {{p}}groom-coat VALUE 'CURLY',
|
||||
c_charge_basic TYPE ty_charge VALUE '30.00',
|
||||
c_charge_full TYPE ty_charge VALUE '50.00',
|
||||
c_surch_long TYPE ty_charge VALUE '10.00',
|
||||
c_surch_curly TYPE ty_charge VALUE '15.00',
|
||||
c_surch_heavy TYPE ty_charge VALUE '20.00',
|
||||
c_discount TYPE ty_charge VALUE '5.00',
|
||||
c_heavy_kg TYPE {{p}}groom-weight_kg VALUE '25.0'.
|
||||
METHODS bill
|
||||
IMPORTING iv_date TYPE d
|
||||
it_pet TYPE tt_pet
|
||||
RETURNING VALUE(rt_lines) TYPE tt_line.
|
||||
METHODS display
|
||||
CHANGING ct_lines TYPE tt_line.
|
||||
PRIVATE SECTION.
|
||||
METHODS charge_of
|
||||
IMPORTING is_groom TYPE {{p}}groom
|
||||
RETURNING VALUE(rv_charge) TYPE ty_charge.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_groom_bill IMPLEMENTATION.
|
||||
METHOD bill.
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
|
||||
SELECT *
|
||||
FROM {{p}}groom
|
||||
WHERE visit_date = @iv_date
|
||||
AND pet IN @it_pet
|
||||
ORDER BY groom_id
|
||||
INTO TABLE @lt_groom.
|
||||
|
||||
rt_lines = VALUE #(
|
||||
FOR ls_groom IN lt_groom
|
||||
( groom_id = ls_groom-groom_id
|
||||
pet = ls_groom-pet
|
||||
service = ls_groom-service
|
||||
charge = charge_of( ls_groom ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charge_of.
|
||||
IF is_groom-service = c_service_full.
|
||||
rv_charge = c_charge_full.
|
||||
ELSEIF is_groom-service = c_service_basic.
|
||||
rv_charge = c_charge_basic.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge + c_surch_long.
|
||||
ELSEIF is_groom-coat = c_coat_curly.
|
||||
rv_charge = rv_charge + c_surch_curly.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-weight_kg <= c_heavy_kg.
|
||||
rv_charge = rv_charge + c_surch_heavy.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-service = c_service_full AND is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge - c_discount.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD display.
|
||||
TRY.
|
||||
cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv)
|
||||
CHANGING t_table = ct_lines ).
|
||||
lo_alv->display( ).
|
||||
CATCH cx_salv_msg INTO DATA(lx_msg).
|
||||
MESSAGE lx_msg TYPE 'I' DISPLAY LIKE 'E'.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
START-OF-SELECTION.
|
||||
DATA(go_bill) = NEW lcl_groom_bill( ).
|
||||
DATA(gt_lines) = go_bill->bill( iv_date = p_date it_pet = s_pet[] ).
|
||||
go_bill->display( CHANGING ct_lines = gt_lines ).
|
||||
|
||||
CLASS ltc_bill DEFINITION FINAL 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 charges FOR TESTING.
|
||||
METHODS pet_filter FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltc_bill IMPLEMENTATION.
|
||||
METHOD class_setup.
|
||||
go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}GROOM' ) ) ).
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
lt_groom = VALUE #(
|
||||
( groom_id = 1 pet = 'DOG' coat = 'SHORT' weight_kg = '10.0' service = 'BASIC' visit_date = '20260401' )
|
||||
( groom_id = 2 pet = 'CAT' coat = 'CURLY' weight_kg = '30.0' service = 'FULL' visit_date = '20260401' )
|
||||
( groom_id = 3 pet = 'CAT' coat = 'LONG' weight_kg = '5.0' service = 'FULL' visit_date = '20260331' ) ).
|
||||
go_env->insert_test_data( lt_groom ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_teardown.
|
||||
go_env->destroy( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charges.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill( iv_date = '20260401' it_pet = VALUE #( ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '30.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 2 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD pet_filter.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill(
|
||||
iv_date = '20260401' it_pet = VALUE #( ( sign = 'I' option = 'EQ' low = 'CAT' ) ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
137
tasks_gen/train/G1130/faulty/m4_groom_bill_old.prog.abap
Normal file
137
tasks_gen/train/G1130/faulty/m4_groom_bill_old.prog.abap
Normal file
@@ -0,0 +1,137 @@
|
||||
REPORT {{p}}groom_bill_old.
|
||||
|
||||
TYPES: ty_charge TYPE p LENGTH 9 DECIMALS 2,
|
||||
BEGIN OF ty_line,
|
||||
groom_id TYPE {{p}}groom-groom_id,
|
||||
pet TYPE {{p}}groom-pet,
|
||||
service TYPE {{p}}groom-service,
|
||||
charge TYPE ty_charge,
|
||||
END OF ty_line,
|
||||
tt_line TYPE STANDARD TABLE OF ty_line WITH EMPTY KEY,
|
||||
tt_pet TYPE RANGE OF {{p}}groom-pet.
|
||||
|
||||
DATA gv_pet TYPE {{p}}groom-pet.
|
||||
|
||||
PARAMETERS p_date TYPE d OBLIGATORY.
|
||||
SELECT-OPTIONS s_pet FOR gv_pet.
|
||||
|
||||
CLASS lcl_groom_bill DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: c_service_basic TYPE {{p}}groom-service VALUE 'BASIC',
|
||||
c_service_full TYPE {{p}}groom-service VALUE 'FULL',
|
||||
c_coat_long TYPE {{p}}groom-coat VALUE 'LONG',
|
||||
c_coat_curly TYPE {{p}}groom-coat VALUE 'CURLY',
|
||||
c_charge_basic TYPE ty_charge VALUE '30.00',
|
||||
c_charge_full TYPE ty_charge VALUE '50.00',
|
||||
c_surch_long TYPE ty_charge VALUE '10.00',
|
||||
c_surch_curly TYPE ty_charge VALUE '15.00',
|
||||
c_surch_heavy TYPE ty_charge VALUE '20.00',
|
||||
c_discount TYPE ty_charge VALUE '5.00',
|
||||
c_heavy_kg TYPE {{p}}groom-weight_kg VALUE '25.0'.
|
||||
METHODS bill
|
||||
IMPORTING iv_date TYPE d
|
||||
it_pet TYPE tt_pet
|
||||
RETURNING VALUE(rt_lines) TYPE tt_line.
|
||||
METHODS display
|
||||
CHANGING ct_lines TYPE tt_line.
|
||||
PRIVATE SECTION.
|
||||
METHODS charge_of
|
||||
IMPORTING is_groom TYPE {{p}}groom
|
||||
RETURNING VALUE(rv_charge) TYPE ty_charge.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_groom_bill IMPLEMENTATION.
|
||||
METHOD bill.
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
|
||||
SELECT *
|
||||
FROM {{p}}groom
|
||||
WHERE visit_date = @iv_date
|
||||
AND pet IN @it_pet
|
||||
ORDER BY groom_id
|
||||
INTO TABLE @lt_groom.
|
||||
|
||||
rt_lines = VALUE #(
|
||||
FOR ls_groom IN lt_groom
|
||||
( groom_id = ls_groom-groom_id
|
||||
pet = ls_groom-pet
|
||||
service = ls_groom-service
|
||||
charge = charge_of( ls_groom ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charge_of.
|
||||
IF is_groom-service = c_service_full.
|
||||
rv_charge = c_charge_full.
|
||||
ELSEIF is_groom-service = c_service_basic.
|
||||
rv_charge = c_charge_basic.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge + c_surch_long.
|
||||
ELSEIF is_groom-coat = c_coat_curly.
|
||||
rv_charge = rv_charge + c_surch_curly.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-weight_kg > c_heavy_kg.
|
||||
rv_charge = rv_charge + c_surch_heavy.
|
||||
ENDIF.
|
||||
|
||||
IF is_groom-service = c_service_full OR is_groom-coat = c_coat_long.
|
||||
rv_charge = rv_charge - c_discount.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD display.
|
||||
TRY.
|
||||
cl_salv_table=>factory( IMPORTING r_salv_table = DATA(lo_alv)
|
||||
CHANGING t_table = ct_lines ).
|
||||
lo_alv->display( ).
|
||||
CATCH cx_salv_msg INTO DATA(lx_msg).
|
||||
MESSAGE lx_msg TYPE 'I' DISPLAY LIKE 'E'.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
START-OF-SELECTION.
|
||||
DATA(go_bill) = NEW lcl_groom_bill( ).
|
||||
DATA(gt_lines) = go_bill->bill( iv_date = p_date it_pet = s_pet[] ).
|
||||
go_bill->display( CHANGING ct_lines = gt_lines ).
|
||||
|
||||
CLASS ltc_bill DEFINITION FINAL 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 charges FOR TESTING.
|
||||
METHODS pet_filter FOR TESTING.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltc_bill IMPLEMENTATION.
|
||||
METHOD class_setup.
|
||||
go_env = cl_osql_test_environment=>create( i_dependency_list = VALUE #( ( '{{P}}GROOM' ) ) ).
|
||||
DATA lt_groom TYPE STANDARD TABLE OF {{p}}groom WITH EMPTY KEY.
|
||||
lt_groom = VALUE #(
|
||||
( groom_id = 1 pet = 'DOG' coat = 'SHORT' weight_kg = '10.0' service = 'BASIC' visit_date = '20260401' )
|
||||
( groom_id = 2 pet = 'CAT' coat = 'CURLY' weight_kg = '30.0' service = 'FULL' visit_date = '20260401' )
|
||||
( groom_id = 3 pet = 'CAT' coat = 'LONG' weight_kg = '5.0' service = 'FULL' visit_date = '20260331' ) ).
|
||||
go_env->insert_test_data( lt_groom ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD class_teardown.
|
||||
go_env->destroy( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD charges.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill( iv_date = '20260401' it_pet = VALUE #( ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '30.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 2 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD pet_filter.
|
||||
DATA(lt_lines) = NEW lcl_groom_bill( )->bill(
|
||||
iv_date = '20260401' it_pet = VALUE #( ( sign = 'I' option = 'EQ' low = 'CAT' ) ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = 1 act = lines( lt_lines ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = '85.00' act = |{ lt_lines[ 1 ]-charge }| ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user