Pipeline controller: plan 2 (hard +, error +50 %), backlog throttle, 2 trajectory workers, stop rules, summaries every 50; budget reserve

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 13:35:54 +02:00
parent 1c4667a0fc
commit 13360292dd
781 changed files with 50211 additions and 22 deletions

View File

@@ -0,0 +1,53 @@
FUNCTION {{p}}mkt_stall_fee
IMPORTING
iv_stall_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
EXCEPTIONS
invalid_days
invalid_size.
CONSTANTS c_small TYPE decfloat34 VALUE '12.00'.
CONSTANTS c_medium TYPE decfloat34 VALUE '20.00'.
CONSTANTS c_large TYPE decfloat34 VALUE '35.00'.
CONSTANTS c_power TYPE decfloat34 VALUE '2.50'.
CONSTANTS c_rebate TYPE decfloat34 VALUE '15'.
CONSTANTS c_hundred TYPE decfloat34 VALUE '100'.
DATA lv_daily_fee TYPE decfloat34.
DATA lv_total_fee TYPE decfloat34.
DATA lv_reduction TYPE decfloat34.
ev_fee = 0.
IF iv_days >= 1.
RAISE invalid_days.
ENDIF.
CASE iv_stall_size.
WHEN 'S'.
lv_daily_fee = c_small.
WHEN 'M'.
lv_daily_fee = c_medium.
WHEN 'L'.
lv_daily_fee = c_large.
WHEN OTHERS.
RAISE invalid_size.
ENDCASE.
IF iv_power = abap_true.
lv_daily_fee = lv_daily_fee + c_power.
ENDIF.
lv_total_fee = lv_daily_fee * iv_days.
IF iv_days >= 5.
lv_reduction = round( val = lv_total_fee * c_rebate / c_hundred dec = 2 ).
ev_fee = lv_total_fee - lv_reduction.
ELSE.
ev_fee = lv_total_fee.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,53 @@
FUNCTION {{p}}mkt_stall_fee
IMPORTING
iv_stall_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
EXCEPTIONS
invalid_days
invalid_size.
CONSTANTS c_small TYPE decfloat34 VALUE '12.00'.
CONSTANTS c_medium TYPE decfloat34 VALUE '20.00'.
CONSTANTS c_large TYPE decfloat34 VALUE '35.00'.
CONSTANTS c_power TYPE decfloat34 VALUE '2.50'.
CONSTANTS c_rebate TYPE decfloat34 VALUE '15'.
CONSTANTS c_hundred TYPE decfloat34 VALUE '100'.
DATA lv_daily_fee TYPE decfloat34.
DATA lv_total_fee TYPE decfloat34.
DATA lv_reduction TYPE decfloat34.
ev_fee = 0.
IF iv_days < 1.
RAISE invalid_days.
ENDIF.
CASE iv_stall_size.
WHEN 'S'.
lv_daily_fee = c_small.
WHEN 'M'.
lv_daily_fee = c_medium.
WHEN 'L'.
lv_daily_fee = c_large.
WHEN OTHERS.
RAISE invalid_size.
ENDCASE.
IF iv_power <> abap_true.
lv_daily_fee = lv_daily_fee + c_power.
ENDIF.
lv_total_fee = lv_daily_fee * iv_days.
IF iv_days >= 5.
lv_reduction = round( val = lv_total_fee * c_rebate / c_hundred dec = 2 ).
ev_fee = lv_total_fee - lv_reduction.
ELSE.
ev_fee = lv_total_fee.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,53 @@
FUNCTION {{p}}mkt_stall_fee
IMPORTING
iv_stall_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
EXCEPTIONS
invalid_days
invalid_size.
CONSTANTS c_small TYPE decfloat34 VALUE '12.00'.
CONSTANTS c_medium TYPE decfloat34 VALUE '20.00'.
CONSTANTS c_large TYPE decfloat34 VALUE '35.00'.
CONSTANTS c_power TYPE decfloat34 VALUE '2.50'.
CONSTANTS c_rebate TYPE decfloat34 VALUE '15'.
CONSTANTS c_hundred TYPE decfloat34 VALUE '100'.
DATA lv_daily_fee TYPE decfloat34.
DATA lv_total_fee TYPE decfloat34.
DATA lv_reduction TYPE decfloat34.
ev_fee = 0.
IF iv_days < 1.
RAISE invalid_days.
ENDIF.
CASE iv_stall_size.
WHEN 'S'.
lv_daily_fee = c_small.
WHEN 'M'.
lv_daily_fee = c_medium.
WHEN 'L'.
lv_daily_fee = c_large.
WHEN OTHERS.
RAISE invalid_size.
ENDCASE.
IF iv_power = abap_false.
lv_daily_fee = lv_daily_fee + c_power.
ENDIF.
lv_total_fee = lv_daily_fee * iv_days.
IF iv_days >= 5.
lv_reduction = round( val = lv_total_fee * c_rebate / c_hundred dec = 2 ).
ev_fee = lv_total_fee - lv_reduction.
ELSE.
ev_fee = lv_total_fee.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,53 @@
FUNCTION {{p}}mkt_stall_fee
IMPORTING
iv_stall_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
EXCEPTIONS
invalid_days
invalid_size.
CONSTANTS c_small TYPE decfloat34 VALUE '12.00'.
CONSTANTS c_medium TYPE decfloat34 VALUE '20.00'.
CONSTANTS c_large TYPE decfloat34 VALUE '35.00'.
CONSTANTS c_power TYPE decfloat34 VALUE '2.50'.
CONSTANTS c_rebate TYPE decfloat34 VALUE '15'.
CONSTANTS c_hundred TYPE decfloat34 VALUE '100'.
DATA lv_daily_fee TYPE decfloat34.
DATA lv_total_fee TYPE decfloat34.
DATA lv_reduction TYPE decfloat34.
ev_fee = 0.
IF iv_days < 1.
RAISE invalid_days.
ENDIF.
CASE iv_stall_size.
WHEN 'S'.
lv_daily_fee = c_small.
WHEN 'M'.
lv_daily_fee = c_medium.
WHEN 'L'.
lv_daily_fee = c_large.
WHEN OTHERS.
RAISE invalid_size.
ENDCASE.
IF iv_power = abap_true.
lv_daily_fee = lv_daily_fee - c_power.
ENDIF.
lv_total_fee = lv_daily_fee * iv_days.
IF iv_days >= 5.
lv_reduction = round( val = lv_total_fee * c_rebate / c_hundred dec = 2 ).
ev_fee = lv_total_fee - lv_reduction.
ELSE.
ev_fee = lv_total_fee.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,53 @@
FUNCTION {{p}}mkt_stall_fee
IMPORTING
iv_stall_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
EXCEPTIONS
invalid_days
invalid_size.
CONSTANTS c_small TYPE decfloat34 VALUE '12.00'.
CONSTANTS c_medium TYPE decfloat34 VALUE '20.00'.
CONSTANTS c_large TYPE decfloat34 VALUE '35.00'.
CONSTANTS c_power TYPE decfloat34 VALUE '2.50'.
CONSTANTS c_rebate TYPE decfloat34 VALUE '15'.
CONSTANTS c_hundred TYPE decfloat34 VALUE '100'.
DATA lv_daily_fee TYPE decfloat34.
DATA lv_total_fee TYPE decfloat34.
DATA lv_reduction TYPE decfloat34.
ev_fee = 0.
IF iv_days < 1.
RAISE invalid_days.
ENDIF.
CASE iv_stall_size.
WHEN 'S'.
lv_daily_fee = c_small.
WHEN 'M'.
lv_daily_fee = c_medium.
WHEN 'L'.
lv_daily_fee = c_large.
WHEN OTHERS.
RAISE invalid_size.
ENDCASE.
IF iv_power = abap_true.
lv_daily_fee = lv_daily_fee + c_power.
ENDIF.
lv_total_fee = lv_daily_fee * iv_days.
IF iv_days >= 5.
lv_reduction = round( val = lv_total_fee / c_rebate / c_hundred dec = 2 ).
ev_fee = lv_total_fee - lv_reduction.
ELSE.
ev_fee = lv_total_fee.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,24 @@
{
"id": "G1038",
"pool": "train",
"object_type": "FUNC",
"category": "G",
"attempts": [
{
"stage": "validate",
"oracle": 0,
"null": 0
},
{
"stage": "validate",
"oracle": 100.0,
"null": 0,
"mutation": {
"valid": 5,
"killed": 5,
"ok": true
}
}
],
"accepted": true
}

View File

@@ -0,0 +1,99 @@
CLASS {{p}}t_mkt_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS call
IMPORTING iv_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
EXPORTING ev_fee TYPE decfloat34
ev_subrc TYPE sysubrc.
METHODS small_one_day FOR TESTING.
METHODS medium_two_days_power FOR TESTING.
METHODS large_one_day FOR TESTING.
METHODS no_reduction_four_days FOR TESTING.
METHODS reduction_five_days FOR TESTING.
METHODS reduction_rounding FOR TESTING.
METHODS reduction_large_six_days FOR TESTING.
METHODS invalid_days_zero FOR TESTING.
METHODS invalid_days_negative FOR TESTING.
METHODS invalid_size FOR TESTING.
ENDCLASS.
CLASS {{p}}t_mkt_hidden IMPLEMENTATION.
METHOD call.
ev_fee = 0.
CALL FUNCTION '{{P}}MKT_STALL_FEE'
EXPORTING
iv_stall_size = iv_size
iv_days = iv_days
iv_power = iv_power
IMPORTING
ev_fee = ev_fee
EXCEPTIONS
invalid_days = 1
invalid_size = 2
OTHERS = 3.
ev_subrc = sy-subrc.
ENDMETHOD.
METHOD small_one_day.
call( EXPORTING iv_size = 'S' iv_days = 1 iv_power = abap_false
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '12.00' ) act = lv_fee ).
ENDMETHOD.
METHOD medium_two_days_power.
call( EXPORTING iv_size = 'M' iv_days = 2 iv_power = abap_true
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '45.00' ) act = lv_fee ).
ENDMETHOD.
METHOD large_one_day.
call( EXPORTING iv_size = 'L' iv_days = 1 iv_power = abap_false
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '35.00' ) act = lv_fee ).
ENDMETHOD.
METHOD no_reduction_four_days.
call( EXPORTING iv_size = 'M' iv_days = 4 iv_power = abap_false
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '80.00' ) act = lv_fee ).
ENDMETHOD.
METHOD reduction_five_days.
call( EXPORTING iv_size = 'S' iv_days = 5 iv_power = abap_false
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '51.00' ) act = lv_fee ).
ENDMETHOD.
METHOD reduction_rounding.
call( EXPORTING iv_size = 'S' iv_days = 5 iv_power = abap_true
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '61.62' ) act = lv_fee ).
ENDMETHOD.
METHOD reduction_large_six_days.
call( EXPORTING iv_size = 'L' iv_days = 6 iv_power = abap_true
IMPORTING ev_fee = DATA(lv_fee) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '191.25' ) act = lv_fee ).
ENDMETHOD.
METHOD invalid_days_zero.
call( EXPORTING iv_size = 'S' iv_days = 0 iv_power = abap_false
IMPORTING ev_subrc = DATA(lv_subrc) ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ).
ENDMETHOD.
METHOD invalid_days_negative.
call( EXPORTING iv_size = 'M' iv_days = -3 iv_power = abap_false
IMPORTING ev_subrc = DATA(lv_subrc) ).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_subrc ).
ENDMETHOD.
METHOD invalid_size.
call( EXPORTING iv_size = 'X' iv_days = 3 iv_power = abap_false
IMPORTING ev_subrc = DATA(lv_subrc) ).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_subrc ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,79 @@
{
"task": "G1038",
"mutants": [
{
"object": "{{P}}MKT_STALL_FEE",
"mutant": "line 25: < -> >= (rel)",
"status": "killed",
"hidden": "0/10",
"failed_tests": [
"INVALID_DAYS_NEGATIVE",
"INVALID_DAYS_ZERO",
"INVALID_SIZE",
"LARGE_ONE_DAY",
"MEDIUM_TWO_DAYS_POWER",
"NO_REDUCTION_FOUR_DAYS",
"REDUCTION_FIVE_DAYS",
"REDUCTION_LARGE_SIX_DAYS",
"REDUCTION_ROUNDING",
"SMALL_ONE_DAY"
]
},
{
"object": "{{P}}MKT_STALL_FEE",
"mutant": "line 40: = -> <> (eq)",
"status": "killed",
"hidden": "3/10",
"failed_tests": [
"LARGE_ONE_DAY",
"MEDIUM_TWO_DAYS_POWER",
"NO_REDUCTION_FOUR_DAYS",
"REDUCTION_FIVE_DAYS",
"REDUCTION_LARGE_SIX_DAYS",
"REDUCTION_ROUNDING",
"SMALL_ONE_DAY"
]
},
{
"object": "{{P}}MKT_STALL_FEE",
"mutant": "line 40: abap_true -> abap_false (bool)",
"status": "killed",
"hidden": "3/10",
"failed_tests": [
"LARGE_ONE_DAY",
"MEDIUM_TWO_DAYS_POWER",
"NO_REDUCTION_FOUR_DAYS",
"REDUCTION_FIVE_DAYS",
"REDUCTION_LARGE_SIX_DAYS",
"REDUCTION_ROUNDING",
"SMALL_ONE_DAY"
]
},
{
"object": "{{P}}MKT_STALL_FEE",
"mutant": "line 41: + -> - (arith)",
"status": "killed",
"hidden": "7/10",
"failed_tests": [
"MEDIUM_TWO_DAYS_POWER",
"REDUCTION_LARGE_SIX_DAYS",
"REDUCTION_ROUNDING"
]
},
{
"object": "{{P}}MKT_STALL_FEE",
"mutant": "line 47: * -> / (arith)",
"status": "killed",
"hidden": "7/10",
"failed_tests": [
"REDUCTION_FIVE_DAYS",
"REDUCTION_LARGE_SIX_DAYS",
"REDUCTION_ROUNDING"
]
}
],
"valid": 5,
"killed": 5,
"kill_rate": 1.0,
"ok": true
}

View File

@@ -0,0 +1,89 @@
CLASS {{p}}mkt_fee_test DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS fee_for
IMPORTING iv_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
RETURNING VALUE(rv_fee) TYPE decfloat34.
METHODS daily_fee_by_size FOR TESTING.
METHODS power_surcharge FOR TESTING.
METHODS reduction_from_five_days FOR TESTING.
METHODS reduction_is_rounded FOR TESTING.
METHODS invalid_days FOR TESTING.
METHODS invalid_size FOR TESTING.
ENDCLASS.
CLASS {{p}}mkt_fee_test IMPLEMENTATION.
METHOD fee_for.
CALL FUNCTION '{{P}}MKT_STALL_FEE'
EXPORTING
iv_stall_size = iv_size
iv_days = iv_days
iv_power = iv_power
IMPORTING
ev_fee = rv_fee
EXCEPTIONS
invalid_days = 1
invalid_size = 2
OTHERS = 3.
cl_abap_unit_assert=>assert_subrc( exp = 0 ).
ENDMETHOD.
METHOD daily_fee_by_size.
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '12.00' )
act = fee_for( iv_size = 'S' iv_days = 1 iv_power = abap_false ) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '20.00' )
act = fee_for( iv_size = 'M' iv_days = 1 iv_power = abap_false ) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '35.00' )
act = fee_for( iv_size = 'L' iv_days = 1 iv_power = abap_false ) ).
ENDMETHOD.
METHOD power_surcharge.
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '45.00' )
act = fee_for( iv_size = 'M' iv_days = 2 iv_power = abap_true ) ).
ENDMETHOD.
METHOD reduction_from_five_days.
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '80.00' )
act = fee_for( iv_size = 'M' iv_days = 4 iv_power = abap_false ) ).
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '51.00' )
act = fee_for( iv_size = 'S' iv_days = 5 iv_power = abap_false ) ).
ENDMETHOD.
METHOD reduction_is_rounded.
cl_abap_unit_assert=>assert_equals( exp = CONV decfloat34( '61.62' )
act = fee_for( iv_size = 'S' iv_days = 5 iv_power = abap_true ) ).
ENDMETHOD.
METHOD invalid_days.
DATA lv_fee TYPE decfloat34.
CALL FUNCTION '{{P}}MKT_STALL_FEE'
EXPORTING
iv_stall_size = 'S'
iv_days = 0
iv_power = abap_false
IMPORTING
ev_fee = lv_fee
EXCEPTIONS
invalid_days = 1
OTHERS = 2.
cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ).
ENDMETHOD.
METHOD invalid_size.
DATA lv_fee TYPE decfloat34.
CALL FUNCTION '{{P}}MKT_STALL_FEE'
EXPORTING
iv_stall_size = 'Z'
iv_days = 2
iv_power = abap_false
IMPORTING
ev_fee = lv_fee
EXCEPTIONS
invalid_size = 1
OTHERS = 2.
cl_abap_unit_assert=>assert_equals( exp = 1 act = sy-subrc ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,53 @@
FUNCTION {{p}}mkt_stall_fee
IMPORTING
iv_stall_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
EXCEPTIONS
invalid_days
invalid_size.
CONSTANTS c_small TYPE decfloat34 VALUE '12.00'.
CONSTANTS c_medium TYPE decfloat34 VALUE '20.00'.
CONSTANTS c_large TYPE decfloat34 VALUE '35.00'.
CONSTANTS c_power TYPE decfloat34 VALUE '2.50'.
CONSTANTS c_rebate TYPE decfloat34 VALUE '15'.
CONSTANTS c_hundred TYPE decfloat34 VALUE '100'.
DATA lv_daily_fee TYPE decfloat34.
DATA lv_total_fee TYPE decfloat34.
DATA lv_reduction TYPE decfloat34.
ev_fee = 0.
IF iv_days < 1.
RAISE invalid_days.
ENDIF.
CASE iv_stall_size.
WHEN 'S'.
lv_daily_fee = c_small.
WHEN 'M'.
lv_daily_fee = c_medium.
WHEN 'L'.
lv_daily_fee = c_large.
WHEN OTHERS.
RAISE invalid_size.
ENDCASE.
IF iv_power = abap_true.
lv_daily_fee = lv_daily_fee + c_power.
ENDIF.
lv_total_fee = lv_daily_fee * iv_days.
IF iv_days >= 5.
lv_reduction = round( val = lv_total_fee * c_rebate / c_hundred dec = 2 ).
ev_fee = lv_total_fee - lv_reduction.
ELSE.
ev_fee = lv_total_fee.
ENDIF.
ENDFUNCTION.

View File

@@ -0,0 +1,14 @@
FUNCTION {{p}}mkt_sample
IMPORTING
iv_stall_size TYPE string
iv_days TYPE i
iv_power TYPE abap_bool
EXPORTING
ev_fee TYPE decfloat34
EXCEPTIONS
invalid_days
invalid_size.
ev_fee = 0.
ENDFUNCTION.

View File

@@ -0,0 +1,57 @@
# 1. Goal
A market operator hires out stalls to traders at its weekly market. For each
booking the operator charges a stall fee. The booking program calls one
function module for each booking. The function module calculates the fee from
the stall size, the number of market days, and whether the trader needs an
electricity supply.
# 2. Open questions
None.
# 3. Context
- Function group {{P}}FG_MKT exists in package $TMP.
- Function module {{P}}MKT_SAMPLE exists in this group. It is the sample
module. Its interface is the interface that the booking program uses.
- The booking program calls {{P}}MKT_STALL_FEE for each booking and reads the
exported fee.
# 4. Contract
Create the function module {{P}}MKT_STALL_FEE in function group {{P}}FG_MKT.
Use exactly the interface of {{P}}MKT_SAMPLE.
| Parameter | Kind | Type | Meaning |
| --- | --- | --- | --- |
| iv_stall_size | importing | string | Stall size: 'S', 'M' or 'L' |
| iv_days | importing | i | Number of market days |
| iv_power | importing | abap_bool | Electricity supply is wanted |
| ev_fee | exporting | decfloat34 | Calculated stall fee |
| invalid_days | exception | - | iv_days is less than 1 |
| invalid_size | exception | - | iv_stall_size is not 'S', 'M' or 'L' |
# 5. Business rules
1. If iv_days is less than 1, raise the exception INVALID_DAYS and do not
calculate a fee. Check this rule before rule 2.
2. The daily fee depends on iv_stall_size:
- 'S': 12.00
- 'M': 20.00
- 'L': 35.00
Any other value of iv_stall_size raises the exception INVALID_SIZE and no
fee is calculated.
3. If iv_power is abap_true, add 2.50 to the daily fee.
4. The total fee is the daily fee multiplied by iv_days.
5. If iv_days is 5 or more, the total fee is reduced by 15 %. Calculate the
reduction from the total fee, round the reduction half up to 2 decimals,
and subtract the rounded reduction from the total fee.
6. If iv_days is less than 5, the fee is the total fee without a reduction.
# 6. Constraints
- Release target: 7.40 SP05. Use only syntax that is available in this release.
Do not use the new ABAP SQL syntax with @ host variables or comma separated
field lists.
- Coding standards: Clean ABAP. Keep every method below 40 statements.
- Out of scope: do not change the function module {{P}}MKT_SAMPLE.
# 7. Acceptance
- The function module 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,80 @@
{
"id": "G1038",
"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_MKT",
"description": "Market stall fees"
},
{
"type": "FUNC",
"name": "{{P}}MKT_SAMPLE",
"functionGroup": "{{P}}FG_MKT",
"file": "seed/mkt_sample.func.abap",
"description": "Sample stall fee module"
}
],
"contract": [
{
"type": "FUNC",
"name": "{{P}}MKT_STALL_FEE",
"functionGroup": "{{P}}FG_MKT",
"params": [
{
"name": "iv_stall_size",
"type": "string"
},
{
"name": "iv_days",
"type": "i"
},
{
"name": "iv_power",
"type": "abap_bool"
},
{
"name": "ev_fee",
"type": "decfloat34"
}
]
}
],
"out_of_scope": [
"{{P}}MKT_SAMPLE"
],
"hidden_tests": [
{
"type": "CLAS",
"name": "{{P}}T_MKT_HIDDEN",
"file": "hidden/t_mkt_hidden.clas.abap",
"description": "Hidden tests for the stall fee"
}
],
"reference": [
{
"type": "FUNC",
"name": "{{P}}MKT_STALL_FEE",
"functionGroup": "{{P}}FG_MKT",
"file": "reference/mkt_stall_fee.func.abap",
"description": "Stall fee module"
},
{
"type": "CLAS",
"name": "{{P}}MKT_FEE_TEST",
"file": "reference/mkt_fee_test.clas.abap",
"description": "Own tests for the stall fee"
}
],
"craft_checks": [
"method_length"
]
}