# 1. Goal Refactor the legacy function module {{P}}MUSEUM_FEE_OLD in function group {{P}}FG_MUSEUM. The function module calculates the entry fee for a museum visit. The behavior of the function module must stay the same. Improve the code quality. # 2. Open questions None. # 3. Context - Function group {{P}}FG_MUSEUM exists in package $TMP. - Function module {{P}}MUSEUM_FEE_OLD exists in this group. It contains legacy code. - The function module is called by a ticketing program. The interface must not change. # 4. Contract - Refactor the function module {{P}}MUSEUM_FEE_OLD in function group {{P}}FG_MUSEUM. - Keep the name and the public interface: the same parameter names, kinds, types, and exceptions. # 5. Business rules 1. The behavior of the function module must not change. The legacy code defines the business rules. 2. The function module must raise the exception INVALID_INPUT for the same inputs as the legacy code. 3. The exported values must be the same as the legacy code for all valid inputs. # 6. Constraints - Release target: 8.16. - Coding standards: Clean ABAP, no ATC priority 1 or 2 findings, methods below 40 statements. - Out of scope: none. # 7. Acceptance - The function module is active and has no syntax error. - The behavior is unchanged. - The hidden tests pass. - Write ABAP Unit tests for the function module in a global test class.