Files
abap-llm/tasks_gen/eval/G0104/spec.md

2.2 KiB

1. Goal

Calculate the annual premium of a car insurance policy. An insurance program calls the calculation before it sends an offer to a customer. The program needs one premium for each policy.

2. Open questions

None.

3. Context

  • Package $TMP.
  • No other objects are required.

4. Contract

  • Create the class {{P}}INSURANCE_PREMIUM in package $TMP.
  • The class is public, final, and has a public constructor without parameters.
  • The class has the public type TY_REGION (CHAR 2) and TY_PREMIUM (P LENGTH 8 DECIMALS 2).
  • The class has one public method: CALCULATE_PREMIUM IMPORTING iv_age TYPE i iv_power_kw TYPE i iv_region TYPE ty_region iv_claim_free_years TYPE i RETURNING VALUE(rv_premium) TYPE ty_premium.
  • Do not add other public methods.

5. Business rules

Apply the rules in this sequence.

  1. Validate the inputs:
    • iv_age must be between 18 and 99.
    • iv_power_kw must be greater than 0.
    • iv_claim_free_years must not be negative.
    • iv_region must be one of the known regions (see rule 2). If any check fails, return 0.
  2. The base premium depends on the region: A1: 150, B2: 200, C3: 250, D4: 300, E5: 350.
  3. The age factor:
    • age < 25: 1.5
    • 25 <= age <= 65: 1.0
    • age > 65: 1.2
  4. The power factor:
    • power <= 50 kW: 0.9
    • 51 <= power <= 100 kW: 1.0
    • 101 <= power <= 150 kW: 1.3
    • power > 150 kW: 1.6
  5. The claim-free discount:
    • Each claim-free year gives a 5% discount.
    • The maximum discount is 30%.
    • The discount factor is 1 minus the discount (e.g., 0 claim-free years: 1.0, 6 or more: 0.7).
  6. Calculate the premium: premium = base premium * age factor * power factor * discount factor. Calculate with full precision and round the final result to 2 decimals.
  7. If the rounded premium is less than 100, return 100.
  8. Else return the rounded premium.

6. Constraints

  • Release target: 7.58.
  • Coding standards: Clean ABAP. Method length below 40 statements. No global variables. No comment that restates the code. One statement per line.
  • Out of scope: do not create other objects.

7. Acceptance

  • The class is active and has no syntax error.
  • The hidden tests pass.
  • Write your own ABAP Unit tests for the class.