‎2006 Oct 11 1:02 PM
Hi guys,
Is there any function module where I can pass parameter to run payroll simulation and get RT cluster data or the final amount, before running the actually payroll.
Regards,
Atul
‎2006 Oct 11 1:23 PM
Hi atul,
1. Payroll processing is a huge process.
2. There is no single FM,
to start it.
3. It is started by the program only,
either in test run, or actual run.
regards,
amit m.
‎2006 Oct 11 5:44 PM
Pl take a look at the following function modules..
HR_PAYROLL &
SIMULATE_PAYROLL_RESULTS.
~Suresh
‎2006 Oct 12 6:05 AM
Hi Amit,
HR_PAYROLL_SIMULATION
There is a function module but it not given the ouptut.
Atul
‎2006 Oct 21 8:52 AM
Hi Guys,
I am using function HR_PAYROLL and the result is coming in tbuff tables, can any help me in how to read the data in proper format from cluster.
Atul
‎2007 Apr 11 8:17 AM
Hi,
An employee left the organisation in the middle of Jan 2007.And the same employee has rejoined in the same organisation for the same position on 15 Feb 2007.
Now when we r running payroll for this employee for FEb month system is giving the error related to function module HR_IN_CALC_MONTHS.Emp ID ..Can anyone pleasesuggest why this error cud be happening..
Regds
‎2007 Apr 11 8:22 AM
hii check this&----
*& Report ZHR_MONTHLYESI
*&
&----
*&
*& Monthly ESI report
&----
REPORT zhr_monthlyesi NO STANDARD PAGE HEADING LINE-SIZE 200.
TABLES : pa0588,pa0001.
***********DECLARATION OF INTERNAL TABLES**********************
DATA : BEGIN OF it_pa OCCURS 0,
pernr LIKE pa0001-pernr, " PERSONNEL NUMBER
ename LIKE pa0001-ename, " EMPLOYEE NAME
END OF it_pa.
DATA : BEGIN OF it_esi OCCURS 0,
pernr LIKE pa0001-pernr, " PERSONNEL NUMBER
esino LIKE pa0588-esino, " EMPLOYEE ESI ACCOUNT NUMBER
END OF it_esi.
DATA : BEGIN OF it_out OCCURS 0,
pernr LIKE pa0001-pernr, " PERSONNEL NUMBER
ename LIKE pa0001-ename, " EMPLOYEE NAME
esino LIKE pa0588-esino, " EMPLOYEE ESI ACCOUNT NUMBER
END OF it_out.
DATA it_0008 LIKE p0008 OCCURS 0 WITH HEADER LINE.
DATA pay_dir TYPE hrpy_rgdir.
DATA for_period TYPE string.
DATA tot_baspay LIKE q0008-sumbb. "value 0.
DATA s_year TYPE bkpf-gjahr.
DATA: myseqnr LIKE hrpy_rgdir-seqnr. " Field to store sequence number from payroll directory
DATA: myseqnr1 LIKE hrpy_rgdir-seqnr.
DATA : mypy TYPE payin_result. " Field to store payroll result from payroll directory.
DATA : mypy1 TYPE payin_result.
DATA : myrt LIKE TABLE OF pc207 WITH HEADER LINE. " Internal table for RT in payroll results.
DATA : mywpbp LIKE TABLE OF pc205 WITH HEADER LINE. " internal table for WPBP in payroll results.
DATA : myesi LIKE TABLE OF pc2_in08 WITH HEADER LINE.
DATA : BEGIN OF it_display OCCURS 0, "internal table to group and display req fields.
esino LIKE pa0588-esino, " Employee ESI number.
pernr LIKE pa0001-pernr,
ename LIKE pa0001-ename, " Employee name.
asoll LIKE pc205-asoll, " Payable days.
betrg LIKE pc207-betrg, " ESI basis.
eeesic LIKE pc207-betrg, " Employee ESI contribution.
eresic LIKE pc207-betrg, " Employer ESI contribution.
tot_esi LIKE pc207-betrg,
END OF it_display.
*****************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK a WITH FRAME TITLE text-001.
SELECT-OPTIONS:s_pernr FOR pa0001-pernr." default 5.
PARAMETERS : p_mon TYPE t247-ltx MATCHCODE OBJECT zmonth_sh.
PARAMETERS : p_year TYPE bkpf-gjahr.
SELECTION-SCREEN: END OF BLOCK a .
****************************************************************
AT SELECTION-SCREEN.
IF p_mon = ' '.
MESSAGE 'Enter Required month field' TYPE 'E'.
ELSEIF p_year = ' '.
MESSAGE 'Enter Required year field' TYPE 'E'.
ENDIF.
TRANSLATE p_mon TO LOWER CASE.
CASE p_mon.
WHEN 'april'.
CONCATENATE p_year '01' INTO for_period.
WHEN 'may'.
CONCATENATE p_year '02' INTO for_period.
WHEN 'june'.
CONCATENATE p_year '03' INTO for_period.
WHEN 'july'.
CONCATENATE p_year '04' INTO for_period.
WHEN 'august'.
CONCATENATE p_year '05' INTO for_period.
WHEN 'september'.
CONCATENATE p_year '06' INTO for_period.
WHEN 'october'.
CONCATENATE p_year '07' INTO for_period.
WHEN 'november'.
CONCATENATE p_year '08' INTO for_period.
WHEN 'december'.
CONCATENATE p_year '09' INTO for_period.
WHEN 'january'.
s_year = p_year.
s_year = s_year - 1.
CONCATENATE s_year '10' INTO for_period.
WHEN 'february'.
s_year = p_year.
s_year = s_year - 1.
CONCATENATE s_year '11' INTO for_period.
WHEN 'march'.
s_year = p_year.
s_year = s_year - 1.
CONCATENATE s_year '12' INTO for_period.
ENDCASE.
SELECT SINGLE * FROM hrpy_rgdir INTO pay_dir WHERE fpper = for_period AND pernr IN s_pernr.
IF sy-subrc <> 0.
MESSAGE 'No Record Exists For Specified period' TYPE 'E'.
ENDIF.
*****************************************************************
TOP-OF-PAGE.
WRITE :/10'Apollo Health Street Limited.',
/10 'Hyderabad.'.
WRITE :/10 'Monthly PF Statement.'.
WRITE :/10 'Code Number Of Establishment : ESI11.'.
WRITE :/10 'E.S.I Statement For The Month Of ', p_mon, p_year.
WRITE : sy-uline.
FORMAT COLOR COL_HEADING.
WRITE :/1(5) 'S.No',
8(20) 'ESI Number',
31(16) 'Personnel Number',
49(40) 'Employee Name',
85(12) 'Payable Days',
100(14) 'Total Earnings',
140(55) 'Contributions',
173(21) 'Total Contribution'.
WRITE :/131(21) 'Employee',
155(39) 'Employer'.
SKIP.
****************************************************************
START-OF-SELECTION.
SELECT pernr ename FROM pa0001 INTO TABLE it_pa WHERE pernr IN s_pernr.
SELECT pernr esino FROM pa0588 INTO TABLE it_esi WHERE pernr IN s_pernr.
LOOP AT it_pa.
READ TABLE it_esi WITH KEY pernr = it_pa-pernr.
it_out-pernr = it_pa-pernr.
it_out-ename = it_pa-ename.
it_out-esino = it_esi-esino.
APPEND it_out.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM it_out.
LOOP AT it_out.
it_display-esino = it_out-esino.
it_display-pernr = it_out-pernr.
it_display-ename = it_out-ename.
it_display-esino = it_out-esino.
it_display-ename = it_out-ename.
SELECT SINGLE seqnr FROM hrpy_rgdir
INTO myseqnr
WHERE pernr = it_out-pernr
AND fpper = for_period
AND srtza = 'A'.
IF sy-subrc = 0.
***********************TO READ RT IN PAYROLL RESULT***************
CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
EXPORTING
clusterid = 'IN'
employeenumber = it_out-pernr
sequencenumber = myseqnr
CHANGING
payroll_result = mypy
EXCEPTIONS
illegal_isocode_or_clusterid = 1
error_generating_import = 2
import_mismatch_error = 3
subpool_dir_full = 4
no_read_authority = 5
no_record_found = 6
versions_do_not_match = 7
error_reading_archive = 8
error_reading_relid = 9
OTHERS = 10.
myrt[] = mypy-inter-rt.
myesi[] = mypy-nat-esi.
READ TABLE myesi INDEX 1.
mywpbp[] = mypy-inter-wpbp.
READ TABLE mywpbp INDEX 1.
it_display-asoll = mywpbp-asoll.
READ TABLE myrt WITH KEY lgart = '/112'.
it_display-betrg = myrt-betrg.
READ TABLE myrt WITH KEY lgart = '/3E1'.
IF sy-subrc = 0.
it_display-eeesic = myrt-betrg.
ELSE.
it_display-eeesic = 0.
ENDIF.
READ TABLE myrt WITH KEY lgart = '/3E2'.
IF sy-subrc = 0.
it_display-eresic = myrt-betrg.
ELSE.
it_display-eeesic = 0.
ENDIF.
it_display-tot_esi = it_display-eeesic + it_display-eresic..
ENDIF.
*
CALL FUNCTION 'HR_GET_TOTAL_AMOUNT_P0008'
EXPORTING
pernr = it_out-pernr
date = sy-datum
p0008 = it_0008
P0001 =
FREQUENCY = ' '
leave_hourly = 'X'
IMPORTING
amount = tot_baspay
AMOUNT_ORIG =
FREQUENCY_ORIG =
FREQUENCY_ORIG_TEXT =
CURRENCY =
EXCEPTIONS
NO_ENTRY_IN_T001P = 1
NO_ENTRY_IN_T503 = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*
it_display-betrg = tot_baspay.
*
it_display-eeesic = ( tot_baspay * myesi-eecnr ) / 100.
it_display-eresic = ( tot_baspay * myesi-ercnr ) / 100.
it_display-tot_esi = it_display-eeesic + it_display-eresic.
*
APPEND it_display.
CLEAR it_display.
ENDLOOP.
DATA sno TYPE i VALUE 1.
FORMAT COLOR COL_NORMAL.
LOOP AT it_display WHERE tot_esi <> 0.
WRITE :/1(5) sno,
8(20) it_display-esino,
35(8) it_display-pernr,
47(40) it_display-ename,
88(6) it_display-asoll,
92(21) it_display-betrg,
118(21) it_display-eeesic,
142(21) it_display-eresic,
165(21) it_display-tot_esi.
SKIP.
SET LEFT SCROLL-BOUNDARY COLUMN 85.
sno = sno + 1.
ENDLOOP. report
reply if u have any doubts
‎2007 Apr 11 11:25 AM
Using this code how can i analise the error..Please guide me.this report is used to find the monthly pf status