Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Function for Payroll simulation

Former Member
0 Likes
1,951

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

7 REPLIES 7
Read only

Former Member
0 Likes
1,458

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.

Read only

0 Likes
1,458

Pl take a look at the following function modules..

HR_PAYROLL &

SIMULATE_PAYROLL_RESULTS.

~Suresh

Read only

0 Likes
1,458

Hi Amit,

HR_PAYROLL_SIMULATION

There is a function module but it not given the ouptut.

Atul

Read only

0 Likes
1,458

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

Read only

Former Member
0 Likes
1,458

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

Read only

0 Likes
1,458

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

Read only

0 Likes
1,458

Using this code how can i analise the error..Please guide me.this report is used to find the monthly pf status