INTERFACE {{p}}if_parcel_fee PUBLIC. TYPES ty_weight_g TYPE i. TYPES ty_cents TYPE i. TYPES ty_zone TYPE c LENGTH 1. TYPES ty_reason TYPE c LENGTH 10. CONSTANTS: BEGIN OF c_zone, home TYPE ty_zone VALUE '1', national TYPE ty_zone VALUE '2', europe TYPE ty_zone VALUE 'Z', END OF c_zone. CONSTANTS: BEGIN OF c_reason, ok TYPE ty_reason VALUE 'OK', weight TYPE ty_reason VALUE 'WEIGHT', zone TYPE ty_reason VALUE 'ZONE', END OF c_reason. CONSTANTS: BEGIN OF c_limit, min_weight TYPE ty_weight_g VALUE 1, max_weight TYPE ty_weight_g VALUE 31500, END OF c_limit. CONSTANTS: BEGIN OF c_surcharge, per_step TYPE ty_cents VALUE 90, express TYPE ty_cents VALUE 750, END OF c_surcharge. METHODS check_input IMPORTING iv_weight_g TYPE ty_weight_g iv_zone TYPE ty_zone RETURNING VALUE(rv_reason) TYPE ty_reason. METHODS base_fee IMPORTING iv_zone TYPE ty_zone RETURNING VALUE(rv_cents) TYPE ty_cents. METHODS weight_surcharge IMPORTING iv_weight_g TYPE ty_weight_g RETURNING VALUE(rv_cents) TYPE ty_cents. METHODS total_fee IMPORTING iv_weight_g TYPE ty_weight_g iv_zone TYPE ty_zone iv_express TYPE abap_bool RETURNING VALUE(rv_cents) TYPE ty_cents. ENDINTERFACE.