ADT fallback: Accept headers for FUNC; G0189 accepted; regen2 results

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
Kral
2026-10-03 16:31:03 +02:00
parent 428b3565b2
commit 7510131a7d
335 changed files with 12047 additions and 5545 deletions

View File

@@ -0,0 +1,151 @@
CLASS {{p}}cold_chain_check DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES: BEGIN OF ty_reading,
offset_min TYPE i,
temp_tenths TYPE i,
END OF ty_reading,
tt_readings TYPE STANDARD TABLE OF ty_reading WITH EMPTY KEY,
BEGIN OF ty_config,
min_tenths TYPE i,
max_tenths TYPE i,
min_duration TYPE i,
max_gap TYPE i,
END OF ty_config.
METHODS constructor
IMPORTING is_config TYPE ty_config.
METHODS check
IMPORTING it_readings TYPE tt_readings
RETURNING VALUE(rv_mean) TYPE i
RAISING {{p}}cx_cold_chain.
PRIVATE SECTION.
DATA ms_config TYPE ty_config.
METHODS first_violation
IMPORTING it_readings TYPE tt_readings
RETURNING VALUE(rv_rule) TYPE string.
METHODS check_structure
IMPORTING it_readings TYPE tt_readings
RETURNING VALUE(rv_rule) TYPE string.
METHODS check_duration
IMPORTING it_readings TYPE tt_readings
RETURNING VALUE(rv_rule) TYPE string.
METHODS check_gap
IMPORTING it_readings TYPE tt_readings
RETURNING VALUE(rv_rule) TYPE string.
METHODS check_temperatures
IMPORTING it_readings TYPE tt_readings
RETURNING VALUE(rv_rule) TYPE string.
METHODS mean_tenths
IMPORTING it_readings TYPE tt_readings
RETURNING VALUE(rv_mean) TYPE i.
ENDCLASS.
CLASS {{p}}cold_chain_check IMPLEMENTATION.
METHOD constructor.
ms_config = is_config.
ENDMETHOD.
METHOD check.
DATA(lv_rule) = first_violation( it_readings ).
IF lv_rule IS NOT INITIAL.
RAISE EXCEPTION TYPE {{p}}cx_cold_chain
EXPORTING
iv_rule = lv_rule.
ENDIF.
rv_mean = mean_tenths( it_readings ).
ENDMETHOD.
METHOD first_violation.
rv_rule = check_structure( it_readings ).
IF rv_rule IS NOT INITIAL.
RETURN.
ENDIF.
rv_rule = check_duration( it_readings ).
IF rv_rule IS NOT INITIAL.
RETURN.
ENDIF.
rv_rule = check_gap( it_readings ).
IF rv_rule IS NOT INITIAL.
RETURN.
ENDIF.
rv_rule = check_temperatures( it_readings ).
ENDMETHOD.
METHOD check_structure.
IF lines( it_readings ) < 2.
rv_rule = 'TOO_FEW'.
RETURN.
ENDIF.
READ TABLE it_readings INDEX 1 INTO DATA(ls_first).
IF ls_first-offset_min <> 0.
rv_rule = 'NO_START'.
RETURN.
ENDIF.
DATA(lv_previous) = ls_first-offset_min.
LOOP AT it_readings FROM 2 INTO DATA(ls_reading).
IF ls_reading-offset_min <= lv_previous.
rv_rule = 'TIME_ORDER'.
RETURN.
ENDIF.
lv_previous = ls_reading-offset_min.
ENDLOOP.
ENDMETHOD.
METHOD check_duration.
DATA lv_last TYPE i.
LOOP AT it_readings INTO DATA(ls_reading).
lv_last = ls_reading-offset_min.
ENDLOOP.
IF lv_last < ms_config-min_duration.
rv_rule = 'TOO_SHORT'.
ENDIF.
ENDMETHOD.
METHOD check_gap.
DATA lv_previous TYPE i.
LOOP AT it_readings INTO DATA(ls_reading).
IF sy-tabix > 1 AND ls_reading-offset_min - lv_previous > ms_config-max_gap.
rv_rule = 'GAP'.
RETURN.
ENDIF.
lv_previous = ls_reading-offset_min.
ENDLOOP.
ENDMETHOD.
METHOD check_temperatures.
LOOP AT it_readings INTO DATA(ls_reading).
IF ls_reading-temp_tenths > ms_config-max_tenths.
rv_rule = 'TOO_HIGH'.
RETURN.
ENDIF.
IF ls_reading-temp_tenths < ms_config-min_tenths.
rv_rule = 'TOO_LOW'.
RETURN.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD mean_tenths.
DATA lv_sum TYPE i.
LOOP AT it_readings INTO DATA(ls_reading).
lv_sum = lv_sum + ls_reading-temp_tenths.
ENDLOOP.
DATA(lv_count) = lines( it_readings ).
IF lv_count = 0.
rv_mean = 0.
RETURN.
ENDIF.
DATA(lv_abs_sum) = lv_sum.
IF lv_abs_sum < 0.
lv_abs_sum = -1 * lv_abs_sum.
ENDIF.
rv_mean = lv_abs_sum DIV lv_count.
IF lv_sum < 0.
rv_mean = -1 * rv_mean.
ENDIF.
ENDMETHOD.
ENDCLASS.