Rather than reading the payroll results in traditional way using FM’s we can process the same using Payroll reader class which was designed to use with PNP logical database. SAP recommends that not to use GET PAYROLL event. Instead sap had provided the below PRR class i.e. Payroll Results Reader class.
REPORT ZHR_1.
TABLES PERNR.
** Payroll results realted data declarations
DATA: GO_PRR TYPE REF TO CL_HRPAY99_PRR_4_PNP_REPS,
GT_PERNR_PR TYPE H99_HR_PAY_RESULT_TAB.
*** Field Symbols.
FIELD-SYMBOLS: <PERNR_PR> TYPE REF TO CL_HR_PAY_RESULT.
START-OF-SELECTION.
** Create an instance to the payroll results reader class .
CONSTANTS: LV_CO_MOLGA(2) VALUE '40'.
** Generate/ Create an instance of payroll reader class.
CALL METHOD CL_HRPAY99_PRR_4_PNP_REPS=>GET_INSTANCE
EXPORTING
IM_PN_BEGDA = PN-BEGDA
IM_PN_ENDDA = PN-ENDDA
IM_MOLGA = LV_CO_MOLGA
IM_PNPDISBD = PN-BEGDA
IMPORTING
EX_PRR = GO_PRR
EXCEPTIONS
INVALID_ENTRIES = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
** Error message can be raised
ENDIF.
******** GET PERNR EVENT **************
GET PERNR.
********* START READING OF INDIVIDUAL EMPLOYEE PAYROLL RESULTS AFTER GET PERNR EVENT *************
CALL METHOD GO_PRR->GET_PERNR_PAYR_RESULTS_ALLIN1
EXPORTING
IM_PERNR = PERNR-PERNR
IMPORTING
EX_PERNR_PAYROLL_RESULTS = GT_PERNR_PR
EXCEPTIONS
COUNTRY_VERSION_NOT_AVAILABLE = 1
NO_AUTHORIZATION = 2
NO_ENTRIES_FOUND = 3
READ_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
ENDIF.
*** Payroll results loaded in to GT_PERNR_PR based on the requirement like only regular, only offcycle you can process the results table.
** Identify only the regular payroll results.
LOOP AT GT_PERNR_PR ASSIGNING <PERNR_PR>.
* GO_PERNR_PR ?= <PERNR_PR>.
IF <PERNR_PR>->PERIOD-FPPER NE <PERNR_PR>->PERIOD-INPER OR <PERNR_PR>->PERIOD-FPPER NE PN-PAPER OR
<PERNR_PR>->PERIOD-FPPER EQ 'X' OR <PERNR_PR>->PERIOD-FPPER = '000000' .
* CLEAR <PERNR_PR>. " Write own logic to mark and process the result record as required
ENDIF.
ENDLOOP.
Leave A Comment?
You must be logged in to post a comment.