60 lines
1.5 KiB
ABAP
60 lines
1.5 KiB
ABAP
REPORT {{p}}groom_bill_old.
|
|
|
|
DATA: gv_pet TYPE {{p}}groom-pet.
|
|
|
|
PARAMETERS p_date TYPE d OBLIGATORY.
|
|
SELECT-OPTIONS s_pet FOR gv_pet.
|
|
|
|
TYPES: BEGIN OF ty_out,
|
|
groom_id TYPE {{p}}groom-groom_id,
|
|
pet TYPE {{p}}groom-pet,
|
|
service TYPE {{p}}groom-service,
|
|
charge TYPE p LENGTH 9 DECIMALS 2,
|
|
END OF ty_out.
|
|
|
|
DATA: gt_out TYPE STANDARD TABLE OF ty_out,
|
|
gs_out TYPE ty_out,
|
|
gt_groom TYPE STANDARD TABLE OF {{p}}groom,
|
|
gs_groom TYPE {{p}}groom.
|
|
|
|
START-OF-SELECTION.
|
|
|
|
SELECT * FROM {{p}}groom INTO TABLE gt_groom
|
|
WHERE visit_date = p_date AND pet IN s_pet.
|
|
|
|
LOOP AT gt_groom INTO gs_groom.
|
|
CLEAR gs_out.
|
|
gs_out-groom_id = gs_groom-groom_id.
|
|
gs_out-pet = gs_groom-pet.
|
|
gs_out-service = gs_groom-service.
|
|
IF gs_groom-service = 'BASIC'.
|
|
gs_out-charge = 30.
|
|
ELSEIF gs_groom-service = 'FULL'.
|
|
gs_out-charge = 50.
|
|
ELSE.
|
|
gs_out-charge = 0.
|
|
ENDIF.
|
|
IF gs_groom-coat = 'LONG'.
|
|
gs_out-charge = gs_out-charge + 10.
|
|
ELSEIF gs_groom-coat = 'CURLY'.
|
|
gs_out-charge = gs_out-charge + 15.
|
|
ENDIF.
|
|
IF gs_groom-weight_kg > 25.
|
|
gs_out-charge = gs_out-charge + 20.
|
|
ENDIF.
|
|
IF gs_groom-service = 'FULL' AND gs_groom-coat = 'LONG'.
|
|
gs_out-charge = gs_out-charge - 5.
|
|
ENDIF.
|
|
APPEND gs_out TO gt_out.
|
|
ENDLOOP.
|
|
|
|
SORT gt_out BY groom_id.
|
|
|
|
TRY.
|
|
cl_salv_table=>factory(
|
|
IMPORTING r_salv_table = DATA(lo_alv)
|
|
CHANGING t_table = gt_out ).
|
|
lo_alv->display( ).
|
|
CATCH cx_salv_msg.
|
|
ENDTRY.
|