Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
80 lines
2.3 KiB
ABAP
80 lines
2.3 KiB
ABAP
REPORT {{p}}carwash_rpt.
|
|
|
|
TABLES: {{p}}carwash, {{p}}washpgm.
|
|
|
|
PARAMETERS: p_from TYPE d OBLIGATORY,
|
|
p_to TYPE d OBLIGATORY.
|
|
|
|
SELECT-OPTIONS: s_prog FOR {{p}}carwash-wash_prog.
|
|
|
|
TYPES: BEGIN OF ty_out,
|
|
wash_prog TYPE {{p}}carwash-wash_prog,
|
|
prog_text TYPE {{p}}washpgm-prog_text,
|
|
washes TYPE i,
|
|
revenue TYPE {{p}}carwash-price,
|
|
vip_washes TYPE i,
|
|
vip_revenue TYPE {{p}}carwash-price,
|
|
END OF ty_out.
|
|
|
|
TYPES: BEGIN OF ty_data,
|
|
wash_prog TYPE {{p}}carwash-wash_prog,
|
|
price TYPE {{p}}carwash-price,
|
|
cust_type TYPE {{p}}carwash-cust_type,
|
|
END OF ty_data.
|
|
|
|
DATA: gt_out TYPE STANDARD TABLE OF ty_out WITH HEADER LINE,
|
|
gt_data TYPE STANDARD TABLE OF ty_data WITH HEADER LINE.
|
|
|
|
DATA: gv_text TYPE {{p}}washpgm-prog_text,
|
|
gv_alv TYPE REF TO cl_salv_table.
|
|
|
|
START-OF-SELECTION.
|
|
SELECT * FROM {{p}}carwash INTO CORRESPONDING FIELDS OF TABLE gt_data
|
|
WHERE wash_date >= p_from AND wash_date <= p_to.
|
|
|
|
LOOP AT gt_data.
|
|
IF gt_data-wash_prog IN s_prog.
|
|
READ TABLE gt_out WITH KEY wash_prog = gt_data-wash_prog.
|
|
IF sy-subrc = 0.
|
|
gt_out-washes = gt_out-washes + 1.
|
|
gt_out-revenue = gt_out-revenue + gt_data-price.
|
|
IF gt_data-cust_type = 'VIP'.
|
|
gt_out-vip_washes = gt_out-vip_washes + 1.
|
|
gt_out-vip_revenue = gt_out-vip_revenue + gt_data-price.
|
|
ENDIF.
|
|
MODIFY gt_out INDEX sy-tabix.
|
|
ELSE.
|
|
CLEAR gt_out.
|
|
gt_out-wash_prog = gt_data-wash_prog.
|
|
gt_out-washes = 1.
|
|
gt_out-revenue = gt_data-price.
|
|
IF gt_data-cust_type = 'VIP'.
|
|
gt_out-vip_washes = 1.
|
|
gt_out-vip_revenue = gt_data-price.
|
|
ELSE.
|
|
gt_out-vip_washes = 0.
|
|
gt_out-vip_revenue = 0.
|
|
ENDIF.
|
|
APPEND gt_out.
|
|
ENDIF.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
|
|
LOOP AT gt_out.
|
|
CLEAR gv_text.
|
|
SELECT SINGLE prog_text FROM {{p}}washpgm INTO gv_text
|
|
WHERE wash_prog = gt_out-wash_prog.
|
|
gt_out-prog_text = gv_text.
|
|
MODIFY gt_out.
|
|
ENDLOOP.
|
|
|
|
SORT gt_out BY revenue DESCENDING.
|
|
|
|
TRY.
|
|
cl_salv_table=>factory(
|
|
IMPORTING r_salv_table = gv_alv
|
|
CHANGING t_table = gt_out[] ).
|
|
gv_alv->display( ).
|
|
CATCH cx_salv_msg.
|
|
ENDTRY.
|