Files
abap-llm/tasks_gen/train/G1314/spec.md

1.6 KiB

Please create the function module {{P}}GUARD_FEE in the function group {{P}}FG_GUARD in package $TMP. The function group {{P}}FG_GUARD already exists. The function module {{P}}GUARD_SAMPLE exists in this function group. It is the sample module. The billing program calls all shift modules with the same interface. Use exactly the interface of {{P}}GUARD_SAMPLE: the same parameter names, parameter kinds, types, and exceptions. Do not change {{P}}GUARD_SAMPLE. Do not use application tables. Do not use transports. The release target is 7.02. Use only syntax that release 7.02 supports. There are no open questions.

The function module calculates the fee for a guard shift. The parameters are iv_shift_type, iv_hours, ev_surcharge, and cv_fee. If iv_hours is less than or equal to 0, raise the exception INVALID_HOURS. Do not change cv_fee. Set ev_surcharge to false. If iv_shift_type is DAY, set cv_fee to iv_hours multiplied by 25.50. If iv_shift_type is NIGHT, set cv_fee to iv_hours multiplied by 25.50 multiplied by 1.25. Set ev_surcharge to true. If iv_shift_type is HOLIDAY, set cv_fee to iv_hours multiplied by 25.50 multiplied by 2.00. Set ev_surcharge to true. For any other shift type, set cv_fee to 0. Do not apply the rounding and minimum rules for any other shift type. For iv_shift_type DAY, NIGHT, and HOLIDAY, round cv_fee half up to 2 decimal places. For these three shift types, if cv_fee is less than 50.00, set cv_fee to 50.00.

The function module {{P}}GUARD_FEE must be active and have no syntax error. The hidden tests must pass. Write ABAP Unit tests for the function module in a global test class.