Files
abap-llm/tasks_gen/train/G1074/seed/pallet_allocator.clas.abap
2026-10-05 18:02:52 +02:00

97 lines
1.9 KiB
ABAP

CLASS {{p}}pallet_allocator DEFINITION
PUBLIC
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
TYPES ty_category TYPE c LENGTH 2.
TYPES ty_weight TYPE i.
TYPES ty_height TYPE i.
TYPES:
BEGIN OF ty_slot,
aisle TYPE c LENGTH 2,
rack TYPE i,
temp_zone TYPE c LENGTH 2,
is_valid TYPE abap_bool,
END OF ty_slot.
METHODS constructor.
METHODS allocate
IMPORTING
iv_category TYPE ty_category
iv_weight_kg TYPE ty_weight
iv_height_cm TYPE ty_height
RETURNING
VALUE(rs_slot) TYPE ty_slot.
ENDCLASS.
CLASS {{p}}pallet_allocator IMPLEMENTATION.
METHOD constructor.
ENDMETHOD.
METHOD allocate.
DATA: lv_cat TYPE ty_category,
lv_aisle TYPE c LENGTH 2,
lv_zone TYPE c LENGTH 2,
lv_rack TYPE i,
lv_h TYPE i,
lv_ok TYPE c LENGTH 1.
CLEAR rs_slot.
lv_cat = iv_category.
TRANSLATE lv_cat TO UPPER CASE.
CONDENSE lv_cat NO-GAPS.
lv_ok = 'X'.
IF lv_cat = 'F'.
lv_aisle = 'A1'.
lv_zone = 'FZ'.
ELSEIF lv_cat = 'C'.
lv_aisle = 'B2'.
lv_zone = 'CZ'.
ELSEIF lv_cat = 'D'.
lv_aisle = 'D4'.
lv_zone = 'DZ'.
ELSE.
lv_ok = ' '.
ENDIF.
IF iv_weight_kg < 20.
lv_ok = ' '.
ENDIF.
IF iv_weight_kg > 800.
lv_ok = ' '.
ENDIF.
IF iv_height_cm < 40.
lv_ok = ' '.
ENDIF.
IF lv_ok = 'X'.
lv_rack = 1.
lv_h = iv_height_cm.
WHILE lv_h > 120.
lv_rack = lv_rack + 1.
lv_h = lv_h - 40.
ENDWHILE.
IF lv_rack > 4.
lv_ok = ' '.
ENDIF.
ENDIF.
IF lv_ok = 'X'.
rs_slot-aisle = lv_aisle.
rs_slot-rack = lv_rack.
rs_slot-temp_zone = lv_zone.
rs_slot-is_valid = abap_true.
ELSE.
CLEAR rs_slot.
rs_slot-is_valid = abap_false.
ENDIF.
ENDMETHOD.
ENDCLASS.