2.9 KiB
2.9 KiB
1. Goal
A sailmaker loft repairs sails for yacht owners. Two intake points send a repair order to the same check: the loft counter and the online form. Both intake points and the loft work with one interface. The interface is the shared contract of the repair order check. It holds the codes, the limits and the method signature.
2. Open questions
None.
3. Context
- The interface {{P}}IF_SAIL_REPAIR does not exist yet. Create it in package $TMP.
- A repair order has a damage code, a cloth code, the damaged length in centimetres, and a rush flag.
- The loft knows four damage codes, three cloth codes and two limits.
- The intake points call the method of the interface before they accept an order.
4. Contract
- Create the interface {{P}}IF_SAIL_REPAIR in package $TMP.
- The interface has these public types: TY_REASON (character 10), TY_DAMAGE (character 4) and TY_CLOTH (character 4).
- The interface has the public constant structure C_REASON with the components OK, EMPTY, DAMAGE, CLOTH, LENGTH and RUSH. Each component has the type TY_REASON.
- The interface has the public constant structure C_DAMAGE with the components TEAR, SEAM, EYLT and BATT. Each component has the type TY_DAMAGE.
- The interface has the public constant structure C_CLOTH with the components LITE, MEDM and HEAV. Each component has the type TY_CLOTH.
- The interface has the public constants C_MAX_LENGTH and C_RUSH_LIMIT, both of type I.
- The interface has one method CHECK_ORDER with the importing parameters IV_DAMAGE (type TY_DAMAGE), IV_CLOTH (type TY_CLOTH), IV_LENGTH (type I) and IV_RUSH (type ABAP_BOOL) and the returning parameter RV_REASON (type TY_REASON).
- Do not add other public components.
5. Business rules
- The reason codes have these values: OK = 'OK', EMPTY = 'EMPTY', DAMAGE = 'DAMAGE', CLOTH = 'CLOTH', LENGTH = 'LENGTH', RUSH = 'RUSH'.
- The damage codes have these values: TEAR = 'TEAR', SEAM = 'SEAM', EYLT = 'EYLT', BATT = 'BATT'.
- The cloth codes have these values: LITE = 'LITE', MEDM = 'MEDM', HEAV = 'HEAV'.
- C_MAX_LENGTH is 400. C_RUSH_LIMIT is 200.
- TY_REASON is 10 characters long. TY_DAMAGE is 4 characters long. TY_CLOTH is 4 characters long.
- The method CHECK_ORDER has exactly the importing parameters IV_DAMAGE, IV_CLOTH, IV_LENGTH and IV_RUSH and the returning parameter RV_REASON. IV_DAMAGE has the type TY_DAMAGE. IV_CLOTH has the type TY_CLOTH. IV_LENGTH has the type I. IV_RUSH has the type ABAP_BOOL. RV_REASON has the type TY_REASON.
6. Constraints
- Release target: ABAP Platform 2025 (SAP_BASIS 816).
- Coding standards: Clean ABAP. No global variables. No comment that restates the code.
- Out of scope: do not create an implementation class. Do not change other objects in package $TMP.
7. Acceptance
- The interface {{P}}IF_SAIL_REPAIR is active and has no syntax error.
- The hidden tests pass.
- Write your own ABAP Unit tests for the interface.