SAP-ABAP SYSTEM PROJECT CUSTOM PAYROLL SYSTEM Presented to Sir. Raymund DilanBachelor of Science in Information Technology Undergraduate School University of the Cordilleras In Partial Fulfillment of The Requirements of the Course ITP1134 (ABAP Programming with SAP ABAP/4) By RAPHAEL T. CACAS GAMALIEL A. SALINAS August 2, 2016
Page |2 Table of ContentsCHAPTER I...................................................... 3 INTRODUCTION ................................................. 3 Business Transaction ....................................... 3 File Maintenance of Master Data ............................ 4 Transaction-related Report Generation ...................... 4CHAPTER II..................................................... 5 DATABASE DICTIONARY .......................................... 5 Entity-Relationship Diagram ................................ 5 Functions of Each Table .................................... 6 Table Structure of each table .............................. 7CHAPTER III................................................... 11 Transaction Code of DYNPRO .................................. 12 System Flowchart ............................................ 11 Screenshot of Directory ..................................... 12 Screenshots of Screens ...................................... 17CHAPTER IV.................................................... 24 SOURCE CODE LISTING ......................................... 24 Y247_MAIN_MENU Source Code ................................ 24 Y247_REPORTS Source Code .................................. 44 Y247MAINTOP Source Code ................................... 50
Page |3 CHAPTER I INTRODUCTIONShort Description of the System The system is a simple custom payroll system the composedof 1 business transaction, file maintenance of 6 master data and2 transaction-related reports. These are process payroll,employee maintenance, allowance maintenance, deductionsmaintenance (withholding tax, sss, philhealth and pagibig/hdmf),individual pay slip, and payroll summary. The system starts with collecting of master data for eachemployee assuming they are already hired. These are personalinformation, government I.D numbers and wage. Next, the userwill assign allowances to the employees. The deductions of theemployees are based on the withholding tax, sss, philhealth andpagibig/hdmf that are maintained in the system. When processing a payroll for each employee, the neededdata are the pay period (weekly) and the number of hours worked.Based on the needed data, the system will now compute theregular pay, overtime pay, allowances, deductions, and net pay. The system also generates reports such as individual payslip of employees and summary of payroll for a certain periodentered by the user.Business Transaction1.) Process Payroll – The user will need to enter number ofhours worked for a certain pay period to be able for the systemto process the payroll of the employees that correspond to rateper hour, overtime rate if applicable, deductions and allowances.
Page |4File Maintenance of Master Data1.) Employee Maintenance – This allows the user to add, edit anddelete employee master data in the system.2.) Allowance Maintenance a.) Allowance – This allows the user to add, edit anddelete employee allowances.b.) Employees' Allowances – This allows the user to assignand remove assigned allowances for each employee.3.) Deduction Maintenance a.) Withholding Tax – This allows the user to maintain thewithholding tax of employees. b.) SSS – This allows the user to maintain Social SecuritySystem (SSS) of employees. c.) PhilHealth – This allows the user to maintainPhilHealth of employees. d.) PAGIBIG/HDMF – This allows the user to maintainPAGIBIG/HDMF of employees.Transaction-related Report Generation1.) Employee Payslip – This allows the user to generateindividual payslip of employees.2.) Payroll Summary – This allows the user to generate payrollsummary of all active employees.
Page |5 CHAPTER II DATABASE DICTIONARYEntity-Relationship Diagram
Page |6Functions of Each Table Y247_EMPLOYEES – This table is used for the employee master data to record personal information and working information. Y247_ALLOWANCE – This is a master table used to record employees' personal information and work-related information. Y247_EMPALLWNC – This is a master table used to record employees' allowance(s) assigned to them. Y247_DEDUCTION – This is a transaction table used to record employees' deductions such as withholding tax and contributions. Y247_PAYSLIP – This is a transaction table used to record employees' pays for weekly pay period. Y247_BIR – This is a master table used to record withholding taxes amount for a specified salary range with exemption and percentage. Y247_SSST – This is a master table used to record SSS (Social Security System) employee contribution for a specified compensation range. Y247_PH – This is a master table used to record PhilHealth employee contribution for a specified compensation range. Y247_PI – This is a master table used to record Home Development Mutual Fund(HDMF) /PAG-IBIG employee contribution for a specified compensation range with percentage.
Page |7Table Structure of each tableY247_EMPLOYEESY247_ALLOWANCE
Page |8Y247_EMPALLWNCY247_DEDUCTIONY247_PAYSLIP
Page |9Y247_BIRY247_SSSTY247_PH
P a g e | 10Y247_PI
P a g e | 11 CHAPTER IIISystem FlowchartGenerate Report Desired summary Generate HR Specialist report? payroll Enter pay summary period Generate Payroll created Enter individual Report employee generated individual payslip I.D HR Specialist Enter employee Correct Enter corrected rate per hour rate per hour? rate per hour no Employee hired yesManage Payroll Manager Enter hours worked Enter corrected Review and and pay period pay period Approve pay no Payroll Program Validate hours yes Calculates Process employees worked and pay employees pay pay Correct pay period period? Payroll processed Payroll records Include allowances Include and overtime contributions and taxesMaintain Allowance Maintain Employee HR Specialist delete Delete employee Add Modify employee Employee? start Employee modified Update update employee Employee added HR Specialist Add Assign MaintainDeduction Maintain Maintain allowance employee HR Specialist withholding contribution allowance tax start Allowance start Deduction assigned maintained Allowance added
P a g e | 12Transaction Code of DYNPRO Y247_PAYROLL – This is the transaction code of the dynpro program.Screenshot of Directory
P a g e | 13
P a g e | 14
P a g e | 15
P a g e | 16
P a g e | 17Screenshots of ScreensScreen 0100 – This is the main menu of the system wherein users canchoose different functions.Screen 0101 – This is the screen of Employee Maintenance that is usedto add, edit, delete and display employee master data.
P a g e | 18Screen 0103 – This is the screen of Process Payroll that is used tocompute, pay, update and delete employee payroll.
P a g e | 19Screen 0104 – This is the screen of Employee Deductions that is usedto record employee contributions such as SSS, PhilHealth andPAGIBIG/HDMF, and Withholding Tax that will be used in the payrollprocessing.
P a g e | 20Screen 0105 – This is the screen of Employee Allowance that is used tomaintain employee allowance and set employee allowances.
P a g e | 21Screen 0106 – This is the screen of Employee Payslip that is used togenerate individual payslip of employees.
P a g e | 22
P a g e | 23Screen 0107 – This is the screen of Payroll Summary that is used togenerate overall payroll of employees.
P a g e | 24 CHAPTER IV SOURCE CODE LISTINGY247_MAIN_MENU Source CodeINCLUDE y247maintop.*&---------------------------------------------------------------------**& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_0100 INPUT.CASE ok_code.WHEN 'BACK' OR 'EXIT'.LEAVE TO SCREEN 100.WHEN 'EMP_MNTNCE'.LEAVE TO SCREEN 101.WHEN 'PRCSS_PYRL'.LEAVE TO SCREEN 103.WHEN 'EMP_ALLWNC'.LEAVE TO SCREEN 105.WHEN 'EMP_DDCTN'.LEAVE TO SCREEN 104.WHEN 'EMP_PYSLP'.LEAVE TO SCREEN 106.WHEN 'PYRLL_SMMY'.LEAVE TO SCREEN 107.ENDCASE.ENDMODULE. \" USER_COMMAND_0100 INPUT*----------------------------------------------------------------------** MODULE user_command_0101 INPUT*----------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_0101 INPUT.CASE ok_code.WHEN 'BACK' OR 'EXIT'.CLEAR it_employee.REFRESH it_employee.PERFORM clear_fields.LEAVE TO SCREEN 100.WHEN 'EMP_MNTNCE'.LEAVE TO SCREEN 101.
P a g e | 25WHEN 'PRCSS_PYRL'.LEAVE TO SCREEN 103.WHEN 'EMP_ALLWNC'.LEAVE TO SCREEN 105.WHEN 'EMP_DDCTN'.LEAVE TO SCREEN 104.WHEN 'EMP_PYSLP'.LEAVE TO SCREEN 106.WHEN 'PYRLL_SMMY'.LEAVE TO SCREEN 107.WHEN 'DISPLAY'.screenno = '101'.PERFORM display_allrecords.WHEN 'ENTER' OR 'SEARCH'.screenno = '101'.PERFORM check_id.WHEN 'SAVE'.screenno = '101'.PERFORM validate_fields.WHEN 'UPDATE'.screenno = '101'.PERFORM update_records.WHEN 'DELETE'.screenno = '101'.PERFORM delete_record.WHEN 'CLEAR'.screenno = '101'.PERFORM clear_fields.ENDCASE.ENDMODULE. \"user_command_0101 INPUT*----------------------------------------------------------------------** MODULE user_command_0103 INPUT*----------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_0103 INPUT.CASE ok_code.WHEN 'BACK' OR 'EXIT'.LEAVE TO SCREEN 100.WHEN 'EMP_MNTNCE'.LEAVE TO SCREEN 101.WHEN 'PRCSS_PYRL'.LEAVE TO SCREEN 103.WHEN 'EMP_ALLWNC'.LEAVE TO SCREEN 105.WHEN 'EMP_DDCTN'.LEAVE TO SCREEN 104.WHEN 'EMP_PYSLP'.LEAVE TO SCREEN 106.
P a g e | 26WHEN 'PYRLL_SMMY'.LEAVE TO SCREEN 107.WHEN 'ENTER'.screenno = '103'.PERFORM check_id.WHEN 'COMPUTE'.PERFORM compute_salary.WHEN 'PAY'.PERFORM save_payroll.WHEN 'CLEAR'.screenno = '103'.PERFORM clear_fields.WHEN 'DELETE'.screenno = '103'.PERFORM delete_record.PERFORM clear_fields.ENDCASE.ENDMODULE. \"user_command_0102 INPUT*----------------------------------------------------------------------** MODULE user_command_0104 INPUT*----------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_0104 INPUT.CASE ok_code.WHEN 'BACK' OR 'EXIT'.LEAVE TO SCREEN 100.WHEN 'EMP_MNTNCE'.LEAVE TO SCREEN 101.WHEN 'PRCSS_PYRL'.LEAVE TO SCREEN 103.WHEN 'EMP_ALLWNC'.LEAVE TO SCREEN 105.WHEN 'EMP_DDCTN'.LEAVE TO SCREEN 104.WHEN 'EMP_PYSLP'.LEAVE TO SCREEN 106.WHEN 'PYRLL_SMMY'.LEAVE TO SCREEN 107.WHEN 'SAVE' OR 'UPDATE'.screenno = '104'.PERFORM update_records.WHEN 'DISPLAY'.screenno = '104'.PERFORM display_allrecords.WHEN 'DELETE'.screenno = '104'.PERFORM delete_record.ENDCASE.
P a g e | 27ENDMODULE. \" USER_COMMAND_0104 INPUT*----------------------------------------------------------------------** MODULE user_command_0105 INPUT*----------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_0105 INPUT.CASE ok_code.WHEN 'BACK' OR 'EXIT'.LEAVE TO SCREEN 100.WHEN 'EMP_MNTNCE'.LEAVE TO SCREEN 101.WHEN 'PRCSS_PYRL'.LEAVE TO SCREEN 103.WHEN 'EMP_ALLWNC'.LEAVE TO SCREEN 105.WHEN 'EMP_DDCTN'.LEAVE TO SCREEN 104.WHEN 'EMP_PYSLP'.LEAVE TO SCREEN 106.WHEN 'PYRLL_SMMY'.LEAVE TO SCREEN 107.WHEN 'BTNSEARCH'.screenno = '105'.boxno = '1'.PERFORM check_id.WHEN 'BTNSEARCHALLWNC'.screenno = '105'.boxno = '2'.PERFORM check_id.WHEN 'BTNDISPLAY'.screenno = '105'.boxno = '1'.PERFORM display_allrecords.WHEN 'BTNSAVE'.screenno = '105'.boxno = '1'.PERFORM validate_fields.WHEN 'BTNDISPLAYALLWNC'.screenno = '105'.boxno = '2'.PERFORM display_allrecords.WHEN 'BTNDELETE'.screenno = '105'.boxno = '1'.PERFORM delete_record.WHEN 'BTNUPDATE'.screenno = '105'.boxno = '1'.
P a g e | 28PERFORM update_records.WHEN 'BTNCLEAR'.screenno = '105'.boxno = '1'.PERFORM clear_fields.WHEN 'BTNADDALLWNC'.screenno = '105'.boxno = '2'.PERFORM validate_fields.WHEN 'BTNCLEARALLWNC'.screenno = '105'.boxno = '2'.PERFORM clear_fields.WHEN 'BTNUPDATEALLWNC'.screenno = '105'.boxno = '2'.PERFORM update_records.WHEN 'BTNDELETEALLWNC'.screenno = '105'.boxno = '2'.PERFORM delete_record.ENDCASE.ENDMODULE. \" USER_COMMAND_0105 INPUT*&---------------------------------------------------------------------**& Module USER_COMMAND_0106 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_0106 INPUT.CASE ok_code.WHEN 'BACK' OR 'EXIT'.LEAVE TO SCREEN 100.WHEN 'EMP_MNTNCE'.LEAVE TO SCREEN 101.WHEN 'PRCSS_PYRL'.LEAVE TO SCREEN 103.WHEN 'EMP_ALLWNC'.LEAVE TO SCREEN 105.WHEN 'EMP_DDCTN'.LEAVE TO SCREEN 104.WHEN 'EMP_PYSLP'.LEAVE TO SCREEN 106.WHEN 'PYRLL_SMMY'.LEAVE TO SCREEN 107.WHEN 'BTNGENERATE' OR 'ENTER'.SUBMIT y247_reports WITHpfrom = txtperiodfrom WITHpto = txtperiodto WITHdecision = '2' WITH
P a g e | 29empid = txtempidAND RETURN.ENDCASE.ENDMODULE. \" USER_COMMAND_0106 INPUT*&---------------------------------------------------------------------**& Module USER_COMMAND_0107 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE user_command_0107 INPUT.CASE ok_code.WHEN 'BACK' OR 'EXIT'.LEAVE TO SCREEN 100.WHEN 'EMP_MNTNCE'.LEAVE TO SCREEN 101.WHEN 'PRCSS_PYRL'.LEAVE TO SCREEN 103.WHEN 'EMP_ALLWNC'.LEAVE TO SCREEN 105.WHEN 'EMP_DDCTN'.LEAVE TO SCREEN 104.WHEN 'EMP_PYSLP'.LEAVE TO SCREEN 106.WHEN 'PYRLL_SMMY'.LEAVE TO SCREEN 107.WHEN 'BTNGENERATE'.SUBMIT y247_reports WITHpfrom = txtperiodfrom WITHpto = txtperiodto WITHdecision = '1' WITHempid =''AND RETURN.ENDCASE.ENDMODULE. \" USER_COMMAND_0107 INPUT*&---------------------------------------------------------------------**& Form compute_salary*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM save_payroll.IF allowsave = 'True'.IF decision = 'Modify'.PERFORM delete_record.ENDIF.\"save the deductionLOOP AT it_dd INTO wa_dd.MODIFY y247_deduction FROM wa_dd.ENDLOOP.\"save the payroll
P a g e | 30LOOP AT it_pyslp INTO wa_pyslp.MODIFY y247_payslip FROM wa_pyslp.ENDLOOP.PERFORM clear_fields.decision = 'Add'.ENDIF.MESSAGE i888(sabapdocu) WITH 'TRANSACTION HAS BEEN RECORDED.'.ENDFORM. \"save_payroll*&---------------------------------------------------------------------**& Form compute_salary*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM compute_salary.\"Get employee rate per hourIF txtnhw <= '0.00' AND txtempid <> '' AND txtperiodfrom > '01.01.2000' AND txtperiodto > txtperiodfrom.MESSAGE i888(sabapdocu) WITH 'INCOMPLETE ENTRIES.'.allowsave = 'False'.ELSE.allowsave = 'True'.\"Clears internal tables and working areasCLEAR: wa_pyslp, wa_dd, wa_wpay.REFRESH: it_pyslp,it_dd, it_wpay.FREE: it_pyslp,it_dd, it_wpay.\"Checks for employee's rate per hourSELECT emp_rate FROM y247_employeesINTO wa_wpay-rph WHERE emp_id = txtempid.ENDSELECT.\"compute regularpay and overtimepayIF txtnhw LE 40.wa_wpay-reggpay = wa_wpay-rph * txtnhw.ELSE.wa_wpay-othrs = txtnhw - '40.00'.wa_wpay-otrate = wa_wpay-rph * '1.25'.wa_wpay-otpay = wa_wpay-othrs * ( wa_wpay-otrate ).wa_wpay-reggpay = wa_wpay-rph * '40.00'.ENDIF.\"Get the sum of regpay and otpaywa_wpay-weekgpay = wa_wpay-reggpay + wa_wpay-otpay.\"Get the sum of all allowancesSELECT SUM( allw~allw_amount )INTO wa_wpay-weekallwFROM y247_empallwnc AS empallwJOIN y247_employees AS empON emp~emp_id = empallw~emp_idJOIN y247_allowance AS allwON empallw~allw_id = allw~allw_idWHERE empallw~emp_id = txtempid AND empallw~allw_from LE txtperiodfrom
P a g e | 31AND empallw~allw_to GE txtperiodto. \"Divide the allowances into 4 eq weeks of 1 month wa_wpay-weekallw = wa_wpay-weekallw * '0.25'. \"Multiply the regular pay by 4 to get the equivalent EE in SSS table wa_wpay-weekgpay = wa_wpay-weekgpay * '4.00'. \"Get the MAX value from dd_no + 1 lv_max = 0. SELECT MAX( dd_no ) FROM y247_deduction INTO lv_max. lv_max = lv_max + 1. SELECT total FROM y247_ssst INTO wa_wpay-weeksss WHERE start_comp LE wa_wpay-weekgpay AND end_comp GE wa_wpay-weekgpay. ENDSELECT. wa_wpay-weeksss = wa_wpay-weeksss * '0.25'. wa_dd-dd_no = lv_max. wa_dd-dd_type = 'SSS'. wa_dd-amount = wa_wpay-weeksss. wa_dd-dd_from = txtperiodfrom. wa_dd-dd_to = txtperiodto. wa_dd-emp_id = txtempid. APPEND wa_dd TO it_dd. \"Divide back the regular pay into 4 again \"wa_wpay-reggpay = wa_wpay-reggpay DIV '4.00'. \"Divide the SSS into 4 to compute the income tax lv_max = lv_max + 1. SELECT total FROM y247_ph INTO wa_wpay-weekph WHERE sal_start LE wa_wpay-weekgpay AND sal_end GE wa_wpay-weekgpay. ENDSELECT. lv_max = lv_max + 1. wa_wpay-weekph = wa_wpay-weekph * '0.25'. wa_dd-dd_no = lv_max. wa_dd-dd_type = 'PHILHEALTH'. wa_dd-amount = wa_wpay-weekph. wa_dd-dd_from = txtperiodfrom. wa_dd-dd_to = txtperiodto. wa_dd-emp_id = txtempid. APPEND wa_dd TO it_dd. SELECT total FROM y247_pi INTO wa_wpay-weekpi WHERE sal_start LE wa_wpay-weekgpay AND
P a g e | 32 sal_end GE wa_wpay-weekgpay. ENDSELECT. \"Get the sum of all contributions wa_wpay-weekpi = wa_wpay-weekpi * wa_wpay-weekgpay. lv_max = lv_max + 1. wa_wpay-weekpi = wa_wpay-weekpi * '0.25'. wa_dd-dd_no = lv_max. wa_dd-dd_type = 'HDMF'. wa_dd-amount = wa_wpay-weekpi. wa_dd-dd_from = txtperiodfrom. wa_dd-dd_to = txtperiodto. wa_dd-emp_id = txtempid. APPEND wa_dd TO it_dd. \"wa_wpay-reggpay = wa_wpay-reggpay DIV '4.00'. wa_wpay-weekgpay = wa_wpay-weekgpay * '0.25'. wa_wpay-weekcontrb = wa_wpay-weeksss + wa_wpay-weekpi + wa_wpay-weekph. \"Compute WTAX wa_wpay-taxblincome = wa_wpay-weekgpay - wa_wpay-weekcontrb. SELECT SINGLE bir~amount bir~percentage bir~sal_start FROM y247_bir AS bir INTO (wa_wpay-amount, wa_wpay-percnt, wa_wpay-sal_start) WHERE bir~sal_start LE wa_wpay-taxblincome AND bir~sal_end GE wa_wpay-taxblincome. wa_wpay-weekwtax = wa_wpay-taxblincome - wa_wpay-sal_start. wa_wpay-weekwtax = wa_wpay-weekwtax * wa_wpay-percnt. wa_wpay-weekwtax = wa_wpay-weekwtax + wa_wpay-amount. \"Add the allowance into weekly gross pay lv_max = lv_max + 1. wa_dd-dd_no = lv_max. wa_dd-dd_type = 'WTAX'. wa_dd-amount = wa_wpay-weekwtax. wa_dd-dd_from = txtperiodfrom. wa_dd-dd_to = txtperiodto. wa_dd-emp_id = txtempid. APPEND wa_dd TO it_dd. wa_wpay-weekgpay = wa_wpay-weekgpay + wa_wpay-weekallw. \"compute netpay wa_wpay-weekddctn = wa_wpay-weekwtax + wa_wpay-weekcontrb. wa_wpay-netpay = wa_wpay-weekgpay - ( wa_wpay-weekddctn ).* APPEND wa_wpay TO it_wpay. lv_max = 0. SELECT MAX( pay_id ) FROM y247_payslip INTO lv_max. lv_max = lv_max + 1. wa_pyslp-pay_id = lv_max. wa_pyslp-total_regpay = wa_wpay-reggpay. wa_pyslp-total_rhworked = txtnhw. wa_pyslp-total_otpay = wa_wpay-otpay.
P a g e | 33wa_pyslp-total_othworked = wa_wpay-othrs.wa_pyslp-total_allwnce = wa_wpay-weekallw.wa_pyslp-total_income = wa_wpay-weekgpay.wa_pyslp-total_ddction = wa_wpay-weekddctn.wa_pyslp-net_pay = wa_wpay-netpay.wa_pyslp-pay_from = txtperiodfrom.wa_pyslp-pay_to = txtperiodto.wa_pyslp-date_added = sy-datum.wa_pyslp-emp_id = txtempid.APPEND wa_pyslp TO it_pyslp.ENDIF.ENDFORM. \"compute_salary*&---------------------------------------------------------------------**& Form check_id*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM check_id.IF screenno = '101'.SELECT emp_idFROM y247_employees AS tblempINTO CORRESPONDING FIELDS OF TABLE it_employeeWHERE tblemp~emp_id = txtempid.IF sy-dbcnt = 0 AND txtempid <> ''.MESSAGE i888(sabapdocu) WITH 'EMPLOYEE ID IS AVAILABLE.'.ELSE.PERFORM load_search_result.MESSAGE i888(sabapdocu) WITH 'EMPLOYEE ID IS ALREADY TAKEN.'.ENDIF.ELSEIF screenno = '103'.LOOP AT it_employee INTO wa_employee WHERE sel EQ 'X'.txtempid = wa_employee-emp_id.ENDLOOP.IF txtempid EQ ''.MESSAGE i888(sabapdocu) WITH 'ENTER EMPLOYEED ID.'.ENDIF.IF txtperiodfrom < '01.01.2000' OR txtperiodto < txtperiodfrom.MESSAGE i888(sabapdocu) WITH 'ENTER PAY PERIOD'.ENDIF.IF txtempid <> '' AND txtperiodfrom > '01.01.2000' AND txtperiodto > txtperiodfrom.SELECT * FROM y247_employees WHERE y247_employees~emp_id = txtempid.ENDSELECT.IF sy-dbcnt = 1. SELECT * FROM y247_payslip WHERE emp_id EQ txtempid AND ( pay_from LE txtperiodfrom AND pay_to GE txtperiodto ). ENDSELECT. IF sy-dbcnt = 0. allowsave = 'True'.
P a g e | 34 ELSE. allowsave = 'False'. ENDIF. ENDIF. IF allowsave = 'False'. MESSAGE i888(sabapdocu) WITH 'EMPLOYEE IS ALREADY BEEN PAID.'. decision = 'Modify'. \"Insert here SELECT total_rhworked FROM y247_payslip INTO txtnhw WHERE emp_id = txtempid AND ( pay_from LE txtperiodfrom AND pay_to GE txtperiodto ). ENDSELECT. allowsave = 'True'. PERFORM compute_salary. ELSE. MESSAGE i888(sabapdocu) WITH 'EMPLOYEE IS NOT YET PAID. COMPUTE NOW.'. decision = 'Add'. ENDIF. ENDIF. ELSEIF screenno = '105'. IF boxno = '1'. SELECT * INTO CORRESPONDING FIELDS OF TABLE it_allowance FROM: y247_empallwnc AS empallw JOIN y247_employees AS emp ON empallw~emp_id = emp~emp_id JOIN y247_allowance AS allw ON allw~allw_id = empallw~allw_id WHERE allw~allw_id = txtallwid AND allw_from = txtallwfrom AND allw_to = txtallwto AND emp~emp_type = txtemptype AND emp~emp_stat = 'ACTIVE' ORDER BY ea_id. IF sy-dbcnt <> 0. PERFORM load_search_result. MESSAGE i888(sabapdocu) WITH 'ALLOWANCE IS ALREADY SET TO EMPLOYEE.'. allowsave = 'False'. ELSEIF txtemptype = '' OR txtallwid = '' OR txtallwfrom = '' OR txtallwfrom = '' OR txtallwto = ''. MESSAGE i888(sabapdocu) WITH 'FILL ALL FIELDS TO CHECK EMPLOYEE ALLOWANCE'. allowsave = 'False'. ELSEIF sy-dbcnt = 0. MESSAGE i888(sabapdocu) WITH 'ALLOWANCE IS AVAILABLE FOR EMPLOYEES.'. allowsave = 'True'. ENDIF. ELSE. SELECT * FROM y247_allowance AS allwc INTO CORRESPONDING FIELDS OF TABLE it_allwnconly WHERE allwc~allw_id = txtsetallwid OR allwc~allw_type = txtsetallwtype.
P a g e | 35IF sy-dbcnt <> 0. PERFORM load_search_result. MESSAGE i888(sabapdocu) WITH 'ALLOWANCE IS ALREADY EXIST.'.ELSEIF txtsetallwid = '' OR txtsetallwtype = ''.\" OR txtSETallwAMOUNT= '' OR txtallwDESC = ''. MESSAGE i888(sabapdocu) WITH 'FILL ALLOWANCE ID OR TYPE TO CHECK ALLOWANCE'.ELSEIF sy-dbcnt = 0. MESSAGE i888(sabapdocu) WITH 'ALLOWANCE IS AVAILABLE.'.ENDIF.ENDIF.ENDIF.ENDFORM. \"check_id*&---------------------------------------------------------------------**& Form delete_record*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM delete_record.IF screenno = '101'.LOOP AT it_employee INTO wa_employee WHERE sel EQ 'X'.tempempid = wa_employee-emp_id.ENDLOOP.DELETE it_employee WHERE sel EQ 'X'.DELETE FROM y247_employees WHERE emp_id EQ tempempid.MESSAGE i888(sabapdocu) WITH 'EMPLOYEE HAS BEEN DELETED.'.ELSEIF screenno = '103'.DELETE FROM y247_deduction WHERE emp_id = txtempid AND dd_from LE txtperiodfrom AND dd_to GE txtperiodto.DELETE FROM y247_payslip WHERE emp_id = txtempid AND pay_from LE txtperiodfrom AND pay_to GE txtperiodto.ELSEIF screenno = '105'.IF boxno = '1'.LOOP AT it_allowance INTO wa_allowance WHERE sel EQ 'X'. tempempid = wa_allowance-ea_id.ENDLOOP.DELETE it_allowance WHERE sel EQ 'X'.DELETE FROM y247_empallwnc WHERE ea_id EQ tempempid.MESSAGE i888(sabapdocu) WITH 'ALLOWANCE HAS BEEN DELETED'.ELSE.LOOP AT it_allwnconly INTO wa_allwnconly WHERE sel EQ 'X'. tempempid = wa_allwnconly-allw_id.ENDLOOP.DELETE it_allwnconly WHERE sel EQ 'X'.DELETE FROM y247_allowance WHERE allw_id EQ tempempid.MESSAGE i888(sabapdocu) WITH 'ASSIGNED ALLOWANCE HAS BEEN DELETED.'.ENDIF.ELSEIF screenno = '104'.\"DELETE WTAX RECORD
P a g e | 36LOOP AT it_wtax INTO wa_wtax WHERE sel EQ 'X' AND wtax_no <> '0'.temptaxid = wa_wtax-wtax_no.ENDLOOP.DELETE it_wtax WHERE sel EQ 'X'.DELETE FROM y247_bir WHERE wtax_no EQ temptaxid.\"DELETE SSS RECORDLOOP AT it_sss INTO wa_sss WHERE sel EQ 'X' AND sss_no <> '0'.temptaxid = wa_sss-sss_no.ENDLOOP.DELETE it_sss WHERE sel EQ 'X'.DELETE FROM y247_ssst WHERE sss_no EQ temptaxid.\"DELETE PH RECORDLOOP AT it_ph INTO wa_ph WHERE sel EQ 'X' AND ph_no <> '0'.temptaxid = wa_ph-ph_no.ENDLOOP.DELETE it_ph WHERE sel EQ 'X'.DELETE FROM y247_ph WHERE ph_no EQ temptaxid.\"DELETE PI RECORDLOOP AT it_pi INTO wa_pi WHERE sel EQ 'X' AND pi_no <> '0'.temptaxid = wa_pi-pi_no.ENDLOOP.DELETE it_pi WHERE sel EQ 'X'.DELETE FROM y247_pi WHERE pi_no EQ temptaxid.ENDIF.temptaxid = 0.PERFORM display_allrecords.ENDFORM. \"DELETE_EMPLOYEE*&---------------------------------------------------------------------**& Form clear_fields*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM clear_fields.IF screenno = '101'.CLEAR: txtempid, txtempfname,txtemplname,txtempmname,txtempadd,txtempbdate,txtempsex,txtemppos,txtempdept,txtempstat,txtempdhired,txtemptype,txtempphone,txthrate,txtsssno,txttinno,txtphno,txtpino.ELSEIF screenno = '105'.IF boxno = '1'.CLEAR: txtemptype, txtallwid, txtallwfrom,txtallwto.ELSE.CLEAR: txtsetallwid,txtsetallwtype,txtsetallwamount,txtallwdesc.ENDIF.ELSEIF screenno = '103'.CLEAR: txtempid, txtperiodfrom,txtperiodto,txtnhw.CLEAR: wa_pyslp, wa_dd, wa_wpay.REFRESH: it_pyslp,it_dd, it_wpay.FREE: it_pyslp,it_dd, it_wpay.ENDIF.
P a g e | 37ENDFORM. \"CLEAR_FIELDS*&---------------------------------------------------------------------**& Form UPDATE_RECORDS*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM update_records.IF screenno = '101'.LOOP AT it_employee INTO wa_employee WHERE sel EQ 'X'.IF wa_employee-emp_id <> ''. MODIFY y247_employees FROM wa_employee.ENDIF.ENDLOOP.MESSAGE i888(sabapdocu) WITH 'EMPLOYEE HAS BEEN UPDATED.'.PERFORM display_allrecords.ELSEIF screenno = '105'.IF boxno = '1'.LOOP AT it_allowance INTO wa_allowance WHERE sel EQ 'X'. MODIFY y247_empallwnc FROM wa_allowance.ENDLOOP.MESSAGE i888(sabapdocu) WITH 'EMPLOYEE ALLOWANCE HAS BEEN UPDATED'.ELSE.LOOP AT it_allwnconly INTO wa_allwnconly WHERE sel EQ 'X'. MODIFY y247_allowance FROM wa_allwnconly.ENDLOOP.MESSAGE i888(sabapdocu) WITH 'ALLOWANCE HAS BEEN UPDATED'.ENDIF.ELSEIF screenno = '104'.LOOP AT it_wtax INTO wa_wtax WHERE sel EQ 'X' AND wtax_no <> 0.MODIFY y247_bir FROM wa_wtax.ENDLOOP.LOOP AT it_sss INTO wa_sss WHERE sel EQ 'X' AND sss_no <> 0.MODIFY y247_ssst FROM wa_sss.ENDLOOP.LOOP AT it_ph INTO wa_ph WHERE sel EQ 'X' AND ph_no <> 0.MODIFY y247_ph FROM wa_ph.ENDLOOP.LOOP AT it_pi INTO wa_pi WHERE sel EQ 'X' AND pi_no <> 0.MODIFY y247_pi FROM wa_pi.ENDLOOP.MESSAGE i888(sabapdocu) WITH 'DEDUCTION HAS BEEN UPDATED.'.ENDIF.PERFORM display_allrecords.ENDFORM. \"user_command_0101 INPUT*&---------------------------------------------------------------------**& Form validate_fields*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*
P a g e | 38FORM validate_fields.IF screenno = '101'.IF txtempid = '' OR txtempfname = '' OR txtemplname = '' OR txtempmname ='' OR txtempadd = '' OR txtempbdate = '' OR txtempsex = '' OR txtemppos = '' OR txtempdept = '' OR txtempstat = '' OR txtempdhired= '' ORtxtemptype = '' OR txtempphone = '' OR txthrate = '' OR txtsssno = '' OR txttinno = '' OR txtphno = '' OR txtpino = '' .MESSAGE i888(sabapdocu) WITH 'INCOMPLETE ENTRIES'.ELSE.PERFORM save_record.* PERFORM clear_fields.ENDIF.ELSEIF screenno = '105'.IF boxno = '1'.IF txtemptype = '' OR txtallwid = '' OR txtallwfrom = '' OR txtallwto = ''. MESSAGE i888(sabapdocu) WITH 'INCOMPLETE ENTRIES'.ELSE. PERFORM save_record.* PERFORM clear_fields.ENDIF.ELSE.IF txtsetallwid = '' OR txtsetallwamount = '' OR txtsetallwtype = '' OR txtallwdesc = ''. MESSAGE i888(sabapdocu) WITH 'INCOMPLETE ENTRIES'.ELSE. PERFORM save_record.* PERFORM clear_fields.ENDIF.ENDIF.ENDIF.ENDFORM. \"validate_fields*&---------------------------------------------------------------------**& Form SAVE_RECORD*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM save_record.IF screenno = '101'.CLEAR wa_employee.REFRESH it_employee.FREE it_employee.wa_employee-emp_id = txtempid.wa_employee-emp_fname = txtempfname.wa_employee-emp_lname = txtemplname.wa_employee-emp_mname = txtempmname.wa_employee-emp_add = txtempadd.wa_employee-emp_bdate = txtempbdate.
P a g e | 39 wa_employee-emp_sex = txtempsex. wa_employee-emp_pos = txtemppos. wa_employee-emp_dept = txtempdept. wa_employee-emp_stat = txtempstat. wa_employee-date_hired = txtempdhired. wa_employee-emp_type = txtemptype. wa_employee-emp_phone = txtempphone. wa_employee-emp_rate = txthrate. wa_employee-emp_tinno = txttinno. wa_employee-emp_sssno = txtsssno. wa_employee-emp_phno = txtphno. wa_employee-emp_pino = txtpino. MODIFY y247_employees FROM wa_employee. MESSAGE i888(sabapdocu) WITH 'EMPLOYEE HAS BEEN ADDED'. ELSEIF screenno = '105'. IF boxno = '1'. IF allowsave = 'True'. lv_max = 0. CLEAR wa_allowance. REFRESH it_allowance. FREE it_allowance. CLEAR wa_employee. REFRESH it_employee. FREE it_employee. SELECT MAX( y247_empallwnc~ea_id ) INTO lv_max FROM y247_empallwnc. SELECT * FROM y247_employees INTO CORRESPONDING FIELDS OF TABLE it_employee WHERE emp_type = txtemptype AND emp_stat = 'ACTIVE'. LOOP AT it_employee INTO wa_employee. lv_max = lv_max + 1. wa_allowance-ea_id = lv_max. wa_allowance-allw_from = txtallwfrom. wa_allowance-allw_to = txtallwto. wa_allowance-emp_id = wa_employee-emp_id. wa_allowance-allw_id = txtallwid. MODIFY y247_empallwnc FROM wa_allowance. ENDLOOP. MESSAGE i888(sabapdocu) WITH 'ALLOWANCE HAS BEEN SAVED!'. allowsave = 'False'. ELSE. MESSAGE i888(sabapdocu) WITH 'SAVING OF ALLOWANCE IS NOT ALLOWED! CHECK FIRST.'. ENDIF. ELSE. CLEAR wa_allwnconly. REFRESH it_allwnconly.
P a g e | 40FREE it_allwnconly.wa_allwnconly-allw_id = txtsetallwid.wa_allwnconly-allw_type = txtsetallwtype.wa_allwnconly-allw_amount = txtsetallwamount.wa_allwnconly-allw_desc = txtallwdesc.MODIFY y247_allowance FROM wa_allwnconly.ENDIF.\" ELSEIF screenno = '104'.ENDIF.PERFORM display_allrecords.ENDFORM. \"SAVE_RECORD*&---------------------------------------------------------------------**& Form display_allrecords*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM display_allrecords.IF screenno = '101'.CLEAR wa_employee.REFRESH it_employee.FREE it_employee.SELECT * FROM y247_employees AS tbl1 INTO CORRESPONDING FIELDS OF TABLE it_employeeORDER BY tbl1~emp_id ASCENDING.DO 1 TIMES.wa_employee-emp_id = ''.INSERT wa_employee INTO TABLE it_employee.ENDDO.ELSEIF screenno = '105'.IF boxno = '1'.SELECT *INTO CORRESPONDING FIELDS OF TABLE it_allowanceFROM: y247_empallwncJOIN y247_employeesON y247_empallwnc~emp_id = y247_employees~emp_idJOIN y247_allowanceON y247_allowance~allw_id = y247_empallwnc~allw_id ORDER BY y247_empallwnc~ea_id.ELSE.SELECT * INTO CORRESPONDING FIELDS OF TABLE it_allwnconly FROM: y247_allowance.ENDIF.ELSEIF screenno = '104'.\"DISPLAY WTAX RECORDSSELECT *INTO CORRESPONDING FIELDS OF TABLE it_wtaxFROM: y247_bir
P a g e | 41ORDER BY PRIMARY KEY.DO 1 TIMES.wa_wtax-wtax_no = 0.wa_wtax-amount = ''.wa_wtax-percentage = ''.wa_wtax-sal_end = ''.wa_wtax-sal_start = ''.INSERT wa_wtax INTO TABLE it_wtax.ENDDO.\"DISPLAY SSS RECORDSSELECT *INTO CORRESPONDING FIELDS OF TABLE it_sssFROM: y247_ssstORDER BY PRIMARY KEY.DO 1 TIMES.wa_sss-sss_no = 0.wa_sss-start_comp = ''.wa_sss-total = ''.wa_sss-end_comp = ''.INSERT wa_sss INTO TABLE it_sss.ENDDO.\"DISPLAY PHILHEALTH RECORDSSELECT *INTO CORRESPONDING FIELDS OF TABLE it_phFROM: y247_phORDER BY PRIMARY KEY.DO 1 TIMES.wa_ph-ph_no = 0.wa_ph-total = ''.wa_ph-sal_end = ''.wa_ph-sal_start = ''.INSERT wa_ph INTO TABLE it_ph.ENDDO.\"DISPLAY PAGIBIG/HDMF RECORDSSELECT *INTO CORRESPONDING FIELDS OF TABLE it_piFROM: y247_piORDER BY PRIMARY KEY.DO 1 TIMES.wa_pi-pi_no = 0.wa_pi-total = ''.wa_pi-sal_end = ''.wa_pi-sal_start = ''.INSERT wa_pi INTO TABLE it_pi.ENDDO.ENDIF.ENDFORM. \"display_allrecords*&---------------------------------------------------------------------**& Form load_search_result
P a g e | 42*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM load_search_result.IF screenno = '101'.SELECT *FROM y247_employees AS tblempINTO CORRESPONDING FIELDS OF TABLE it_employeeWHERE tblemp~emp_id = txtempidORDER BY tblemp~emp_id.ELSEIF screenno = '105'.IF boxno = '1'.SELECT *INTO CORRESPONDING FIELDS OF TABLE it_allowanceFROM: y247_empallwncJOIN y247_employeesON y247_empallwnc~emp_id = y247_employees~emp_idJOIN y247_allowanceON y247_allowance~allw_id = y247_empallwnc~allw_id WHERE y247_empallwnc~emp_id = txtempid AND y247_empallwnc~allw_id = txtallwidAND y247_empallwnc~allw_from = txtallwfrom AND y247_empallwnc~allw_to =txtallwto.ELSE.ENDIF.ENDIF.ENDFORM. \"load_search_result*&---------------------------------------------------------------------**& Module STATUS_0100 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE status_0100 OUTPUT.SET PF-STATUS '100'.SET TITLEBAR '100'.ENDMODULE. \" STATUS_0100 OUTPUT*&---------------------------------------------------------------------**& Module STATUS_0101 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE status_0101 OUTPUT.SET PF-STATUS '101'.SET TITLEBAR '101'.ENDMODULE. \" STATUS_0101 OUTPUT*&---------------------------------------------------------------------**& Module STATUS_0103 OUTPUT*&---------------------------------------------------------------------** text
P a g e | 43*----------------------------------------------------------------------*MODULE status_0103 OUTPUT.SET PF-STATUS '103'.SET TITLEBAR '103'.ENDMODULE. \" STATUS_0103 OUTPUT*&---------------------------------------------------------------------**& Module STATUS_0104 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE status_0104 OUTPUT.SET PF-STATUS '104'.SET TITLEBAR '104'.ENDMODULE. \" STATUS_0104 OUTPUT*&---------------------------------------------------------------------**& Module STATUS_0105 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE status_0105 OUTPUT.SET PF-STATUS '105'.SET TITLEBAR '105'.ENDMODULE. \" STATUS_0105 OUTPUT*&---------------------------------------------------------------------**& Module STATUS_0106 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE status_0106 OUTPUT.SET PF-STATUS '106'.SET TITLEBAR '106'.ENDMODULE. \" STATUS_0106 OUTPUT*&---------------------------------------------------------------------**& Module STATUS_0107 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE status_0107 OUTPUT.SET PF-STATUS '107'.SET TITLEBAR '107'.ENDMODULE. \" STATUS_0107 OUTPUT*&SPWIZARD: DECLARATION OF TABLECONTROL 'TC_EMPLOYEES' ITSELFCONTROLS: tc_employees TYPE TABLEVIEW USING SCREEN 0101.*&SPWIZARD: OUTPUT MODULE FOR TC 'TC_EMPLOYEES'. DO NOT CHANGE THIS LINE*&SPWIZARD: UPDATE LINES FOR =UIVALENT SCROLLBARMODULE tc_employees_change_tc_attr OUTPUT.DESCRIBE TABLE it_employee LINES tc_employees-lines.ENDMODULE. \"TC_EMPLOYEES_CHANGE_TC_ATTR OUTPUT
P a g e | 44*&SPWIZARD: INPUT MODULE FOR TC 'TC_EMPLOYEES'. DO NOT CHANGE THIS LINE!*&SPWIZARD: MODIFY TABLEY247_REPORTS Source CodeREPORT y247_reports.TABLES: y247_payslip.PARAMETERS: pto TYPE sy-datum, pfrom TYPE sy-datum,decision TYPE c,empid TYPE string.\"PAYROLL SUMMARY DECLARATIONDATA: taxes TYPE p DECIMALS 2,contrib TYPE p DECIMALS 2,amount TYPE string VALUE '', datediff TYPE p DECIMALS 2,fullname TYPE string VALUE '',grandtotalTYPE p DECIMALS 2 VALUE '0.00',convdthrd TYPE string,convpfrom TYPE string, convpto TYPE string.\"PAYSLIP DECLARATIONCALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT' EXPORTING input = pfrom IMPORTING output = convpfrom.CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT' EXPORTING input = pto IMPORTING output = convpto.DATA: nhw TYPE p DECIMALS 2 VALUE '0.00',sss TYPE p DECIMALS 2,ph TYPE p DECIMALS 2,pi TYPE p DECIMALS 2,wtax TYPE p DECIMALS 2.TYPES: BEGIN OF ts_payslip, mandt TYPE y247_payslip-mandt,\" pay_id TYPE y247_payslip-pay_id, total_regpay TYPE y247_payslip-total_regpay, total_rhworked TYPE y247_payslip-total_rhworked, total_otpay TYPE y247_payslip-total_otpay, total_othworked TYPE y247_payslip-total_othworked, total_allwnce TYPE y247_payslip-total_allwnce, total_income TYPE y247_payslip-total_income, total_ddction TYPE y247_payslip-total_ddction, net_pay TYPE y247_payslip-net_pay, pay_from TYPE y247_payslip-pay_from, pay_to TYPE y247_payslip-pay_to, emp_id TYPE y247_payslip-emp_id, emp_fname TYPE y247_employees-emp_fname, emp_lname TYPE y247_employees-emp_lname, emp_mname TYPE y247_employees-emp_mname,
P a g e | 45 emp_tinno TYPE y247_employees-emp_tinno, emp_pos TYPE y247_employees-emp_pos, date_hired TYPE y247_employees-date_hired, emp_rate TYPE y247_employees-emp_rate, emp_dept TYPE y247_employees-emp_dept, END OF ts_payslip.TYPES: BEGIN OF ts_allowance, mandt TYPE y247_empallwnc-mandt, allw_from TYPE y247_empallwnc-allw_from, allw_to TYPE y247_empallwnc-allw_to, emp_id TYPE y247_empallwnc-emp_id, allw_type TYPE y247_allowance-allw_type, allw_amount TYPE y247_allowance-allw_amount, END OF ts_allowance.DATA: it_payslip TYPE TABLE OF ts_payslip, wa_payslip TYPE ts_payslip, it_allowance TYPE TABLE OF ts_allowance, wa_allowance TYPE ts_allowance.IF decision = '1'. SELECT: SUM( pay~total_regpay ) SUM( pay~total_otpay ) SUM( pay~total_allwnce ) SUM( pay~total_income ) SUM( pay~total_ddction ) SUM( pay~net_pay )\" min( pay~pay_from ) MAX( pay~pay_to ) pay~emp_id MAX( emp~emp_fname ) MAX( emp~emp_lname ) MAX( emp~emp_mname ) INTO (wa_payslip-total_regpay, wa_payslip-total_otpay, wa_payslip-total_allwnce, wa_payslip-total_income, wa_payslip-total_ddction, wa_payslip-net_pay, wa_payslip-emp_id, wa_payslip-emp_fname, wa_payslip-emp_lname, wa_payslip-emp_mname) FROM y247_payslip AS pay JOIN y247_employees AS emp ON pay~emp_id = emp~emp_id WHERE pay~pay_from BETWEEN pfrom AND pto AND emp~emp_stat = 'ACTIVE' GROUP BY pay~emp_id ORDER BY pay~emp_id. APPEND wa_payslip TO it_payslip. ENDSELECT.
P a g e | 46 IF sy-dbcnt = 0. WRITE: 'no result'. ENDIF. \"ULINE AT 5(145). WRITE: /5 ' '. WRITE: 5(168) 'Babap and Gabby Corp.' CENTERED. NEW-LINE. WRITE: 5(168) 'Employee Payroll Summary Report' CENTERED. WRITE: /5 'Date:', sy-datum. WRITE: /5 'Time:',sy-uzeit. WRITE: /5 'Pay Period: ', convpfrom, '-', convpto. WRITE: /5 sy-uline. NEW-LINE NO-SCROLLING. WRITE: 5(40)'Employee', 41(15)'Basic Pay', 57(15)'Overtime Pay', 73(15)'Allowances', 89(15)'Gross Pay', 105(15)'Contributions', 121(15)'Taxes', 137(16)'Total Deductions', 154(15) 'Net Pay'. LOOP AT it_payslip INTO wa_payslip. SELECT SUM( amount ) emp_id FROM y247_deduction INTO (contrib,empid)WHERE dd_from BETWEEN pfrom AND pto AND emp_id = wa_payslip-emp_id AND dd_type NE 'WTAX' GROUP BY emp_id ORDER BY emp_id. ENDSELECT. SELECT SUM( amount ) emp_id FROM y247_deduction INTO (taxes,empid) WHEREdd_from BETWEEN pfrom AND pto AND emp_id = wa_payslip-emp_id AND dd_type EQ 'WTAX' GROUP BY emp_id ORDER BY emp_id. ENDSELECT. fullname = ''. CONCATENATE fullname wa_payslip-emp_id INTO fullname. CONCATENATE fullname wa_payslip-emp_lname INTO fullname SEPARATED BY space. CONCATENATE fullname ',' INTO fullname. CONCATENATE fullname wa_payslip-emp_fname INTO fullname. CONCATENATE fullname wa_payslip-emp_mname INTO fullname SEPARATED BY space. WRITE: /5 sy-uline. NEW-LINE. WRITE: 5(40) fullname, 41(15) wa_payslip-total_regpay LEFT-JUSTIFIED, 57(15) wa_payslip-total_otpay LEFT-JUSTIFIED, 73(15) wa_payslip-total_allwnce LEFT-JUSTIFIED, 89(15) wa_payslip-total_income LEFT-JUSTIFIED, 105(15) contrib LEFT-JUSTIFIED,
P a g e | 47 121(15) taxes LEFT-JUSTIFIED, 137(16) wa_payslip-total_ddction LEFT-JUSTIFIED, 154(15) wa_payslip-net_pay LEFT-JUSTIFIED. ENDLOOP. WRITE: /5 sy-uline.ELSE. SELECT * INTO CORRESPONDING FIELDS OF TABLE it_payslip FROM y247_payslip AS pay JOIN y247_employees AS emp ON pay~emp_id = emp~emp_id WHERE pay~pay_from = pfrom AND pay~pay_to = pto AND emp~emp_id = empid. LOOP AT it_payslip INTO wa_payslip. CONCATENATE fullname wa_payslip-emp_lname INTO fullname SEPARATED BY space. CONCATENATE fullname ',' INTO fullname. CONCATENATE fullname wa_payslip-emp_fname INTO fullname. CONCATENATE fullname wa_payslip-emp_mname INTO fullname SEPARATED BY space. CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT' EXPORTING input = wa_payslip-date_hired IMPORTING output = convdthrd. WRITE: /5 'Date of Distribution: ', convpto. WRITE: /5 'Period Covered: ', convpfrom,' - ',convpto. WRITE: /5 'Name: ', fullname. WRITE: /5 'Position: ', wa_payslip-emp_pos. WRITE: /5 'Department: ', wa_payslip-emp_dept. WRITE: /5 'Date of Hire: ', convdthrd. WRITE: /5 'TIN No.: ', wa_payslip-emp_tinno. WRITE ' '. NEW-LINE. WRITE: 5(68) 'EARNINGS' CENTERED. NEW-LINE. \"ULINE AT 5(68). amount = wa_payslip-total_regpay. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'Regular Pay ', 38 '|', 39(32) amount CURRENCY amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. amount = wa_payslip-total_otpay. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'Overtime ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. SELECT *
P a g e | 48 INTO CORRESPONDING FIELDS OF TABLE it_allowance FROM y247_empallwnc AS empallw JOIN y247_employees AS emp ON emp~emp_id = empallw~emp_id JOIN y247_allowance AS allw ON empallw~allw_id = allw~allw_id WHERE empallw~emp_id = empid AND empallw~allw_from LE pfrom AND empallw~allw_to GE pto. LOOP AT it_allowance INTO wa_allowance. wa_allowance-allw_amount = wa_allowance-allw_amount * '0.25'. amount = wa_allowance-allw_amount. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30) wa_allowance-allw_type, 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. WRITE: 5(68) sy-uline. ENDLOOP. amount = wa_payslip-total_income. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: /5 '|', 7(30)'TOTAL ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. WRITE: 5(68) sy-uline. NEW-LINE. WRITE ' '. WRITE: 5(68) 'DEDUCTIONS' CENTERED. NEW-LINE. SELECT amount FROM y247_deduction INTO sss WHERE dd_from = pfrom AND dd_to = pto AND emp_id = empid AND dd_type = 'SSS'. ENDSELECT. SELECT amount FROM y247_deduction INTO ph WHERE dd_from = pfrom AND dd_to = pto AND emp_id = empid AND dd_type = 'PHILHEALTH'. ENDSELECT. SELECT amount FROM y247_deduction INTO pi WHERE dd_from = pfrom AND dd_to = pto AND emp_id = empid AND dd_type = 'HDMF'. ENDSELECT. SELECT amount FROM y247_deduction INTO wtax WHERE dd_from = pfrom AND dd_to = pto AND emp_id = empid AND dd_type = 'WTAX'. ENDSELECT. amount = sss. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'SSS ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. amount = ph. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'PhilHealth ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. amount = pi.
P a g e | 49 CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'PAGIBIG/HDMF ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. amount = wtax. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'Withholding Tax ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. amount = wa_payslip-total_ddction. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'TOTAL ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. WRITE: 5(68) sy-uline. WRITE ' '. NEW-LINE. amount = wa_payslip-total_income. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'Total Earnings ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. amount = wa_payslip-total_ddction. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'Total Deductions ', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. amount = wa_payslip-net_pay. CONCATENATE 'PHP' amount INTO amount SEPARATED BY space. WRITE: 5(68) sy-uline. WRITE: /5 '|', 7(30)'NET PAY', 38 '|', 39(32) amount RIGHT-JUSTIFIED, 72 '|'. NEW-LINE. WRITE: 5(68) sy-uline. fullname = ''. CONCATENATE fullname wa_payslip-emp_fname INTO fullname. CONCATENATE fullname wa_payslip-emp_lname INTO fullname SEPARATED BY space. CONCATENATE fullname wa_payslip-emp_mname INTO fullname SEPARATED BY space. WRITE: /5 fullname, 40 'CHRISTOPHER MICHAEL LANGAN'. WRITE: /5 ' '. WRITE: 5(30) sy-uline, 40(30) sy-uline. WRITE: /5 'Received by', 40 'Prepared by'.
P a g e | 50 WRITE: /5 'Date:', convpto, 40 'Date:', convpto. ENDLOOP.ENDIF.Y247MAINTOP Source Code*&---------------------------------------------------------------------**& Include Y247MAINTOP Module PoolY247_MAIN_MENU*&*&---------------------------------------------------------------------*PROGRAM y247_main_menu.TABLES: y247_payslip,y247_deduction,y247_employees, y247_allowance, y247_empallwnc,y247_bir, y247_ssst,y247_ph,y247_pi.TYPES: BEGIN OF ts_employee, mandt TYPE y247_employees-mandt, emp_id TYPE y247_employees-emp_id, emp_fname TYPE y247_employees-emp_fname, emp_lname TYPE y247_employees-emp_lname, emp_mname TYPE y247_employees-emp_mname, emp_add TYPE y247_employees-emp_add, emp_bdate TYPE y247_employees-emp_bdate, emp_sex TYPE y247_employees-emp_sex, emp_pos TYPE y247_employees-emp_pos, emp_dept TYPE y247_employees-emp_dept, emp_stat TYPE y247_employees-emp_stat, date_hired TYPE y247_employees-date_hired, emp_type TYPE y247_employees-emp_type, emp_phone TYPE y247_employees-emp_phone, emp_rate TYPE y247_employees-emp_rate, emp_tinno TYPE y247_employees-emp_tinno, emp_sssno TYPE y247_employees-emp_sssno, emp_phno TYPE y247_employees-emp_phno, emp_pino TYPE y247_employees-emp_pino, sel, END OF ts_employee.TYPES: BEGIN OF ts_allowance, mandt TYPE y247_empallwnc-mandt, ea_id TYPE y247_empallwnc-ea_id, allw_from TYPE y247_empallwnc-allw_from, allw_to TYPE y247_empallwnc-allw_to, emp_id TYPE y247_empallwnc-emp_id, allw_id TYPE y247_allowance-allw_id, allw_type TYPE y247_allowance-allw_type, allw_desc TYPE y247_allowance-allw_desc, allw_amount TYPE y247_allowance-allw_amount, emp_fname TYPE y247_employees-emp_fname, emp_lname TYPE y247_employees-emp_lname, emp_mname TYPE y247_employees-emp_mname,
Search