# 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.