75 lines
2.1 KiB
ABAP
75 lines
2.1 KiB
ABAP
REPORT {{p}}bakery_bill_old.
|
|
|
|
DATA: gv_shop_id TYPE {{p}}shop-shop_id.
|
|
|
|
PARAMETERS p_from TYPE d OBLIGATORY.
|
|
PARAMETERS p_to TYPE d OBLIGATORY.
|
|
SELECT-OPTIONS s_shop FOR gv_shop_id.
|
|
|
|
TYPES: BEGIN OF ty_line,
|
|
shop_id TYPE {{p}}shop-shop_id,
|
|
shop_name TYPE {{p}}shop-shop_name,
|
|
loaves TYPE i,
|
|
rolls TYPE i,
|
|
total TYPE {{p}}shop-loaf_price,
|
|
END OF ty_line.
|
|
|
|
DATA: gt_shop TYPE STANDARD TABLE OF {{p}}shop WITH HEADER LINE,
|
|
gt_deliv TYPE STANDARD TABLE OF {{p}}deliv WITH HEADER LINE,
|
|
gt_out TYPE STANDARD TABLE OF ty_line WITH HEADER LINE.
|
|
|
|
START-OF-SELECTION.
|
|
PERFORM read_shops.
|
|
PERFORM read_deliveries.
|
|
PERFORM calc_totals.
|
|
PERFORM display.
|
|
|
|
FORM read_shops.
|
|
SELECT * FROM {{p}}shop INTO TABLE gt_shop
|
|
WHERE shop_id IN s_shop
|
|
AND is_active = 'X'.
|
|
SORT gt_shop BY shop_id.
|
|
ENDFORM.
|
|
|
|
FORM read_deliveries.
|
|
SELECT * FROM {{p}}deliv INTO TABLE gt_deliv
|
|
WHERE deliv_date >= p_from
|
|
AND deliv_date <= p_to.
|
|
SORT gt_deliv BY shop_id.
|
|
ENDFORM.
|
|
|
|
FORM calc_totals.
|
|
DATA: ls_out TYPE ty_line,
|
|
lv_fee TYPE {{p}}shop-loaf_price.
|
|
CLEAR gt_out.
|
|
LOOP AT gt_shop.
|
|
CLEAR ls_out.
|
|
ls_out-shop_id = gt_shop-shop_id.
|
|
ls_out-shop_name = gt_shop-shop_name.
|
|
LOOP AT gt_deliv WHERE shop_id = gt_shop-shop_id.
|
|
IF gt_deliv-loaves + gt_deliv-rolls > 0.
|
|
ls_out-loaves = ls_out-loaves + gt_deliv-loaves.
|
|
ls_out-rolls = ls_out-rolls + gt_deliv-rolls.
|
|
lv_fee = gt_deliv-loaves * gt_shop-loaf_price
|
|
+ gt_deliv-rolls * gt_shop-roll_price
|
|
+ gt_shop-deliv_fee.
|
|
ls_out-total = ls_out-total + lv_fee.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
IF ls_out-loaves + ls_out-rolls > 0.
|
|
APPEND ls_out TO gt_out.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
SORT gt_out BY total DESCENDING shop_id ASCENDING.
|
|
ENDFORM.
|
|
|
|
FORM display.
|
|
DATA lo_alv TYPE REF TO cl_salv_table.
|
|
TRY.
|
|
cl_salv_table=>factory( IMPORTING r_salv_table = lo_alv
|
|
CHANGING t_table = gt_out[] ).
|
|
lo_alv->display( ).
|
|
CATCH cx_salv_msg.
|
|
ENDTRY.
|
|
ENDFORM.
|