FUNCTION {{p}}mush_harvest IMPORTING iv_room_a TYPE string iv_room_b TYPE string EXPORTING ev_total_kg TYPE decfloat34 ev_room_count TYPE i ev_top_grade TYPE char1 EXCEPTIONS no_stock. DATA lt_rows TYPE STANDARD TABLE OF {{P}}HARVEST. DATA lt_stock TYPE SORTED TABLE OF {{P}}HARVEST WITH UNIQUE KEY room_id grade. DATA lt_grade TYPE SORTED TABLE OF {{P}}HARVEST WITH UNIQUE KEY grade. DATA lv_room TYPE {{P}}HARVEST-room_id. DATA lv_best TYPE {{P}}HARVEST-weight_kg. SELECT room_id, grade, batch_no, weight_kg FROM {{P}}HARVEST WHERE room_id <> '' AND grade IN ( 'A', 'B', 'C' ) AND weight_kg > 0 AND ( room_id = @iv_room_a OR room_id = @iv_room_b ) INTO TABLE @lt_rows. IF lt_rows IS INITIAL. RAISE no_stock. ENDIF. LOOP AT lt_rows ASSIGNING FIELD-SYMBOL(). ev_total_kg = ev_total_kg + -weight_kg. READ TABLE lt_stock ASSIGNING FIELD-SYMBOL() WITH TABLE KEY room_id = -room_id grade = -grade. IF sy-subrc = 0. -weight_kg = -weight_kg + -weight_kg. ELSE. INSERT INTO TABLE lt_stock. ENDIF. READ TABLE lt_grade ASSIGNING FIELD-SYMBOL() WITH TABLE KEY grade = -grade. IF sy-subrc = 0. -weight_kg = -weight_kg + -weight_kg. ELSE. INSERT INTO TABLE lt_grade. ENDIF. ENDLOOP. LOOP AT lt_stock INTO DATA(ls_stock). IF ls_stock-room_id <> lv_room. ev_room_count = ev_room_count + 1. lv_room = ls_stock-room_id. ENDIF. ENDLOOP. LOOP AT lt_grade INTO DATA(ls_grade). IF ls_grade-weight_kg > lv_best. lv_best = ls_grade-weight_kg. ev_top_grade = ls_grade-grade. ENDIF. ENDLOOP. ENDFUNCTION.