CLASS {{p}}bag_drop DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. TYPES: ty_tag TYPE c LENGTH 10, ty_weight TYPE p LENGTH 5 DECIMALS 2, ty_size TYPE i, ty_count TYPE i, ty_minutes TYPE i. METHODS accept_bag IMPORTING iv_tag TYPE ty_tag iv_weight TYPE ty_weight iv_length TYPE ty_size iv_width TYPE ty_size iv_height TYPE ty_size iv_bags_checked TYPE ty_count iv_min_to_dep TYPE ty_minutes RAISING {{p}}cx_bag_tag {{p}}cx_bag_weight {{p}}cx_bag_size {{p}}cx_bag_limit {{p}}cx_bag_late. PRIVATE SECTION. CONSTANTS: c_max_weight TYPE ty_weight VALUE 23, c_max_size TYPE ty_size VALUE 158, c_max_bags TYPE ty_count VALUE 2, c_min_minutes TYPE ty_minutes VALUE 40. METHODS check_tag IMPORTING iv_tag TYPE ty_tag RAISING {{p}}cx_bag_tag. METHODS check_weight IMPORTING iv_weight TYPE ty_weight RAISING {{p}}cx_bag_weight. METHODS check_size IMPORTING iv_length TYPE ty_size iv_width TYPE ty_size iv_height TYPE ty_size RAISING {{p}}cx_bag_size. METHODS check_bag_count IMPORTING iv_bags_checked TYPE ty_count RAISING {{p}}cx_bag_limit. METHODS check_departure IMPORTING iv_min_to_dep TYPE ty_minutes RAISING {{p}}cx_bag_late. ENDCLASS. CLASS {{p}}bag_drop IMPLEMENTATION. METHOD accept_bag. check_tag( iv_tag ). check_weight( iv_weight ). check_size( iv_length = iv_length iv_width = iv_width iv_height = iv_height ). check_bag_count( iv_bags_checked ). check_departure( iv_min_to_dep ). ENDMETHOD. METHOD check_tag. IF iv_tag CN '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'. RAISE EXCEPTION TYPE {{p}}cx_bag_tag. ENDIF. ENDMETHOD. METHOD check_weight. IF iv_weight > c_max_weight. RAISE EXCEPTION TYPE {{p}}cx_bag_weight. ENDIF. ENDMETHOD. METHOD check_size. IF iv_length + iv_width + iv_height > c_max_size. RAISE EXCEPTION TYPE {{p}}cx_bag_size. ENDIF. ENDMETHOD. METHOD check_bag_count. IF iv_bags_checked < c_max_bags. RAISE EXCEPTION TYPE {{p}}cx_bag_limit. ENDIF. ENDMETHOD. METHOD check_departure. IF iv_min_to_dep < c_min_minutes. RAISE EXCEPTION TYPE {{p}}cx_bag_late. ENDIF. ENDMETHOD. ENDCLASS.