FUNCTION {{p}}farrier_fee IMPORTING iv_horses TYPE i iv_km TYPE decfloat34 iv_new_shoes TYPE abap_bool iv_contract TYPE abap_bool EXPORTING ev_fee TYPE decfloat34 ev_weeks TYPE i ev_reject TYPE abap_bool EXCEPTIONS invalid_horses. * Farrier service - mobile shoeing round * Calculation of one visit * Last change: 22.09.1996 / W. Klose DATA: lv_horses TYPE i, lv_fee TYPE decfloat34, lv_travel TYPE decfloat34, lv_weeks TYPE i. MOVE iv_horses TO lv_horses. IF lv_horses LT 0. RAISE invalid_horses. ELSE. CLEAR: ev_fee, ev_weeks. ev_reject = abap_false. IF lv_horses EQ 0. ev_reject = abap_true. ELSE. * shoeing fee: 45.00 per horse, from the fifth horse 40.00 IF lv_horses LE 4. COMPUTE lv_fee = lv_horses * 45. ELSE. COMPUTE lv_fee = 4 * 45 + ( lv_horses - 4 ) * 40. ENDIF. * new shoes are charged for every horse IF iv_new_shoes EQ abap_true. COMPUTE lv_fee = lv_fee + lv_horses * 30. ENDIF. * travel: 60 cent per kilometre, at least 10.00, rounded up to whole euro COMPUTE lv_travel = iv_km * 60 / 100. IF lv_travel LT 10. lv_travel = 10. ENDIF. COMPUTE lv_travel = CEIL( lv_travel ). COMPUTE lv_fee = lv_fee + lv_travel. * contract stables get 12 per cent off the visit IF iv_contract EQ abap_true. COMPUTE lv_fee = lv_fee * 88 / 100. ENDIF. * next visit: every six weeks, contract stables every four weeks lv_weeks = 6. IF iv_contract EQ abap_true. lv_weeks = 4. ENDIF. MOVE lv_fee TO ev_fee. ev_weeks = lv_weeks. ENDIF. ENDIF. ENDFUNCTION.