Final Project

advertisement
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.
Download