‎2007 Feb 21 8:39 AM
How to displays employee bonus details with formatted output.
Please provide the step by step procedure.
vamsi
‎2007 Feb 21 9:13 AM
Hi,
This is also similar to the Pay Roll report. Sampl report is here;
Modify the Wage type for BONUS by looking into table T511 and process accordingly.
report zhrrept_payroll_report
no standard page heading
line-size 130 line-count 65
message-id zhr_msg.
*************Report Name : Payroll GOSI Report*********************
***************Description : This Report is to display the HR *
Payroll GOSI Details for the selected *
Period
**********************************************************************
Table Declarations
**********************************************************************
tables : pa0001, " HR Master Record: Infotype 0001 (Org. Assignment)
pa0002, " HR Master Record: Infotype 0002 (Personal Data)
pa0078, " HR Master Record: Infotype 0078 (Loan Payments)
pa0003, " HR Master Record: Infotype 0003 (Payroll Status)
pcl1, " HR Cluster I
pcl2, " HR Cluster II
t500p, " Personnel Areas
t001, " Company Codes
t001p. " Personnel Area/Subarea
**********************************************************************
Standard Includes
**********************************************************************
include : rpc2cd00, " Cluster CD data definition
rpc2rxx0, " Cluster RX data definition
rpc2rx00, " Cluster RX data definition internat. part
rpppxd00, " Data definition buffer PCL1/PCL2
rpppxd10, " Common part buffer PCL1/PCL2
rpppxm00. " Buffer handling routine
**********************************************************************
Declaration of Data and Internal Tables
**********************************************************************
Internal Table for Employee code,Name and Cost Center data
data : begin of itab_pernr occurs 0,
pernr like pernr-pernr,
werks like pa0001-werks,
btrtl like pa0001-btrtl,
kostl like pa0001-kostl,
end of itab_pernr.
Internal Tables for Payments and Deductions
data : begin of it_data1 occurs 0,
pernr like pernr-pernr, " Personnel Number
name(40) type c, " Employee Name
kostl like pa0001-kostl, " Cost Center
basic like pa0078-betrg, " Basic
hra like pa0078-betrg, " GOSI HRA
gtotl like pa0078-betrg, " GOSI Total salary
empcg like pa0078-betrg, " Employee Contribution
emplr like pa0078-betrg, " Employer Contribution
totnt like pa0078-betrg, " Total GOSI
end of it_data1.
Variables for Cluster processing
data : get_pernr_flag type i,
calcmolga like t500l-molga value '99',
calc_currency like t001-waers value 'DEM',
save_calc_currency like t001-waers,
count_top type i,
stand like pc260-srtza.
Program Variables
data : v_name(50) type c,
v_sno type i,
v_month(9) type c,
v_text1(14) type c,
v_month_t(3) type c,
v_count type i value 1,
ws_temp_month(2) type n,
ws_fbeg like sy-datum,
ws_fend like sy-datum,
ws_temp like pa0078-betrg,
ws_fend1 like sy-datum,
ws_fbeg1 like sy-datum.
Constants for Payments and Deductions
constants : cn_1000(4) type c value '1000', " Reference Basic
cn_3000(4) type c value '3000', " GOSI HRA
cn_3001(4) type c value '3001', " GOSI Salary
cn_3010(4) type c value '3010', " Employee Contribution
cn_3011(4) type c value '3011', " Employer Contribution
Other Constants
cn_01(2) type n value '01',
cn_31(2) type n value '31',
cn_100(3) type n value '100'.
**********************************************************************
Select-Options
**********************************************************************
selection-screen : skip,
begin of block 2 with frame title text-a02.
select-options: s_pernr for pa0001-pernr.
selection-screen skip.
parameters : p_month(2) type n obligatory,
p_year(4) type n obligatory,
p_werks like t500p-persa obligatory default 'AM02',
p_bukrs like pa0001-bukrs obligatory default '1100'.
selection-screen end of block 2.
*********Initialization*********************************************
initialization.
Previous month and current year for default input
p_month = sy-datum+4(2).
add -1 to p_month.
p_year = sy-datum(4).
*******At Selection Screen******************************************
at selection-screen.
Checking for the input values of selection screen.
perform screen_check.
**********Top of Page***********************************************
top-of-page.
Writing Headings of the Report.
perform header.
********Start of Selection******************************************
start-of-selection.
Selecting Data from Tables
perform get_data.
********End of Selection*********************************************
end-of-selection.
Writing data to output of the Report
perform write_data_out.
&----
*& Form SCREEN_CHECK
&----
Checking for the input values of selection screen.
----
form screen_check.
Validation of Personnel Number
clear pa0003.
select pernr from pa0003 up to 1 rows
into pa0003-pernr
where pernr in s_pernr.
endselect.
if sy-subrc ne 0.
message i001.
endif.
Validation of Company Code
clear t001.
select bukrs from t001 up to 1 rows
into t001-bukrs
where bukrs = p_bukrs.
endselect.
if sy-subrc ne 0.
message i002.
endif.
Validation of personnel Area
clear t500p.
select persa from t500p up to 1 rows
into t500p-persa
where persa = p_werks.
endselect.
if sy-subrc ne 0.
message i003.
endif.
endform. "SCREEN_CHECK
&----
*& Form HEADER
&----
Writing Headings of the Report
----
form header.
perform convert_month using p_month(2) v_month.
v_text1 = v_month.
concatenate v_text1 p_year into v_text1 separated by space.
skip 2.
write: /40 'PAYROLL GOSI REPORT FOR THE MONTH'(001),v_text1.
skip.
write:/1(127) sy-uline.
format color col_heading.
write:/1(127) sy-uline.
write:/ sy-vline, 2(3) 'SNo'(002),
5 sy-vline, 6(8) 'Emp.No'(003) centered,
14 sy-vline, 15(10) 'CostCenter'(004),
25 sy-vline, 26(40) 'Name of the Employee'(005) centered,
66 sy-vline, 67(9) 'Ref.Basic'(006) centered,
76 sy-vline, 77(9) 'GOSI HRA'(007),
86 sy-vline, 87(9) 'GOSI Sal.'(008) centered,
96 sy-vline, 97(9) 'Emp.Contr'(009),
106 sy-vline, 107(9) 'EmplrCntr'(010) centered,
116 sy-vline, 117(10) 'Total'(011),
127 sy-vline.
format color off.
write:/1(127) sy-uline.
endform. " HEADER
----
*& Form GET_DATA
&----
Selecting Data from Tables
----
form get_data.
set margin 5.
Hardcode for cluster processing purpose
save_calc_currency = calc_currency. "XUJP30K062848
get_pernr_flag = 0.
count_top = 0.
Selection based on Company Code, Department and Division.
select pernr werks btrtl kostl
into table itab_pernr from pa0001
where pernr in s_pernr
and bukrs eq p_bukrs
and werks eq p_werks.
Once only input for Division text select purpose
READ TABLE ITAB_PERNR INDEX 1.
WS_BTRTL = ITAB_PERNR-BTRTL.
Process input month and year into period start and period end
perform process_period.
Start of coding for Import Cluster Data
call function 'RP_GET_CURRENCY'
exporting
molga = calcmolga
importing
waers = calc_currency
exceptions
others.
if sy-subrc ne 0.
calc_currency = save_calc_currency.
endif.
Coding to obtain cluster CD and cluster BT
loop at itab_pernr.
Acquire employee name
perform get_emp_name.
cd-key-pernr = itab_pernr-pernr.
Acquire cluster CD
perform import_cluster.
get_pernr_flag = 1.
check : ocd-version-molga eq calcmolga.
loop at rgdir.
rx-key-pernr = itab_pernr-pernr.
unpack rgdir-seqnr to rx-key-seqno.
check : rgdir-srtza eq stand or stand eq space.
check : ws_fbeg le rgdir-fpend or ws_fbeg1 le rgdir-fpend.
check : ws_fend ge rgdir-fpbeg or ws_fend1 ge rgdir-fpbeg.
perform import_bt.
Filter cluster to grab required wagetypes for amounts and quantity
perform filter_data.
endloop.
endloop.
endform.
----
*& Form PROCESS_PERIOD
&----
Obtain start of month and end of month for cluster selection
----
form process_period.
ws_fbeg(4) = p_year.
ws_fbeg+4(2) = p_month.
ws_fbeg+6(2) = cn_01.
ws_fend = ws_fbeg.
ws_fend+6(2) = cn_31.
Acquire Prev period start and end
ws_temp_month = p_month.
add -1 to ws_temp_month.
ws_fend1 = ws_fend.
ws_fend1+4(2) = ws_temp_month.
ws_fbeg1 = ws_fbeg.
ws_fbeg1+4(2) = ws_temp_month.
endform.
*----
form import_cluster.
*----
sy-subrc = 0.
rp-imp-c2-cd.
if sy-subrc eq 0.
if cd-version-number ne ocd-version-number.
WRITE: / 'Personalnummer:'(E00), RX-KEY-PERNR.
WRITE: / TEXT-E01, 'CD', TEXT-E02.
WRITE: / TEXT-E03,
OCD-VERSION-NUMMER.
WRITE: / TEXT-E04,
CD-VERSION-NUMMER.
SY-SUBRC = 8.
endif.
else.
WRITE: / TEXT-E00, RX-KEY-PERNR.
WRITE: / 'Cluster CD nicht gefunden'(E05).
endif. " SY-SUBRC EQ 0
endform.
*----
form get_emp_name.
*----
Obtain first and last name and concatenate into v_name.
select single * from pa0002 where pernr eq itab_pernr-pernr.
concatenate pa0002-vorna pa0002-nachn into v_name separated by space.
it_data1-name = v_name.
endform.
*----
form filter_data.
*----
Filtering codes for WageTypes
Filtered value is added to it_data1, it_data2 and it_data3 per
each required value. Select for BETRG(curr), BETPE(unit) via
LGART(wagetype).
loop at rt.
clear ws_temp.
case rt-lgart.
GOSI Values
when cn_1000.
it_data1-basic = rt-betrg.
when cn_3000.
it_data1-hra = rt-betrg.
when cn_3001.
it_data1-gtotl = rt-betrg.
when cn_3010.
it_data1-empcg = rt-betrg.
when cn_3011.
it_data1-emplr = rt-betrg.
endcase.
endloop.
it_data1-pernr = itab_pernr-pernr.
it_data1-kostl = itab_pernr-kostl.
append: it_data1.
clear: it_data1.
endform.
*----
form import_bt.
*----
rp-init-buffer.
rp-imp-c2-rx.
if rp-imp-rx-subrc eq 0.
if rx-version-number ne orx-version-number.
stop.
sy-subrc = 4.
else.
sy-subrc = 0.
endif.
else.
sy-subrc = 8.
write : / 'Inconsistencies between cluster directory '(021),
'and directory for PAYROLL RESULTS'(022).
write: / 'No payroll results found for data in cluster directory'(035).
write : / 'Please contact hotline to solve the current problem'(036).
endif.
endform.
*&----
*& Form write_data_out
*&----
Writing data to output of the Report
*----
form write_data_out.
sort it_data1 by pernr.
loop at it_data1.
v_sno = v_sno + 1.
format color col_normal.
write:/ sy-vline, 2(3) v_sno,
5 sy-vline, 6(8) it_data1-pernr,
14 sy-vline, 15(10) it_data1-kostl,
25 sy-vline, 26(40) it_data1-name,
66 sy-vline, 67(9) it_data1-basic,
76 sy-vline, 77(9) it_data1-hra,
86 sy-vline, 87(9) it_data1-gtotl,
96 sy-vline, 97(9) it_data1-empcg,
106 sy-vline, 107(9) it_data1-emplr.
it_data1-totnt = it_data1-empcg + it_data1-emplr.
write:116 sy-vline, 117(10) it_data1-totnt,
127 sy-vline.
format color off.
endloop.
clear v_sno.
write:/1(127) sy-uline.
endform. "WRITE_DATA_OUT
&----
*& Form CONVERT_MONTH
&----
Fetching Month Text
----
form convert_month using v_mth v_month_text.
case v_mth.
when '01'.
v_month_text = 'January'(023).
when '02'.
v_month_text = 'February'(024).
when '03'.
v_month_text = 'March'(025).
when '04'.
v_month_text = 'April'(026).
when '05'.
v_month_text = 'May'(027).
when '06'.
v_month_text = 'June'(028).
when '07'.
v_month_text = 'July'(029).
when '08'.
v_month_text = 'August'(030).
when '09'.
v_month_text = 'September'(031).
when '10'.
v_month_text = 'October'(032).
when '11'.
v_month_text = 'November'(033).
when '12'.
v_month_text = 'December'(034).
endcase.
endform. " CONVERT_MONTH
Regards,
Anji