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.