Files
abap-llm/tasks_gen/train/G1081/faulty/m2_studio_summary.clas.abap
2026-10-05 18:02:52 +02:00

65 lines
2.3 KiB
ABAP

CLASS {{p}}studio_summary DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
TYPES:
BEGIN OF ty_attendance,
studio TYPE c LENGTH 4,
class_id TYPE c LENGTH 8,
class_type TYPE c LENGTH 10,
member_id TYPE c LENGTH 8,
fee TYPE p LENGTH 8 DECIMALS 2,
END OF ty_attendance,
tt_attendance TYPE STANDARD TABLE OF ty_attendance WITH EMPTY KEY,
BEGIN OF ty_summary,
class_type TYPE c LENGTH 10,
class_count TYPE i,
member_count TYPE i,
total_fee TYPE p LENGTH 8 DECIMALS 2,
END OF ty_summary,
tt_summary TYPE STANDARD TABLE OF ty_summary WITH EMPTY KEY.
METHODS summarize
IMPORTING it_attendance TYPE tt_attendance
RETURNING VALUE(rt_summary) TYPE tt_summary.
ENDCLASS.
CLASS {{p}}studio_summary IMPLEMENTATION.
METHOD summarize.
DATA lt_seen TYPE HASHED TABLE OF ty_attendance
WITH UNIQUE KEY studio class_id member_id.
DATA lt_class TYPE HASHED TABLE OF ty_attendance
WITH UNIQUE KEY studio class_id class_type.
DATA lt_member TYPE HASHED TABLE OF ty_attendance
WITH UNIQUE KEY class_type member_id.
DATA lt_groups TYPE HASHED TABLE OF ty_summary WITH UNIQUE KEY class_type.
LOOP AT it_attendance ASSIGNING FIELD-SYMBOL(<ls_attendance>).
IF <ls_attendance>-class_type IS INITIAL OR <ls_attendance>-fee <= 0.
CONTINUE.
ENDIF.
INSERT <ls_attendance> INTO TABLE lt_seen.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
ASSIGN lt_groups[ class_type = <ls_attendance>-class_type ]
TO FIELD-SYMBOL(<ls_group>).
IF sy-subrc <> 0.
INSERT VALUE ty_summary( class_type = <ls_attendance>-class_type )
INTO TABLE lt_groups ASSIGNING <ls_group>.
ENDIF.
<ls_group>-total_fee = <ls_group>-total_fee - <ls_attendance>-fee.
INSERT <ls_attendance> INTO TABLE lt_class.
IF sy-subrc = 0.
<ls_group>-class_count = <ls_group>-class_count + 1.
ENDIF.
INSERT <ls_attendance> INTO TABLE lt_member.
IF sy-subrc = 0.
<ls_group>-member_count = <ls_group>-member_count + 1.
ENDIF.
ENDLOOP.
rt_summary = lt_groups.
SORT rt_summary BY class_type.
ENDMETHOD.
ENDCLASS.