Stage 2 summary at 50 accepted trajectories

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 18:02:52 +02:00
parent 332fb4601d
commit 5bcd1bf9cd
1230 changed files with 77563 additions and 33 deletions

View File

@@ -0,0 +1,51 @@
FUNCTION {{p}}sewer_fee
IMPORTING
iv_tank_litres TYPE i
iv_distance_km TYPE i
iv_mains_sewer TYPE abap_bool
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_fee TYPE decfloat34
EXCEPTIONS
invalid_litres.
CONSTANTS c_base_fee TYPE decfloat34 VALUE '75'.
CONSTANTS c_step_fee TYPE decfloat34 VALUE '20'.
CONSTANTS c_step_litres TYPE i VALUE 500.
CONSTANTS c_km_rate TYPE decfloat34 VALUE '1.5'.
CONSTANTS c_travel_max TYPE decfloat34 VALUE '60'.
CONSTANTS c_fee_max TYPE decfloat34 VALUE '900'.
DATA lv_steps TYPE i.
DATA lv_travel TYPE decfloat34.
ev_skip = abap_true.
IF iv_tank_litres < 1.
RAISE invalid_litres.
ENDIF.
IF iv_mains_sewer = abap_true.
ev_skip = abap_true.
RETURN.
ENDIF.
cv_fee = c_base_fee.
IF iv_tank_litres > 1000.
lv_steps = ( iv_tank_litres - 1001 ) DIV c_step_litres + 1.
cv_fee = cv_fee + lv_steps * c_step_fee.
ENDIF.
IF iv_distance_km > 0.
lv_travel = iv_distance_km * c_km_rate.
IF lv_travel > c_travel_max.
lv_travel = c_travel_max.
ENDIF.
cv_fee = cv_fee + lv_travel.
ENDIF.
IF cv_fee > c_fee_max.
cv_fee = c_fee_max.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,51 @@
FUNCTION {{p}}sewer_fee
IMPORTING
iv_tank_litres TYPE i
iv_distance_km TYPE i
iv_mains_sewer TYPE abap_bool
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_fee TYPE decfloat34
EXCEPTIONS
invalid_litres.
CONSTANTS c_base_fee TYPE decfloat34 VALUE '75'.
CONSTANTS c_step_fee TYPE decfloat34 VALUE '20'.
CONSTANTS c_step_litres TYPE i VALUE 500.
CONSTANTS c_km_rate TYPE decfloat34 VALUE '1.5'.
CONSTANTS c_travel_max TYPE decfloat34 VALUE '60'.
CONSTANTS c_fee_max TYPE decfloat34 VALUE '900'.
DATA lv_steps TYPE i.
DATA lv_travel TYPE decfloat34.
ev_skip = abap_false.
IF iv_tank_litres < 1.
RAISE invalid_litres.
ENDIF.
IF iv_mains_sewer <> abap_true.
ev_skip = abap_true.
RETURN.
ENDIF.
cv_fee = c_base_fee.
IF iv_tank_litres > 1000.
lv_steps = ( iv_tank_litres - 1001 ) DIV c_step_litres + 1.
cv_fee = cv_fee + lv_steps * c_step_fee.
ENDIF.
IF iv_distance_km > 0.
lv_travel = iv_distance_km * c_km_rate.
IF lv_travel > c_travel_max.
lv_travel = c_travel_max.
ENDIF.
cv_fee = cv_fee + lv_travel.
ENDIF.
IF cv_fee > c_fee_max.
cv_fee = c_fee_max.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,51 @@
FUNCTION {{p}}sewer_fee
IMPORTING
iv_tank_litres TYPE i
iv_distance_km TYPE i
iv_mains_sewer TYPE abap_bool
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_fee TYPE decfloat34
EXCEPTIONS
invalid_litres.
CONSTANTS c_base_fee TYPE decfloat34 VALUE '75'.
CONSTANTS c_step_fee TYPE decfloat34 VALUE '20'.
CONSTANTS c_step_litres TYPE i VALUE 500.
CONSTANTS c_km_rate TYPE decfloat34 VALUE '1.5'.
CONSTANTS c_travel_max TYPE decfloat34 VALUE '60'.
CONSTANTS c_fee_max TYPE decfloat34 VALUE '900'.
DATA lv_steps TYPE i.
DATA lv_travel TYPE decfloat34.
ev_skip = abap_false.
IF iv_tank_litres < 1.
RAISE invalid_litres.
ENDIF.
IF iv_mains_sewer = abap_true.
ev_skip = abap_true.
RETURN.
ENDIF.
cv_fee = c_base_fee.
IF iv_tank_litres <= 1000.
lv_steps = ( iv_tank_litres - 1001 ) DIV c_step_litres + 1.
cv_fee = cv_fee + lv_steps * c_step_fee.
ENDIF.
IF iv_distance_km > 0.
lv_travel = iv_distance_km * c_km_rate.
IF lv_travel > c_travel_max.
lv_travel = c_travel_max.
ENDIF.
cv_fee = cv_fee + lv_travel.
ENDIF.
IF cv_fee > c_fee_max.
cv_fee = c_fee_max.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,51 @@
FUNCTION {{p}}sewer_fee
IMPORTING
iv_tank_litres TYPE i
iv_distance_km TYPE i
iv_mains_sewer TYPE abap_bool
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_fee TYPE decfloat34
EXCEPTIONS
invalid_litres.
CONSTANTS c_base_fee TYPE decfloat34 VALUE '75'.
CONSTANTS c_step_fee TYPE decfloat34 VALUE '20'.
CONSTANTS c_step_litres TYPE i VALUE 500.
CONSTANTS c_km_rate TYPE decfloat34 VALUE '1.5'.
CONSTANTS c_travel_max TYPE decfloat34 VALUE '60'.
CONSTANTS c_fee_max TYPE decfloat34 VALUE '900'.
DATA lv_steps TYPE i.
DATA lv_travel TYPE decfloat34.
ev_skip = abap_false.
IF iv_tank_litres < 1.
RAISE invalid_litres.
ENDIF.
IF iv_mains_sewer = abap_true.
ev_skip = abap_true.
RETURN.
ENDIF.
cv_fee = c_base_fee.
IF iv_tank_litres > 1000.
lv_steps = ( iv_tank_litres - 1002 ) DIV c_step_litres + 1.
cv_fee = cv_fee + lv_steps * c_step_fee.
ENDIF.
IF iv_distance_km > 0.
lv_travel = iv_distance_km * c_km_rate.
IF lv_travel > c_travel_max.
lv_travel = c_travel_max.
ENDIF.
cv_fee = cv_fee + lv_travel.
ENDIF.
IF cv_fee > c_fee_max.
cv_fee = c_fee_max.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,51 @@
FUNCTION {{p}}sewer_fee
IMPORTING
iv_tank_litres TYPE i
iv_distance_km TYPE i
iv_mains_sewer TYPE abap_bool
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_fee TYPE decfloat34
EXCEPTIONS
invalid_litres.
CONSTANTS c_base_fee TYPE decfloat34 VALUE '75'.
CONSTANTS c_step_fee TYPE decfloat34 VALUE '20'.
CONSTANTS c_step_litres TYPE i VALUE 500.
CONSTANTS c_km_rate TYPE decfloat34 VALUE '1.5'.
CONSTANTS c_travel_max TYPE decfloat34 VALUE '60'.
CONSTANTS c_fee_max TYPE decfloat34 VALUE '900'.
DATA lv_steps TYPE i.
DATA lv_travel TYPE decfloat34.
ev_skip = abap_false.
IF iv_tank_litres < 1.
RAISE invalid_litres.
ENDIF.
IF iv_mains_sewer = abap_true.
ev_skip = abap_true.
RETURN.
ENDIF.
cv_fee = c_base_fee.
IF iv_tank_litres > 1000.
lv_steps = ( iv_tank_litres - 1001 ) DIV c_step_litres + 1.
cv_fee = cv_fee - lv_steps * c_step_fee.
ENDIF.
IF iv_distance_km > 0.
lv_travel = iv_distance_km * c_km_rate.
IF lv_travel > c_travel_max.
lv_travel = c_travel_max.
ENDIF.
cv_fee = cv_fee + lv_travel.
ENDIF.
IF cv_fee > c_fee_max.
cv_fee = c_fee_max.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,30 @@
{
"id": "G1078",
"pool": "train",
"object_type": "FUNC",
"category": "G",
"attempts": [
{
"stage": "bundle",
"errors": [
"Too close to task T13 (similarity spec 0.68, rules 0.62, names 0.33). Choose a different business topic and different object names.",
"Too close to task G0151 (similarity spec 0.66, rules 0.61, names 0.33). Choose a different business topic and different object names.",
"Too close to task G0156 (similarity spec 0.65, rules 0.60, names 0.33). Choose a different business topic and different object names."
],
"by_check": {
"extra": 3
}
},
{
"stage": "validate",
"oracle": 100.0,
"null": 0,
"mutation": {
"valid": 5,
"killed": 5,
"ok": true
}
}
],
"accepted": true
}

View File

@@ -0,0 +1,97 @@
CLASS {{p}}sewer_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS call
IMPORTING
iv_litres TYPE i
iv_km TYPE i DEFAULT 0
iv_mains TYPE abap_bool DEFAULT abap_false
iv_fee TYPE decfloat34 DEFAULT 7
EXPORTING
ev_skip TYPE abap_bool
ev_fee TYPE decfloat34
ev_subrc TYPE sysubrc.
METHODS base_fee FOR TESTING.
METHODS volume_steps FOR TESTING.
METHODS travel_fee FOR TESTING.
METHODS travel_cap FOR TESTING.
METHODS large_tank FOR TESTING.
METHODS fee_cap FOR TESTING.
METHODS mains_sewer_skips FOR TESTING.
METHODS skip_false FOR TESTING.
METHODS invalid_litres FOR TESTING.
ENDCLASS.
CLASS {{p}}sewer_hidden IMPLEMENTATION.
METHOD call.
ev_fee = iv_fee.
CALL FUNCTION '{{P}}SEWER_FEE'
EXPORTING
iv_tank_litres = iv_litres
iv_distance_km = iv_km
iv_mains_sewer = iv_mains
IMPORTING
ev_skip = ev_skip
CHANGING
cv_fee = ev_fee
EXCEPTIONS
invalid_litres = 1
OTHERS = 2.
ev_subrc = sy-subrc.
ENDMETHOD.
METHOD base_fee.
call( EXPORTING iv_litres = 800
IMPORTING ev_fee = DATA(lv_fee) ev_skip = DATA(lv_skip) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 75 ) act = lv_fee ).
cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_skip ).
ENDMETHOD.
METHOD volume_steps.
call( EXPORTING iv_litres = 1001 IMPORTING ev_fee = DATA(lv_a) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 95 ) act = lv_a ).
call( EXPORTING iv_litres = 1500 IMPORTING ev_fee = DATA(lv_b) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 95 ) act = lv_b ).
call( EXPORTING iv_litres = 1501 IMPORTING ev_fee = DATA(lv_c) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 115 ) act = lv_c ).
ENDMETHOD.
METHOD travel_fee.
call( EXPORTING iv_litres = 1000 iv_km = 10 IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 90 ) act = lv_fee ).
ENDMETHOD.
METHOD travel_cap.
call( EXPORTING iv_litres = 1000 iv_km = 50 IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 135 ) act = lv_fee ).
ENDMETHOD.
METHOD large_tank.
call( EXPORTING iv_litres = 20000 IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 835 ) act = lv_fee ).
ENDMETHOD.
METHOD fee_cap.
call( EXPORTING iv_litres = 30000 IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 900 ) act = lv_fee ).
ENDMETHOD.
METHOD mains_sewer_skips.
call( EXPORTING iv_litres = 2000 iv_km = 20 iv_mains = abap_true iv_fee = 7
IMPORTING ev_skip = DATA(lv_skip) ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_true( lv_skip ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 7 ) act = lv_fee ).
ENDMETHOD.
METHOD skip_false.
call( EXPORTING iv_litres = 1000 iv_km = 5
IMPORTING ev_skip = DATA(lv_skip) ).
cl_abap_unit_assert=>assert_equals( exp = abap_false act = lv_skip ).
ENDMETHOD.
METHOD invalid_litres.
call( EXPORTING iv_litres = 0 IMPORTING ev_subrc = DATA(lv_rc) ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_rc ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,66 @@
{
"task": "G1078",
"mutants": [
{
"object": "{{P}}SEWER_FEE",
"mutant": "line 22: abap_false -> abap_true (bool)",
"status": "killed",
"hidden": "7/9",
"failed_tests": [
"BASE_FEE",
"SKIP_FALSE"
]
},
{
"object": "{{P}}SEWER_FEE",
"mutant": "line 28: = -> <> (eq)",
"status": "killed",
"hidden": "1/9",
"failed_tests": [
"BASE_FEE",
"FEE_CAP",
"LARGE_TANK",
"MAINS_SEWER_SKIPS",
"SKIP_FALSE",
"TRAVEL_CAP",
"TRAVEL_FEE",
"VOLUME_STEPS"
]
},
{
"object": "{{P}}SEWER_FEE",
"mutant": "line 34: > -> <= (rel)",
"status": "killed",
"hidden": "6/9",
"failed_tests": [
"FEE_CAP",
"LARGE_TANK",
"VOLUME_STEPS"
]
},
{
"object": "{{P}}SEWER_FEE",
"mutant": "line 35: 1001 -> 1002 (const)",
"status": "killed",
"hidden": "8/9",
"failed_tests": [
"VOLUME_STEPS"
]
},
{
"object": "{{P}}SEWER_FEE",
"mutant": "line 36: + -> - (arith)",
"status": "killed",
"hidden": "6/9",
"failed_tests": [
"FEE_CAP",
"LARGE_TANK",
"VOLUME_STEPS"
]
}
],
"valid": 5,
"killed": 5,
"kill_rate": 1.0,
"ok": true
}

View File

@@ -0,0 +1,51 @@
FUNCTION {{p}}sewer_fee
IMPORTING
iv_tank_litres TYPE i
iv_distance_km TYPE i
iv_mains_sewer TYPE abap_bool
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_fee TYPE decfloat34
EXCEPTIONS
invalid_litres.
CONSTANTS c_base_fee TYPE decfloat34 VALUE '75'.
CONSTANTS c_step_fee TYPE decfloat34 VALUE '20'.
CONSTANTS c_step_litres TYPE i VALUE 500.
CONSTANTS c_km_rate TYPE decfloat34 VALUE '1.5'.
CONSTANTS c_travel_max TYPE decfloat34 VALUE '60'.
CONSTANTS c_fee_max TYPE decfloat34 VALUE '900'.
DATA lv_steps TYPE i.
DATA lv_travel TYPE decfloat34.
ev_skip = abap_false.
IF iv_tank_litres < 1.
RAISE invalid_litres.
ENDIF.
IF iv_mains_sewer = abap_true.
ev_skip = abap_true.
RETURN.
ENDIF.
cv_fee = c_base_fee.
IF iv_tank_litres > 1000.
lv_steps = ( iv_tank_litres - 1001 ) DIV c_step_litres + 1.
cv_fee = cv_fee + lv_steps * c_step_fee.
ENDIF.
IF iv_distance_km > 0.
lv_travel = iv_distance_km * c_km_rate.
IF lv_travel > c_travel_max.
lv_travel = c_travel_max.
ENDIF.
cv_fee = cv_fee + lv_travel.
ENDIF.
IF cv_fee > c_fee_max.
cv_fee = c_fee_max.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,93 @@
CLASS {{p}}sewer_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS fee_for
IMPORTING
iv_litres TYPE i
iv_km TYPE i DEFAULT 0
RETURNING VALUE(rv_fee) TYPE decfloat34.
METHODS base_fee FOR TESTING.
METHODS volume_steps FOR TESTING.
METHODS travel_fee FOR TESTING.
METHODS fee_cap FOR TESTING.
METHODS mains_sewer FOR TESTING.
METHODS invalid_litres FOR TESTING.
ENDCLASS.
CLASS {{p}}sewer_test IMPLEMENTATION.
METHOD fee_for.
DATA lv_skip TYPE abap_bool.
CALL FUNCTION '{{P}}SEWER_FEE'
EXPORTING
iv_tank_litres = iv_litres
iv_distance_km = iv_km
iv_mains_sewer = abap_false
IMPORTING
ev_skip = lv_skip
CHANGING
cv_fee = rv_fee
EXCEPTIONS
invalid_litres = 1
OTHERS = 2.
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
ENDMETHOD.
METHOD base_fee.
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( 75 )
act = fee_for( iv_litres = 1000 ) ).
ENDMETHOD.
METHOD volume_steps.
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( 95 )
act = fee_for( iv_litres = 1500 ) ).
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( 115 )
act = fee_for( iv_litres = 1501 ) ).
ENDMETHOD.
METHOD travel_fee.
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( 90 )
act = fee_for( iv_litres = 1000 iv_km = 10 ) ).
ENDMETHOD.
METHOD fee_cap.
cl_abap_unit_assert=>assert_equals(
exp = CONV decfloat34( 900 )
act = fee_for( iv_litres = 30000 ) ).
ENDMETHOD.
METHOD mains_sewer.
DATA lv_fee TYPE decfloat34 VALUE 7.
DATA lv_skip TYPE abap_bool.
CALL FUNCTION '{{P}}SEWER_FEE'
EXPORTING
iv_tank_litres = 2000
iv_distance_km = 20
iv_mains_sewer = abap_true
IMPORTING
ev_skip = lv_skip
CHANGING
cv_fee = lv_fee.
cl_abap_unit_assert=>assert_true( lv_skip ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( 7 ) act = lv_fee ).
ENDMETHOD.
METHOD invalid_litres.
DATA lv_fee TYPE decfloat34.
CALL FUNCTION '{{P}}SEWER_FEE'
EXPORTING
iv_tank_litres = 0
iv_distance_km = 0
iv_mains_sewer = abap_false
CHANGING
cv_fee = lv_fee
EXCEPTIONS
invalid_litres = 1
OTHERS = 2.
cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,15 @@
FUNCTION {{p}}sewer_sample
IMPORTING
iv_tank_litres TYPE i
iv_distance_km TYPE i
iv_mains_sewer TYPE abap_bool
EXPORTING
ev_skip TYPE abap_bool
CHANGING
cv_fee TYPE decfloat34
EXCEPTIONS
invalid_litres.
ev_skip = abap_false.
ENDFUNCTION.

View File

@@ -0,0 +1,54 @@
# 1. Goal
Calculate the emptying fee for one septic tank. The depot program calls one
function module for each emptying job. The function module must have the same
interface as the sample function module, because the depot program calls all fee
modules in the same way.
# 2. Open questions
None.
# 3. Context
- Function group {{P}}FG_SEWER exists in package $TMP.
- Function module {{P}}SEWER_SAMPLE exists in this group. It is the sample fee
module. Its interface is the interface that all fee modules must use.
- A drainage company empties septic tanks. The depot program sends the size of
the tank, the distance from the depot, and the connection type of the
property.
# 4. Contract
- Create the function module {{P}}SEWER_FEE in function group {{P}}FG_SEWER.
- Use exactly the interface of {{P}}SEWER_SAMPLE:
- importing iv_tank_litres type i
- importing iv_distance_km type i
- importing iv_mains_sewer type abap_bool
- exporting ev_skip type abap_bool
- changing cv_fee type decfloat34
- exception invalid_litres
# 5. Business rules
1. If iv_tank_litres is less than 1, raise the exception INVALID_LITRES.
2. Set the skip flag to false. Rule 4 is the only exception.
3. The base fee is 75.00. The base fee covers the first 1000 litres of the
tank.
4. If the property is connected to the mains sewer, no emptying is necessary.
Set the skip flag to true and do not change the fee. Do not apply rules 5
to 7.
5. Each started 500 litres above 1000 litres adds 20.00 to the fee. Example:
1000 litres add 0.00, 1001 litres add 20.00, 1500 litres add 20.00, and
1501 litres add 40.00.
6. The travel fee is 1.50 for each kilometre of iv_distance_km. The travel fee
is not more than 60.00.
7. The fee is the base fee of rule 3 plus the volume fee of rule 5 plus the
travel fee of rule 6. The fee is not more than 900.00.
# 6. Constraints
- Release target: 7.40 SP05. Use only syntax that exists in 7.40 SP05. Do not
use syntax that is newer than 7.40 SP05.
- Out of scope: do not change {{P}}SEWER_SAMPLE.
- Coding standards: Clean ABAP. A method has less than 40 statements.
- Out of scope: no database access, no ALV, no dynpro.
# 7. Acceptance
- The function module {{P}}SEWER_FEE is active and has no syntax error.
- The hidden tests pass.
- Write ABAP Unit tests for the function module in a global test class.

View File

@@ -0,0 +1,85 @@
{
"id": "G1078",
"category": "G",
"object_type": "FUNC",
"difficulty": 2,
"release_target": "v740sp05",
"expected_outcome": "implement",
"budget": {
"max_tool_calls": 60,
"max_activations": 15
},
"seed": [
{
"type": "FUGR",
"name": "{{P}}FG_SEWER",
"description": "Fee modules of the drainage company"
},
{
"type": "FUNC",
"name": "{{P}}SEWER_SAMPLE",
"functionGroup": "{{P}}FG_SEWER",
"file": "seed/sewer_sample.func.abap",
"description": "Sample fee module with the interface of all fee modules"
}
],
"contract": [
{
"type": "FUNC",
"name": "{{P}}SEWER_FEE",
"functionGroup": "{{P}}FG_SEWER",
"params": [
{
"name": "iv_tank_litres",
"type": "i"
},
{
"name": "iv_distance_km",
"type": "i"
},
{
"name": "iv_mains_sewer",
"type": "abap_bool"
},
{
"name": "ev_skip",
"type": "abap_bool"
},
{
"name": "cv_fee",
"type": "decfloat34"
}
]
}
],
"out_of_scope": [
"{{P}}SEWER_SAMPLE"
],
"hidden_tests": [
{
"type": "CLAS",
"name": "{{P}}SEWER_HIDDEN",
"file": "hidden/sewer_hidden.clas.abap",
"description": "Hidden tests for {{P}}SEWER_FEE"
}
],
"reference": [
{
"type": "FUNC",
"name": "{{P}}SEWER_FEE",
"functionGroup": "{{P}}FG_SEWER",
"file": "reference/sewer_fee.func.abap",
"description": "Emptying fee module"
},
{
"type": "CLAS",
"name": "{{P}}SEWER_TEST",
"file": "reference/sewer_test.clas.abap",
"description": "Own tests for {{P}}SEWER_FEE"
}
],
"craft_checks": [
"method_length",
"no_newer_syntax"
]
}