{ "id": "G0022", "category": "D", "object_type": "CLAS", "difficulty": 2, "release_target": "v816", "expected_outcome": "implement", "budget": { "max_tool_calls": 60, "max_activations": 15 }, "seed": [ { "type": "INTF", "name": "{{P}}IF_EXPENSE_CLAIM", "file": "seed/if_expense_claim.intf.abap", "description": "Types for an expense claim" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_ERROR", "file": "seed/cx_claim_error.clas.abap", "description": "Base exception that carries a message text" } ], "contract": [ { "type": "CLAS", "name": "{{P}}CX_CLAIM_AMOUNT" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_CURRENCY" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_DATE" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_RECEIPT" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_COSTCENTER" }, { "type": "CLAS", "name": "{{P}}EXPENSE_VALIDATOR" } ], "out_of_scope": [ "{{P}}IF_EXPENSE_CLAIM", "{{P}}CX_CLAIM_ERROR" ], "hidden_tests": [ { "type": "CLAS", "name": "{{P}}D01_HIDDEN", "file": "hidden/d01_hidden.clas.abap", "description": "Hidden tests for the expense claim validation" } ], "reference": [ { "type": "CLAS", "name": "{{P}}CX_CLAIM_AMOUNT", "file": "reference/cx_claim_amount.clas.abap", "description": "Exception for a non positive amount" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_CURRENCY", "file": "reference/cx_claim_currency.clas.abap", "description": "Exception for an unsupported currency" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_DATE", "file": "reference/cx_claim_date.clas.abap", "description": "Exception for a claim date in the future" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_RECEIPT", "file": "reference/cx_claim_receipt.clas.abap", "description": "Exception for a missing receipt" }, { "type": "CLAS", "name": "{{P}}CX_CLAIM_COSTCENTER", "file": "reference/cx_claim_costcenter.clas.abap", "description": "Exception for a missing cost center" }, { "type": "CLAS", "name": "{{P}}EXPENSE_VALIDATOR", "file": "reference/expense_validator.clas.abap", "description": "Validates an expense claim and raises class-based exceptions", "testclasses_file": "reference/expense_validator.testclasses.abap" } ], "craft_checks": [ "method_length", "exception_design" ] }