Final Project ABAP April 22, 2015 Transport Truck Safety Management System Jade Webb Part 1 Program 1: Accident Cost Report CODE: *&---------------------------------------------------------------------* *& Report ZM30FINAL11 *& *&---------------------------------------------------------------------* *& *& *& Determines the cost of *& *&---------------------------------------------------------------------* REPORT ZM30FINAL11 LINE-SIZE 150 LINE-COUNT 19(5). TYPES: BEGIN OF accident, mandt LIKE accicase LIKE truckid LIKE driverid LIKE managerid LIKE severity LIKE accidesc LIKE folldesc LIKE follcost LIKE END OF accident. Z30ACCDTL-mandt, Z30ACCDTL-accicase, Z30ACCDTL-truckid, Z30ACCDTL-driverid, Z30ACCDTL-managerid, Z30ACCDTL-severity, Z30ACCDTL-accidesc, Z30ACCDTL-folldesc, Z30ACCDTL-follcost, * Variables DATA: itab_accident TYPE STANDARD TABLE OF accident, wa_accident TYPE accident. DATA DATA DATA DATA DATA DATA DATA allmanrb(1) halmanrb(1) ottmanrb(1) monmanrb(1) tormanrb(1) calmanrb(1) vanmanrb(1) DATA DATA DATA DATA DATA DATA DATA DATA DATA sevarb(1) sev1rb(1) sev2rb(1) sev3rb(1) sev4rb(1) sev5rb(1) sev6rb(1) sev7rb(1) sev8rb(1) TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE c. c. c. c. c. c. c. c. c. c. c. c. c. c. c. c. DATA sevlevel(1) TYPE p. DATA manager(5) TYPE p. DATA total_rec(5) TYPE p VALUE '0'. DATA total_cost(5) TYPE p DECIMALS 2 VALUE '0.00'. * Constants * Declare the file path CONSTANTS fuel_file(9) TYPE c VALUE 'file1.dat'. * Page Headers CONSTANTS con_header_1(150) TYPE c VALUE 'Client Accident Severity Description Cost'. Truck Driver Follow-up * Page Footers CONSTANTS con_footer_1(15) TYPE c VALUE 'Total Records: '. CONSTANTS con_footer_2(12) TYPE c VALUE 'Total Cost: '. * System Constants CONSTANTS con_exit(4) CONSTANTS con_write(5) CONSTANTS con_report(4) CONSTANTS con_both(4) CONSTANTS con_msg(22) CONSTANTS con_msg2(12) TYPE TYPE TYPE TYPE TYPE TYPE c c c c c c * Sub-screens CONSTANTS con_drinum(15) CONSTANTS con_accnum(17) CONSTANTS con_accdesc(23) CONSTANTS con_drill_error(30) VALUE VALUE VALUE VALUE VALUE VALUE TYPE TYPE TYPE TYPE c c c c 'EXIT'. 'WRITE'. 'REPT'. 'BOTH'. 'Data Written to File, '. 'Records Sent'. VALUE VALUE VALUE VALUE 'Driver Number:'. 'Accident Number:'. 'Accident Description:'. 'Cannot drill-down any further'. * Check-constants CONSTANTS con_halman(5) CONSTANTS con_ottman(5) CONSTANTS con_monman(5) CONSTANTS con_torman(5) CONSTANTS con_calman(5) CONSTANTS con_vanman(5) TYPE TYPE TYPE TYPE TYPE TYPE p p p p p p VALUE VALUE VALUE VALUE VALUE VALUE '11111'. '22221'. '33331'. '44441'. '55551'. '66661'. CONSTANTS CONSTANTS CONSTANTS CONSTANTS CONSTANTS CONSTANTS CONSTANTS CONSTANTS TYPE TYPE TYPE TYPE TYPE TYPE TYPE TYPE p p p p p p p p VALUE VALUE VALUE VALUE VALUE VALUE VALUE VALUE '1'. '2'. '3'. '4'. '5'. '6'. '7'. '8'. con_sev1(1) con_sev2(1) con_sev3(1) con_sev4(1) con_sev5(1) con_sev6(1) con_sev7(1) con_sev8(1) *----------- Main Program START-OF-SELECTION. PERFORM get_screen. PERFORM selection. TOP-OF-PAGE. PERFORM write_header. END-OF-PAGE. PERFORM write_footer. Manager END-OF-SELECTION. AT LINE-SELECTION. PERFORM line_details. *----- Forms *---------------------------------------------------------* Retreiving the Screen *---------------------------------------------------------FORM get_screen. CALL SCREEN 130. ENDFORM. *---------------------------------------------------------*Write page header details. *---------------------------------------------------------FORM write_header. FORMAT COLOR COL_HEADING. WRITE 3 con_header_1. ULINE (137). FORMAT COLOR OFF. ENDFORM. *---------------------------------------------------------*Write selection details. *---------------------------------------------------------FORM selection. CASE sy-ucomm. WHEN con_report. PERFORM selection_checks. PERFORM write_data. WHEN con_exit. LEAVE TO SCREEN 0. WHEN con_write. PERFORM write_file. WHEN con_both. PERFORM selection_checks. PERFORM write_data. PERFORM write_file. ENDCASE. ENDFORM. *----------------------*Selection Checks *----------------------FORM selection_checks. IF allmanrb = 'X' AND sevarb = 'X'. PERFORM get_all_data. ELSEIF allmanrb = 'X' AND sevarb IS INITIAL. PERFORM check_severity. PERFORM get_allman_data. ELSEIF sevarb = 'X' AND allmanrb IS INITIAL. PERFORM check_manager. PERFORM get_allsev_data. ELSE. PERFORM check_manager. PERFORM check_severity. PERFORM get_some_data. ENDIF. ENDFORM. *----------------------*Select Manager *----------------------FORM check_manager. IF halmanrb = 'X'. MOVE con_halman TO manager. ELSEIF ottmanrb = 'X'. MOVE con_ottman TO manager. ELSEIF monmanrb = 'X'. MOVE con_monman TO manager. ELSEIF tormanrb = 'X'. MOVE con_torman TO manager. ELSEIF calmanrb = 'X'. MOVE con_calman TO manager. ELSEIF vanmanrb = 'X'. MOVE con_vanman TO manager. ENDIF. ENDFORM. *----------------------*Select Severity *----------------------FORM check_severity. IF sev1rb = 'X'. MOVE con_sev1 TO sevlevel. ELSEIF sev2rb = 'X'. MOVE con_sev2 TO sevlevel. ELSEIF sev3rb = 'X'. MOVE con_sev3 TO sevlevel. ELSEIF sev4rb = 'X'. MOVE con_sev4 TO sevlevel. ELSEIF sev5rb = 'X'. MOVE con_sev5 TO sevlevel. ELSEIF sev6rb = 'X'. MOVE con_sev6 TO sevlevel. ELSEIF sev7rb = 'X'. MOVE con_sev7 TO sevlevel. ELSEIF sev8rb = 'X'. MOVE con_sev8 TO sevlevel. ENDIF. ENDFORM. *---------------------------------------------------------* Get all the data from the z20crashdtl table *---------------------------------------------------------FORM get_all_data. SELECT mandt accicase truckid driverid managerid severity accidesc folldesc follcost FROM z30accdtl INTO TABLE itab_accident. ENDFORM. *---------------------------------------------------------* Get some the data from the z20crashdtl table *---------------------------------------------------------FORM get_some_data. SELECT mandt accicase truckid driverid managerid severity accidesc folldesc follcost FROM z30accdtl INTO TABLE itab_accident WHERE managerid = manager AND severity = sevlevel. ENDFORM. *---------------------------------------------------------* Get all manager data from the z20crashdtl table *---------------------------------------------------------FORM get_allman_data. SELECT mandt accicase truckid driverid managerid severity accidesc folldesc follcost FROM z30accdtl INTO TABLE itab_accident WHERE severity = sevlevel. ENDFORM. *---------------------------------------------------------* Get all manager data from the z20crashdtl table *---------------------------------------------------------FORM get_allsev_data. SELECT mandt accicase truckid driverid managerid severity accidesc folldesc follcost FROM z30accdtl INTO TABLE itab_accident WHERE managerid = manager. ENDFORM. *--------------------------------------------------------* Write the data to the report *--------------------------------------------------------FORM write_data. ULINE (150). LOOP AT itab_accident INTO wa_accident. ADD 1 TO total_rec. ADD wa_accident-follcost TO total_cost. FORMAT COLOR 7. WRITE: / '|', 10 '|', 17 '|', 26 '|', 34 '|', 45 '|', 52 '|', 110 '|', 140 '|', wa_accident-mandt, wa_accident-accicase, wa_accident-truckid, wa_accident-driverid, wa_accident-managerid, wa_accident-severity, wa_accident-accidesc, wa_accident-folldesc, wa_accident-follcost, 150 '|'. HIDE: wa_accident-folldesc. FORMAT COLOR OFF. ENDLOOP. ULINE (150). ENDFORM. *---------------------------------------------------------*Write page header details. *---------------------------------------------------------FORM write_footer. FORMAT COLOR COL_TOTAL. ULINE (150). WRITE: con_footer_1, total_rec, con_footer_2, total_cost. ULINE (150). FORMAT COLOR OFF. ENDFORM. *--------------------------------------------------------* Line Details for a records *--------------------------------------------------------FORM line_details. IF sy-lsind = 1. ULINE 40(80). WRITE:/, 40 con_accnum, wa_accident-accicase, /. WRITE:/, 40 con_drinum, wa_accident-driverid, /. WRITE:/, 40 con_accdesc, wa_accident-folldesc, /. ULINE 40(80). ENDIF. IF sy-lsind = 2. MESSAGE e000(/ain/actvt_helper) WITH con_drill_error. ENDIF. ENDFORM. *----------------------------------------------------------------------* * Write Data to the external file *----------------------------------------------------------------------* FORM write_file. OPEN DATASET fuel_file FOR OUTPUT IN BINARY MODE. LOOP AT itab_accident INTO wa_accident. TRANSFER wa_accident TO fuel_file. IF sy-ucomm = con_write. ADD 1 to total_rec. ENDIF. ENDLOOP. MESSAGE i000(/ain/actvt_helper) WITH con_msg total_rec con_msg2. CLOSE DATASET fuel_file. ENDFORM. *&---------------------------------------------------------------------* *& Module STATUS_0120 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_0130 OUTPUT. SET PF-STATUS 'DYNPRO'. SET TITLEBAR '130'. ENDMODULE. " STATUS_0130 OUTPUT Part 2 Program 2: Truck Details *&---------------------------------------------------------------------* *& Report ZM30FINAL1 *& *&---------------------------------------------------------------------* *& *& Description: *&---------------------------------------------------------------------* REPORT ZM30FINAL1 LINE-SIZE 75 LINE-COUNT 26(5). TYPES: BEGIN OF truck, mandt TYPE truckid TYPE model TYPE colour TYPE driverid TYPE managerid TYPE firstname lastname title address phone email TYPE TYPE TYPE TYPE TYPE TYPE z30truckdtl-mandt, z30truckdtl-truckid, z30truckdtl-model, z30truckdtl-colour, z30truckdtl-driverid, z30truckdtl-managerid, Z30REGMG-firstname, Z30REGMG-lastname, Z30REGMG-title, Z30REGMG-address, Z30REGMG-phone, Z30REGMG-email, END OF truck. * Variables DATA: itab_truck TYPE STANDARD TABLE OF truck, wa_truck TYPE truck. * Constants * Page Headers CONSTANTS con_header_1(75) TYPE c VALUE 'Client Driver ID ManagerID'. * Page Footer CONSTANTS con_foot1(45) '. Truck ID con_fname(15) con_lname(15) con_title(15) con_address(15) con_phone(15) con_email(15) TYPE TYPE TYPE TYPE TYPE TYPE c c c c c c VALUE VALUE VALUE VALUE VALUE VALUE 'First Name'. 'Last Name'. 'Title'. 'Address'. 'Phone'. 'Email'. *----------- Main Program START-OF-SELECTION. perform get_data. perform write_data. TOP-OF-PAGE. PERFORM write_header. END-OF-PAGE. PERFORM write_footer. END-OF-SELECTION. AT LINE-SELECTION. PERFORM line_details. *----- Forms *---------------------------------------------------------*Write page header details. *---------------------------------------------------------FORM write_header. FORMAT COLOR COL_HEADING. WRITE 3 con_header_1. ULINE (75). Colour TYPE c VALUE ' For further details contact: 1-888-Trucking * Subscreens CONSTANTS con_drill_error(30) TYPE c VALUE 'Cannot drill-down any further'. CONSTANTS CONSTANTS CONSTANTS CONSTANTS CONSTANTS CONSTANTS Model FORMAT COLOR OFF. ENDFORM. *---------------------------------------------------------* Get the data from both tables *---------------------------------------------------------form get_data. SELECT z30truckdtl~mandt z30truckdtl~truckid z30truckdtl~model z30truckdtl~colour z30truckdtl~driverid z30truckdtl~managerid Z30REGMG~firstname Z30REGMG~lastname Z30REGMG~title Z30REGMG~address Z30REGMG~phone Z30REGMG~email INTO corresponding fields of table itab_truck FROM Z30truckdtl join Z30REGMG on z30truckdtl~managerid = Z30REGMG~managerid. ENDFORM. *--------------------------------------------------------* Write the data to the report *--------------------------------------------------------FORM write_data. ULINE (75). PERFORM get_data. LOOP AT itab_truck INTO wa_truck. FORMAT COLOR 5. WRITE: / 12 22 37 50 63 '|', '|', '|', '|', '|', '|', wa_truck-mandt, wa_truck-truckid, wa_truck-model, wa_truck-colour, wa_truck-driverid, wa_truck-managerid, 75 '|'. HIDE: wa_truck-firstname, wa_truck-lastname, wa_truck-title, wa_truck-address, wa_truck-phone, wa_truck-email. FORMAT COLOR OFF. ENDLOOP. ULINE (75). ENDFORM. *--------------------------------------------------------* Line Details for a records *--------------------------------------------------------FORM line_details. IF sy-lsind = 1. ULINE 10(65). WRITE:/, 10 con_fname, WRITE: 10 con_lname, WRITE: 10 con_title, WRITE: 10 con_address, WRITE: 10 con_phone, wa_truck-firstname, /. wa_truck-lastname, /. wa_truck-title, /. wa_truck-address, /. wa_truck-phone, /. WRITE: ULINE 10 con_email, 10(65). wa_truck-email, /. ENDIF. IF sy-lsind = 2. MESSAGE e000(/ain/actvt_helper) WITH con_drill_error. ENDIF. ENDFORM. *-----------------------------------------------------------*write footer details *-----------------------------------------------------------FORM write_footer. FORMAT COLOR COL_NORMAL. ULINE (75). SKIP. ULINE. WRITE / con_foot1. ULINE. FORMAT COLOR OFF. ENDFORM. Part 3 Program 3: Drivers Table Designed was a Drivers table made up of entries of each driver by full name, driverID, TruckID, ManagerID and each accident severity. It is broken down to show each managers list of drivers under them and each of the accident associated with each driver. It will show the high ratio, average ratio and low ratio in each of the regions. I find this to be beneficial because it would be something to show focus on and where things need to be changed if there is a correlation between a region of drivers with a high amount of accidents or severity levels.