Files
abap-llm/tasks_gen/train/G1137/spec.md
2026-10-05 18:02:52 +02:00

2.1 KiB

1. Goal

A tattoo studio prices tattoo projects. The reception desk calls one function module for each project. The function module calculates the studio fee. The function module must use the same interface as the sample pricing module, because the reception desk calls all pricing modules in the same way.

2. Open questions

None.

3. Context

  • Function group {{P}}FG_TATTOO exists in package $TMP.
  • Function module {{P}}TATTOO_SAMPLE exists in this group. It is the sample pricing module. Its interface is the interface that every pricing module must use. Read the interface of {{P}}TATTOO_SAMPLE before you write code.
  • A project has a style code and a number of sessions. A project has one session or many sessions.

4. Contract

  • Create the function module {{P}}TATTOO_FEE in function group {{P}}FG_TATTOO.
  • Use exactly the interface of {{P}}TATTOO_SAMPLE: the same parameter names, the same parameter kinds, the same types, and the same exceptions.

5. Business rules

  1. If the number of sessions is less than 1, raise the exception INVALID_SESSIONS. The sample module declares this exception.
  2. Set the deposit flag to false, except in rule 6.
  3. Style code LINE: the first session costs 133.33. Every further session costs half of 133.33, rounded half up to 2 decimals. The fee is the sum of the first session and all further sessions. Then apply the minimum fee 150.00 and the maximum fee 800.00.
  4. Style code SHADE: the first session costs 97.77. Every further session costs half of 97.77, rounded half up to 2 decimals. The fee is the sum of the first session and all further sessions. Then apply the minimum fee 110.00 and the maximum fee 600.00.
  5. Other style codes: the fee is 0.
  6. If the number of sessions is greater than 6, set the deposit flag to true. This rule applies to every style code. The fee does not change.

6. Constraints

  • Release target: 8.16.
  • Use Clean ABAP. Keep the code short and readable.
  • Out of scope: do not change {{P}}TATTOO_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.