CLASS {{p}}jump_pricer DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2. METHODS constructor. METHODS calculate IMPORTING iv_persons TYPE i iv_minutes TYPE i iv_member TYPE abap_bool RETURNING VALUE(rv_price) TYPE ty_amount. PRIVATE SECTION. CONSTANTS: c_short_price TYPE ty_amount VALUE '8.00', c_long_price TYPE ty_amount VALUE '12.00', c_member_factor TYPE ty_amount VALUE '0.80', c_group_factor TYPE ty_amount VALUE '0.90', c_group_size TYPE i VALUE 10, c_long_minutes TYPE i VALUE 60. METHODS price_per_person IMPORTING iv_minutes TYPE i RETURNING VALUE(rv_price) TYPE ty_amount. ENDCLASS. CLASS {{p}}jump_pricer IMPLEMENTATION. METHOD constructor. ENDMETHOD. METHOD calculate. IF iv_persons < 1 OR iv_minutes < 1. RETURN. ENDIF. DATA(lv_price) = CONV ty_amount( price_per_person( iv_minutes ) * iv_persons ). IF iv_member = abap_true. lv_price = lv_price * c_member_factor. ENDIF. IF iv_persons >= c_group_size. lv_price = lv_price * c_group_factor. ENDIF. rv_price = round( val = lv_price dec = 2 ). ENDMETHOD. METHOD price_per_person. IF iv_minutes < c_long_minutes. rv_price = c_short_price. ELSE. rv_price = c_long_price. ENDIF. ENDMETHOD. ENDCLASS.