Files
abap-llm/tasks_gen/train/G1122/seed/ext_check_old.prog.abap
2026-10-05 18:02:52 +02:00

81 lines
2.1 KiB
ABAP

REPORT {{p}}ext_check_old.
DATA gv_site TYPE {{p}}exting-site.
PARAMETERS: p_from TYPE d OBLIGATORY,
p_to TYPE d OBLIGATORY.
SELECT-OPTIONS: s_site FOR gv_site.
PARAMETERS p_defect AS CHECKBOX.
TYPES: BEGIN OF ty_line,
ext_id TYPE {{p}}exting-ext_id,
site TYPE {{p}}exting-site,
ext_type TYPE {{p}}exting-ext_type,
weight_g TYPE i,
pressure_bar TYPE i,
state TYPE c LENGTH 7,
urgency TYPE i,
END OF ty_line.
DATA: gt_lines TYPE STANDARD TABLE OF ty_line WITH DEFAULT KEY,
gs_line TYPE ty_line,
lt_ext TYPE STANDARD TABLE OF {{p}}exting,
ls_ext TYPE {{p}}exting,
lv_state TYPE c LENGTH 7,
lv_prio TYPE i,
lo_alv TYPE REF TO cl_salv_table.
START-OF-SELECTION.
SELECT * FROM {{p}}exting INTO TABLE lt_ext.
LOOP AT lt_ext INTO ls_ext.
IF ls_ext-last_check >= p_from AND ls_ext-last_check <= p_to
AND ls_ext-site IN s_site.
IF ls_ext-weight_g < 4000.
IF ls_ext-ext_type = 'CO2'.
lv_state = 'REPLACE'.
ELSE.
lv_state = 'REFILL'.
ENDIF.
lv_prio = 1.
ELSEIF ls_ext-pressure_bar < 10.
lv_state = 'SERVICE'.
lv_prio = 2.
ELSEIF ls_ext-next_check - ls_ext-last_check < 300.
lv_state = 'SHORT'.
lv_prio = 3.
ELSE.
lv_state = 'OK'.
lv_prio = 4.
ENDIF.
IF p_defect = 'X' AND lv_prio = 4.
CONTINUE.
ENDIF.
CLEAR gs_line.
gs_line-ext_id = ls_ext-ext_id.
gs_line-site = ls_ext-site.
gs_line-ext_type = ls_ext-ext_type.
gs_line-weight_g = ls_ext-weight_g.
gs_line-pressure_bar = ls_ext-pressure_bar.
gs_line-state = lv_state.
gs_line-urgency = lv_prio.
APPEND gs_line TO gt_lines.
ENDIF.
ENDLOOP.
SORT gt_lines BY urgency ASCENDING ext_id ASCENDING.
PERFORM display_alv.
FORM display_alv.
TRY.
cl_salv_table=>factory( IMPORTING r_salv_table = lo_alv
CHANGING t_table = gt_lines ).
lo_alv->display( ).
CATCH cx_salv_msg.
ENDTRY.
ENDFORM.