55 lines
2.0 KiB
Markdown
55 lines
2.0 KiB
Markdown
# 1. Goal
|
|
A maple syrup farm collects sap from its groves. The farm must store each sap
|
|
delivery in one database table. Later programs and views read the deliveries
|
|
from this table.
|
|
|
|
# 2. Open questions
|
|
None.
|
|
|
|
# 3. Context
|
|
- The farm works with several groves. Each grove has a grove number.
|
|
- One delivery belongs to exactly one grove and has exactly one delivery date.
|
|
- The farm measures the sap in litres. The farm measures the sugar content of
|
|
the sap in degrees Brix.
|
|
- The farm pays the grove for each delivery. The payment is an amount in a
|
|
currency.
|
|
- All objects are in package $TMP.
|
|
|
|
# 4. Contract
|
|
- Create the transparent database table {{P}}SYRUP in package $TMP.
|
|
- The table has exactly these fields, in this order:
|
|
client, delivery_id, grove_id, delivery_date, sap_liters, brix,
|
|
quality_grade, payout, currency_code.
|
|
|
|
# 5. Business rules
|
|
1. The table has the fields of the table below. The table below gives the data
|
|
type, the length and the number of decimals of each field.
|
|
|
|
| Field | Data type | Length | Decimals | Key | Not null |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| client | CLNT | 3 | - | yes | yes |
|
|
| delivery_id | CHAR | 10 | - | yes | yes |
|
|
| grove_id | CHAR | 8 | - | no | no |
|
|
| delivery_date | DATS | 8 | - | no | no |
|
|
| sap_liters | DEC | 9 | 2 | no | no |
|
|
| brix | DEC | 4 | 1 | no | no |
|
|
| quality_grade | NUMC | 2 | - | no | no |
|
|
| payout | CURR | 15 | 2 | no | no |
|
|
| currency_code | CUKY | 5 | - | no | no |
|
|
|
|
2. client and delivery_id are the key fields. No other field is a key field.
|
|
3. The key fields are not null.
|
|
4. payout is an amount. The currency of payout is the value of currency_code.
|
|
5. Two rows with the same client and the same delivery_id are not allowed.
|
|
|
|
# 6. Constraints
|
|
- Release target: 8.16.
|
|
- Coding standards: Clean ABAP.
|
|
- Out of scope: no other objects.
|
|
|
|
# 7. Acceptance
|
|
- The table is active and has no syntax error.
|
|
- The hidden tests pass.
|
|
- Write ABAP Unit tests in a global test class. Check the field properties with
|
|
RTTI and check the table access with CL_OSQL_TEST_ENVIRONMENT.
|