CLASS {{p}}watch_order_pool DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES {{p}}if_watch_order. PRIVATE SECTION. TYPES ty_orders TYPE SORTED TABLE OF {{p}}if_watch_order=>ty_order WITH UNIQUE KEY order_id. TYPES ty_totals TYPE SORTED TABLE OF {{p}}if_watch_order=>ty_customer_total WITH UNIQUE KEY customer. METHODS unique_orders IMPORTING it_orders TYPE {{p}}if_watch_order=>tt_orders RETURNING VALUE(rt_orders) TYPE ty_orders. METHODS add_orders IMPORTING it_orders TYPE {{p}}if_watch_order=>tt_orders CHANGING ct_orders TYPE ty_orders. ENDCLASS. CLASS {{p}}watch_order_pool IMPLEMENTATION. METHOD {{p}}if_watch_order~merge_orders. DATA(lt_merged) = unique_orders( it_intake ). add_orders( EXPORTING it_orders = it_workshop CHANGING ct_orders = lt_merged ). rt_merged = lt_merged. ENDMETHOD. METHOD {{p}}if_watch_order~open_orders. DATA(lt_orders) = unique_orders( it_orders ). LOOP AT lt_orders INTO DATA(ls_order). IF ls_order-status = {{p}}if_watch_order=>c_status-open. APPEND ls_order TO rt_open. ENDIF. ENDLOOP. ENDMETHOD. METHOD {{p}}if_watch_order~customer_totals. DATA(lt_orders) = unique_orders( it_orders ). DATA lt_totals TYPE ty_totals. LOOP AT lt_orders INTO DATA(ls_order). IF ls_order-status = {{p}}if_watch_order=>c_status-open. READ TABLE lt_totals ASSIGNING FIELD-SYMBOL() WITH TABLE KEY customer = ls_order-customer. IF sy-subrc = 0. -total_min = -total_min + ls_order-duration_min. ELSE. INSERT VALUE {{p}}if_watch_order=>ty_customer_total( customer = ls_order-customer total_min = ls_order-duration_min ) INTO TABLE lt_totals. ENDIF. ENDIF. ENDLOOP. rt_totals = lt_totals. ENDMETHOD. METHOD {{p}}if_watch_order~find_order. DATA(lt_orders) = unique_orders( it_orders ). DATA ls_found TYPE {{p}}if_watch_order=>ty_order. READ TABLE lt_orders INTO ls_found WITH TABLE KEY order_id = iv_order_id. rs_order = ls_found. ENDMETHOD. METHOD add_orders. LOOP AT it_orders INTO DATA(ls_order). IF line_exists( ct_orders[ order_id = ls_order-order_id ] ). CONTINUE. ENDIF. INSERT ls_order INTO TABLE ct_orders. ENDLOOP. ENDMETHOD. METHOD unique_orders. DATA lt_orders TYPE ty_orders. add_orders( EXPORTING it_orders = it_orders CHANGING ct_orders = lt_orders ). rt_orders = lt_orders. ENDMETHOD. ENDCLASS.