51 lines
2.1 KiB
Markdown
51 lines
2.1 KiB
Markdown
# 1. Goal
|
|
Calculate the price of a jump session at a trampoline park. A booking program
|
|
calls the calculation before it confirms a booking. The booking program needs
|
|
one price in euro for each booking.
|
|
|
|
# 2. Open questions
|
|
None.
|
|
|
|
# 3. Context
|
|
- The trampoline park sells jump sessions of 30, 45, 60, 75 or 90 minutes.
|
|
- The booking program knows the number of persons in the booking, the length of
|
|
the session in minutes, and if the customer has a member card.
|
|
- All prices are in euro and have 2 decimals.
|
|
|
|
# 4. Contract
|
|
- Create the class {{P}}JUMP_PRICER in package $TMP.
|
|
- The class is public, final, and has a public constructor without parameters.
|
|
- The public section has the type TY_AMOUNT (packed number, length 8, 2 decimals)
|
|
and one method:
|
|
CALCULATE
|
|
IMPORTING iv_persons TYPE i
|
|
iv_minutes TYPE i
|
|
iv_member TYPE abap_bool
|
|
RETURNING VALUE(rv_price) TYPE ty_amount.
|
|
- iv_persons is the number of persons. iv_minutes is the session length in
|
|
minutes. iv_member is abap_true if the customer has a member card.
|
|
- Do not add other public methods.
|
|
|
|
# 5. Business rules
|
|
Apply the rules in this sequence.
|
|
1. If iv_persons is less than 1, or iv_minutes is less than 1, the price is 0.00.
|
|
2. The price per person depends on the session length:
|
|
- If the session is shorter than 60 minutes, the price per person is 8.00.
|
|
- If the session is longer than 60 minutes, the price per person is 12.00.
|
|
3. Multiply the price per person by the number of persons.
|
|
4. If iv_member is abap_true, subtract 20 percent from the result of rule 3.
|
|
5. If the number of persons is 10 or more, subtract 10 percent from the result
|
|
of rule 4.
|
|
6. Round the result to 2 decimals. Round half up.
|
|
|
|
# 6. Constraints
|
|
- Release target: SAP_BASIS 816 (ABAP Platform 2025).
|
|
- Coding standards: Clean ABAP. Method length below 40 statements. No global
|
|
variables. No comment that restates the code.
|
|
- Out of scope: do not change other objects in package $TMP.
|
|
|
|
# 7. Acceptance
|
|
- The class is active and has no syntax error.
|
|
- Every business rule is checked by a test.
|
|
- Write your own ABAP Unit tests for the class.
|