0% found this document useful (0 votes)
14 views

Technical Specification - Function - Vanguard

The document provides technical specifications for loading benefit contribution data into an SAP system. It details how to split contribution lines from a file, validate employee data, lock records, and process dates to ensure they fall within open pay periods.

Uploaded by

vivilaplata
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Technical Specification - Function - Vanguard

The document provides technical specifications for loading benefit contribution data into an SAP system. It details how to split contribution lines from a file, validate employee data, lock records, and process dates to ensure they fall within open pay periods.

Uploaded by

vivilaplata
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Technical Specification

Benefit Focus to EC Payroll ER Medical


Contribution
FUNCTION ZFM_INBOUND_IT0014_0015.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" TABLES
*" IT0014 STRUCTURE PA0014 OPTIONAL
*" IT0015 STRUCTURE PA0015 OPTIONAL
*" ITSTRING STRUCTURE ZTESCPI_CHAR1024 OPTIONAL
*" RETURN STRUCTURE BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------
* Change Description : Load Dates. Validate BEGDA is into current pay *
* period. *
* Functional : Pokorný, Michal/Srinivas Voruganti *
* Programmer : Martin Diaz *
* Created Date : 23.01.2020 *
* Orden : XM0K900634 *
*&---------------------------------------------------------------------*
FREE RETURN.

DATA : WA_ZINT_PA0014 TYPE ZINT_PA0014,


WA_PA0014 TYPE PA0014,
WA_RETURN TYPE BAPIRETURN1,
WX_RETURN TYPE BAPIRET2,
WA_RECORD TYPE P0014,
WA_PREV_P0014 TYPE PA0014,
IT_PREV_P0014 TYPE STANDARD TABLE OF PA0014,
LV_LINE TYPE CHAR1024,
LV_FDPOS LIKE SY-FDPOS,
LV_PLAN_TYPE TYPE STRING,
LV_BENEFIT_PLAN TYPE STRING,
LV_COVERAGE TYPE STRING,
LV_SSN(9),
WA_ER_BN_RATES TYPE ZER_BN_RATES,
LV_PAY_FREQUENCY LIKE T549R-ZEINH,
LV_FREQUENCY TYPE I,
LV_RATE TYPE ZBN_EMPLR_RATE,
L_DATE LIKE SY-DATUM,
RETCD TYPE SY-SUBRC,
GV_LAST_PAY_PERIOD_BEGDA LIKE SY-DATUM,
GV_LAST_PAY_PERIOD_ENDDA LIKE SY-DATUM,
GV_OPEN_PAY_PERIOD_BEGDA LIKE SY-DATUM,
GV_OPEN_PAY_PERIOD_ENDDA LIKE SY-DATUM,
GV_PABRP TYPE PABRP,
GV_PABRJ TYPE PABRJ,
GV_FREQUENCY LIKE T549R-ZEINH.

DATA: BEGIN OF P0001 OCCURS 10.


INCLUDE STRUCTURE P0001.
DATA: END OF P0001 VALID BETWEEN BEGDA AND ENDDA.
DATA: WA_P0001 TYPE P0001.

CLEAR WA_ZINT_PA0014.
***********************************************************************************
**
***********************************************************************************
**
* There're Vanguards records -> Split the line and add to IT0014
LOOP AT ITSTRING.
CHECK NOT ITSTRING-LINE IS INITIAL.

CLEAR : WA_PA0014,
LV_SSN,
LV_LINE.
MOVE ITSTRING-LINE TO LV_LINE.

IF LV_LINE(7) EQ '2093292'.
* It's a deduction !!!!
MOVE : LV_LINE+37(9) TO LV_SSN,
LV_LINE+61(8) TO WA_PA0014-BEGDA,
'USD' TO WA_PA0014-WAERS.

IF LV_LINE CS 'AAA'.
LV_FDPOS = SY-FDPOS + 3.
MOVE : '4430' TO WA_PA0014-LGART,
LV_LINE+LV_FDPOS(5) TO WA_PA0014-ANZHL,
'4430' TO WA_PA0014-SUBTY,
'030' TO WA_PA0014-ZEINH.
ENDIF.

IF LV_LINE CS 'GGG'.
LV_FDPOS = SY-FDPOS + 3.
MOVE : '4405' TO WA_PA0014-LGART,
'4405' TO WA_PA0014-SUBTY,
LV_LINE+LV_FDPOS(5) TO WA_PA0014-ANZHL,
'030' TO WA_PA0014-ZEINH.
ENDIF.

IF LV_LINE CS 'DDE'.
LV_FDPOS = SY-FDPOS + 3.
MOVE : '5000' TO WA_PA0014-LGART,
'5000' TO WA_PA0014-SUBTY,
LV_LINE+LV_FDPOS(5) TO WA_PA0014-BETRG.

ENDIF.

* We add two decimals points to the number


WA_PA0014-BETRG = WA_PA0014-BETRG / 100.
WA_PA0014-ANZHL = WA_PA0014-ANZHL / 100.

SELECT SINGLE PERNR


INTO WA_PA0014-PERNR
FROM PA0002
WHERE PERID EQ LV_SSN.

IF SY-SUBRC EQ 0.
APPEND WA_PA0014 TO IT0014.
ELSE.
* There's no employee with that SSN
CLEAR WA_ZINT_PA0014.
CALL FUNCTION 'GUID_CREATE'
IMPORTING

Page 2 of 13
EV_GUID_16 = WA_ZINT_PA0014-GUID.
MOVE-CORRESPONDING WA_PA0014 TO WA_ZINT_PA0014.
MOVE : LV_SSN TO WA_ZINT_PA0014-PERID,
SY-DATUM TO WA_ZINT_PA0014-DATUM,
SY-UZEIT TO WA_ZINT_PA0014-UZEIT.
CONCATENATE 'There''s no employee for that SSN:' LV_SSN INTO WA_ZINT_PA0014-
MESSAGE.
MODIFY ZINT_PA0014 FROM WA_ZINT_PA0014.
COMMIT WORK.
CLEAR WX_RETURN.
MOVE WA_ZINT_PA0014-MESSAGE TO WX_RETURN-MESSAGE.
APPEND WX_RETURN TO RETURN.
ENDIF.

ELSEIF LV_LINE(7) EQ '0932925'.


* It's a loan !!!!
MOVE : LV_LINE+16(9) TO LV_SSN,
'99991231' TO WA_PA0014-ENDDA,
'USD' TO WA_PA0014-WAERS,
'5000' TO WA_PA0014-LGART,
'5000' TO WA_PA0014-SUBTY,
LV_LINE+28(11) TO WA_PA0014-BETRG.

IF LV_LINE+171(1) EQ 'D'.
* Closed -> Clear amount !!
CLEAR WA_PA0014-BETRG.
ENDIF.

* We add two decimals points to the number


WA_PA0014-BETRG = WA_PA0014-BETRG / 100.

IF LV_LINE+178(1) EQ '0'.
CONCATENATE '19'
LV_LINE+57(6)
INTO WA_PA0014-BEGDA.
ELSE.
CONCATENATE '20'
LV_LINE+57(6)
INTO WA_PA0014-BEGDA.
ENDIF.

SELECT SINGLE PERNR


INTO WA_PA0014-PERNR
FROM PA0002
WHERE PERID EQ LV_SSN.

IF SY-SUBRC EQ 0.
APPEND WA_PA0014 TO IT0014.
ELSE.
* There's no employee with that SSN
CLEAR WA_ZINT_PA0014.
CALL FUNCTION 'GUID_CREATE'
IMPORTING
EV_GUID_16 = WA_ZINT_PA0014-GUID.
MOVE-CORRESPONDING WA_PA0014 TO WA_ZINT_PA0014.
MOVE : LV_SSN TO WA_ZINT_PA0014-PERID,
SY-DATUM TO WA_ZINT_PA0014-DATUM,
SY-UZEIT TO WA_ZINT_PA0014-UZEIT.
CONCATENATE 'There''s no employee for that SSN:' LV_SSN INTO WA_ZINT_PA0014-
MESSAGE.

Page 3 of 13
MODIFY ZINT_PA0014 FROM WA_ZINT_PA0014.
COMMIT WORK.
CLEAR WX_RETURN.
MOVE WA_ZINT_PA0014-MESSAGE TO WX_RETURN-MESSAGE.
APPEND WX_RETURN TO RETURN.
ENDIF.
ENDIF.

ENDLOOP.

FREE ITSTRING.

***********************************************************************************
**
***********************************************************************************
**
* Loop at the inbound information for IT0014
LOOP AT IT0014
INTO WA_PA0014.

* Save log for further processing


CLEAR WA_ZINT_PA0014.
CALL FUNCTION 'GUID_CREATE'
IMPORTING
EV_GUID_16 = WA_ZINT_PA0014-GUID.
MOVE-CORRESPONDING WA_PA0014 TO WA_ZINT_PA0014.

* Lock employee
CLEAR WA_RETURN.
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
NUMBER = WA_PA0014-PERNR
IMPORTING
RETURN = WA_RETURN.
* Save if the employee cann't be locked
IF NOT WA_RETURN IS INITIAL.
MOVE-CORRESPONDING WA_RETURN TO WA_ZINT_PA0014.
MESSAGE ID WA_RETURN-ID
TYPE WA_RETURN-TYPE
NUMBER WA_RETURN-NUMBER
INTO WA_ZINT_PA0014-MESSAGE
WITH WA_RETURN-MESSAGE_V1 WA_RETURN-MESSAGE_V2
WA_RETURN-MESSAGE_V3 WA_RETURN-MESSAGE_V4.
CLEAR WX_RETURN.
MOVE-CORRESPONDING WA_RETURN TO WX_RETURN.
MOVE WA_ZINT_PA0014-MESSAGE TO WX_RETURN-MESSAGE.
APPEND WX_RETURN TO RETURN.
MOVE : SY-DATUM TO WA_ZINT_PA0014-DATUM,
SY-UZEIT TO WA_ZINT_PA0014-UZEIT.
MODIFY ZINT_PA0014 FROM WA_ZINT_PA0014.
COMMIT WORK.
CONTINUE.
ENDIF.

****** The employee was locked -> Process the record

*>>>> START OF DELETION <<<<< XM0K900634 23.01.2020 MDIAZ


** If BEGDA is earlier than the FTSD Pay Frequency, them, BEGDA = 12/23/2019 for
Weekly employees

Page 4 of 13
** & 1/1/2020 for the Semi-Monthly & Monthly.
*
* CLEAR: LV_FREQUENCY,
* LV_PAY_FREQUENCY,
* LV_RATE.

* CALL FUNCTION 'HRZA_GET_PAYROLL_FREQUENCY'


* EXPORTING
* BEGIN = '19000101'
* END = '99991231'
* PERN = WA_PA0014-PERNR
* IMPORTING
* PAYROLL_FREQ = LV_PAY_FREQUENCY
* EXCEPTIONS
* NOT_FOUND = 1.

* CASE LV_PAY_FREQUENCY.
* WHEN '01'. "Monthly
* IF WA_PA0014-BEGDA LT '20200101'.
* WA_PA0014-BEGDA = '20200101'.
* ENDIF.
* WHEN '02'. "Semi-Monthly
* IF WA_PA0014-BEGDA LT '20200101'.
* WA_PA0014-BEGDA = '20200101'.
* ENDIF.
* WHEN '03'. "Weekly
* IF WA_PA0014-BEGDA LT '20191223'.
* WA_PA0014-BEGDA = '20191223'.
* ENDIF.
* ENDCASE.
*>>>> END OF DELETION <<<<< XM0K900634 23.01.2020 MDIAZ

*>>>> START OF INSERT <<<<< XM0K900634 23.01.2020 MDIAZ


* If last pay period is greater than start date in the file, then change the star
t date to following open pay period
* This logic applies for both Vanguard’s file and Benefit Focus

* Read the last pay payroll


CLEAR: GV_LAST_PAY_PERIOD_BEGDA,
GV_LAST_PAY_PERIOD_ENDDA,
GV_PABRP,
GV_PABRJ,
GV_FREQUENCY.
PERFORM F_GET_LAST_PAY_PERIOD USING WA_PA0014-PERNR
CHANGING GV_LAST_PAY_PERIOD_BEGDA
GV_LAST_PAY_PERIOD_ENDDA
GV_PABRP
GV_PABRJ
GV_FREQUENCY.
* Compare the file-begda with the last pay period.

IF WA_PA0014-BEGDA LT GV_LAST_PAY_PERIOD_BEGDA or
WA_PA0014-BEGDA GT GV_LAST_PAY_PERIOD_ENDDA.
* change the start date to following open pay period
* Read open pay period
CLEAR: GV_OPEN_PAY_PERIOD_BEGDA,
GV_OPEN_PAY_PERIOD_ENDDA.
PERFORM F_GET_OPEN_PAY_PERIOD USING GV_PABRP
GV_PABRJ

Page 5 of 13
GV_FREQUENCY
CHANGING GV_OPEN_PAY_PERIOD_BEGDA
GV_OPEN_PAY_PERIOD_ENDDA.
* Change start date in the file by open pay period
WA_PA0014-BEGDA = GV_OPEN_PAY_PERIOD_BEGDA.
ENDIF.

*>>>> END OF INSERT <<<<< XM0K900634 23.01.2020 MDIAZ

IF WA_PA0014-ANZHL IS INITIAL
AND WA_PA0014-BETRG IS INITIAL.
* There's no new value -> Cut the previous one
SELECT *
FROM PA0014
INTO TABLE IT_PREV_P0014
WHERE PERNR = WA_PA0014-PERNR
AND SUBTY = WA_PA0014-SUBTY
AND ENDDA = '99991231'.

IF SY-SUBRC IS INITIAL.
READ TABLE IT_PREV_P0014 INDEX 1 INTO WA_PREV_P0014.
* cut previous record
CLEAR: WA_RETURN,
WA_RECORD.
MOVE-CORRESPONDING WA_PREV_P0014 TO WA_RECORD.
* If begda informed is not equal to begda loaded in infotype, then endda = be
gda informed -1 day.Else,
* IF begda informed is equal to begda loaded in infotype, then endda = begda

IF WA_PA0014-BEGDA <> WA_RECORD-BEGDA.


CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = WA_PA0014-BEGDA
DAYS = 1
MONTHS = 0
SIGNUM = '-'
YEARS = 0
IMPORTING
CALC_DATE = L_DATE.

WA_RECORD-ENDDA = L_DATE.
ELSE.
WA_RECORD-ENDDA = WA_PA0014-BEGDA.
ENDIF.
WA_RECORD-INFTY = '0014'.

CALL FUNCTION 'HR_INFOTYPE_OPERATION'


EXPORTING
INFTY = '0014'
NUMBER = WA_PREV_P0014-PERNR
SUBTYPE = WA_PREV_P0014-SUBTY
* OBJECTID =
* LOCKINDICATOR =
VALIDITYEND = WA_PREV_P0014-ENDDA
VALIDITYBEGIN = WA_PREV_P0014-BEGDA
* RECORDNUMBER =
RECORD = WA_RECORD
OPERATION = 'MOD'
* TCLAS = 'A'
DIALOG_MODE = '0'

Page 6 of 13
* NOCOMMIT =
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
RETURN = WA_RETURN.

IF NOT WA_RETURN IS INITIAL.


MOVE-CORRESPONDING WA_RETURN TO WA_ZINT_PA0014.
MESSAGE ID WA_RETURN-ID
TYPE WA_RETURN-TYPE
NUMBER WA_RETURN-NUMBER
INTO WA_ZINT_PA0014-MESSAGE
WITH WA_RETURN-MESSAGE_V1 WA_RETURN-MESSAGE_V2
WA_RETURN-MESSAGE_V3 WA_RETURN-MESSAGE_V4.
MOVE : SY-DATUM TO WA_ZINT_PA0014-DATUM,
SY-UZEIT TO WA_ZINT_PA0014-UZEIT.
MODIFY ZINT_PA0014 FROM WA_ZINT_PA0014.
COMMIT WORK.
CLEAR WX_RETURN. MOVE-CORRESPONDING WA_RETURN TO WX_RETURN. APPEND WX_RET
URN TO RETURN.
ELSE.
CLEAR WX_RETURN.
CONCATENATE 'Delimit ok: '
WA_PA0014-PERNR ', '
WA_PA0014-SUBTY
INTO WX_RETURN-MESSAGE.
APPEND WX_RETURN TO RETURN.
ENDIF.
ENDIF.
ELSE.
* Update the infotype
CLEAR: WA_RETURN,
WA_RECORD.
MOVE-CORRESPONDING WA_PA0014 TO WA_RECORD.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0014'
NUMBER = WA_PA0014-PERNR
SUBTYPE = WA_PA0014-SUBTY
* OBJECTID =
* LOCKINDICATOR =
VALIDITYEND = WA_PA0014-ENDDA
VALIDITYBEGIN = WA_PA0014-BEGDA
* RECORDNUMBER =
RECORD = WA_RECORD
OPERATION = 'INS'
* TCLAS = 'A'
DIALOG_MODE = '0'
* NOCOMMIT =
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
RETURN = WA_RETURN.

IF NOT WA_RETURN IS INITIAL.


MOVE-CORRESPONDING WA_RETURN TO WA_ZINT_PA0014.
MESSAGE ID WA_RETURN-ID
TYPE WA_RETURN-TYPE
NUMBER WA_RETURN-NUMBER

Page 7 of 13
INTO WA_ZINT_PA0014-MESSAGE
WITH WA_RETURN-MESSAGE_V1 WA_RETURN-MESSAGE_V2
WA_RETURN-MESSAGE_V3 WA_RETURN-MESSAGE_V4.
MOVE : SY-DATUM TO WA_ZINT_PA0014-DATUM,
SY-UZEIT TO WA_ZINT_PA0014-UZEIT.
MODIFY ZINT_PA0014 FROM WA_ZINT_PA0014.
COMMIT WORK.
CLEAR WX_RETURN. MOVE-CORRESPONDING WA_RETURN TO WX_RETURN. APPEND WX_RETUR
N TO RETURN.
ELSE.
CLEAR WX_RETURN.
CONCATENATE 'Process ok: '
WA_PA0014-PERNR ', '
WA_PA0014-SUBTY
INTO WX_RETURN-MESSAGE.
APPEND WX_RETURN TO RETURN.
ENDIF.

ENDIF.
*"----- Benefits Focus - Wage Type 6010 ----------------

IF WA_PA0014-ZUORD IS NOT INITIAL. " ZUORD = concatenate Plan Type/Benefit Pla


n/Coverage

CLEAR: LV_PLAN_TYPE,
LV_BENEFIT_PLAN,
LV_COVERAGE.

SPLIT WA_PA0014-ZUORD AT '/' INTO LV_PLAN_TYPE LV_BENEFIT_PLAN LV_COVERAGE.


"split

* 1) Determine Employer rate from the custom table based on the criterion

SELECT SINGLE *
FROM ZER_BN_RATES
INTO WA_ER_BN_RATES
WHERE PLANT_TYPE EQ LV_PLAN_TYPE
AND BENEFIT_PLAN EQ LV_BENEFIT_PLAN
AND COVRG_CD EQ LV_COVERAGE
AND BEGDA LE SY-DATUM
AND ENDDA GE SY-DATUM.

IF SY-SUBRC IS INITIAL.

* 2) Get / Read employee’s pay-frequency (Weekly, Semi-Monthly or Monthly)

CLEAR: LV_FREQUENCY,
LV_PAY_FREQUENCY,
LV_RATE.

CALL FUNCTION 'HRZA_GET_PAYROLL_FREQUENCY'


EXPORTING
BEGIN = '19000101'
END = '99991231'
PERN = WA_PA0014-PERNR
IMPORTING
PAYROLL_FREQ = LV_PAY_FREQUENCY
EXCEPTIONS
NOT_FOUND = 1.

Page 8 of 13
CASE LV_PAY_FREQUENCY.
WHEN '01'. "Monthly
LV_FREQUENCY = 12.
WHEN '02'. "Semi-Monthly
LV_FREQUENCY = 24.
WHEN '03'. "Weekly
LV_FREQUENCY = 52.
ENDCASE.

* 3) Calculate pay-period amount depending of LV_FREQUENCY


IF LV_FREQUENCY IS NOT INITIAL.

LV_RATE = WA_ER_BN_RATES-BN_EMPLR_RATE * 12 / LV_FREQUENCY.

* 4) Assign the rate to WT-6010 and populate the info type 0014 with this new rat
e for the effective start and end dates.

CLEAR WA_RETURN.
WA_RECORD-SUBTY = '6010'.
WA_RECORD-LGART = '6010'.
WA_RECORD-BETRG = LV_RATE.
WA_PA0014-SUBTY = '6010'.
CLEAR WA_RECORD-ANZHL. "The WT 6010 only save amount, not number

CALL FUNCTION 'HR_INFOTYPE_OPERATION'


EXPORTING
INFTY = '0014'
NUMBER = WA_PA0014-PERNR
SUBTYPE = WA_PA0014-SUBTY
* OBJECTID =
* LOCKINDICATOR =
VALIDITYEND = WA_PA0014-ENDDA
VALIDITYBEGIN = WA_PA0014-BEGDA
* RECORDNUMBER =
RECORD = WA_RECORD
OPERATION = 'INS'
* TCLAS = 'A'
DIALOG_MODE = '0'
* NOCOMMIT =
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
RETURN = WA_RETURN.

IF NOT WA_RETURN IS INITIAL.


MOVE-CORRESPONDING WA_RETURN TO WA_ZINT_PA0014.
MESSAGE ID WA_RETURN-ID
TYPE WA_RETURN-TYPE
NUMBER WA_RETURN-NUMBER
INTO WA_ZINT_PA0014-MESSAGE
WITH WA_RETURN-MESSAGE_V1 WA_RETURN-MESSAGE_V2
WA_RETURN-MESSAGE_V3 WA_RETURN-MESSAGE_V4.
MOVE : SY-DATUM TO WA_ZINT_PA0014-DATUM,
SY-UZEIT TO WA_ZINT_PA0014-UZEIT.
MODIFY ZINT_PA0014 FROM WA_ZINT_PA0014.
COMMIT WORK.
CLEAR WX_RETURN. MOVE-CORRESPONDING WA_RETURN TO WX_RETURN. APPEND WX_R
ETURN TO RETURN.

Page 9 of 13
ELSE.
CLEAR WX_RETURN.
CONCATENATE 'Process ok: '
WA_PA0014-PERNR ', '
WA_PA0014-SUBTY
INTO WX_RETURN-MESSAGE.
APPEND WX_RETURN TO RETURN.
COMMIT WORK.
ENDIF.

ENDIF.
ENDIF.
ENDIF.
* Unlock Employee
CALL FUNCTION 'BAPI_EMPLOYEET_DEQUEUE'
EXPORTING
NUMBER = WA_PA0014-PERNR
VALIDITYBEGIN = WA_PA0014-BEGDA.

ENDLOOP.

COMMIT WORK.

FREE : IT0014, IT0015.

ENDFUNCTION.

**&---------------------------------------------------------------------*
**& Form F_GET_LAST_PAY_PERIOD
**&---------------------------------------------------------------------*
** Get LAST PAY PERIOD
**----------------------------------------------------------------------*
FORM F_GET_LAST_PAY_PERIOD USING P_PERNR
CHANGING P_PAY_BEGDA
P_PAY_ENDDA
P_PABRP "Period
P_PABRJ "Payroll Year
P_FREQUENCY.

DATA: L_ABKRS LIKE T569V-ABKRS,


WA_T569V TYPE T569V,
WA_T549Q TYPE T549Q.

CLEAR: L_ABKRS,
WA_T569V,
WA_T549Q.

CALL FUNCTION 'HRZA_GET_PAYROLL_FREQUENCY'


EXPORTING
BEGIN = '19000101'
END = '99991231'
PERN = P_PERNR
IMPORTING
PAYROLL_FREQ = P_FREQUENCY
EXCEPTIONS
NOT_FOUND = 1.

CASE P_FREQUENCY.

Page 10 of 13
WHEN '01'. "Monthly
L_ABKRS = 'ZM'.
WHEN '02'. "Semi-Monthly
L_ABKRS = 'ZS'.
WHEN '03'. "Weekly
L_ABKRS = 'ZW'.
ENDCASE.

SELECT SINGLE *
FROM T569V
INTO WA_T569V
WHERE ABKRS = L_ABKRS AND
VWSAZ = '01'.

IF SY-SUBRC = 0.

P_PABRP = WA_T569V-PABRP. "Period Year


P_PABRJ = WA_T569V-PABRJ. "Period

SELECT SINGLE *
FROM T549Q
INTO WA_T549Q
WHERE PERMO = P_FREQUENCY AND
PABRJ = WA_T569V-PABRJ AND
PABRP = WA_T569V-PABRP.

IF SY-SUBRC IS INITIAL.
P_PAY_BEGDA = WA_T549Q-BEGDA.
P_PAY_ENDDA = WA_T549Q-ENDDA.
ENDIF.

ENDIF.
ENDFORM.
**&---------------------------------------------------------------------*
**& Form F_GET_OPEN_PAY_PERIOD
**&---------------------------------------------------------------------*
** Get OPEN PAY PERIOD
**----------------------------------------------------------------------*
FORM F_GET_OPEN_PAY_PERIOD USING P_PABRP
P_PABRJ
P_FREQUENCY
CHANGING P_OPENPAY_BEGDA
P_OPENPAY_ENDDA.
DATA: WA_T549Q TYPE T549Q.

CLEAR: WA_T549Q.

P_PABRP = P_PABRP + 1.
IF P_FREQUENCY = '01' AND P_PABRP > '12' . "Monthly
P_PABRP = '01'.
ELSEIF P_FREQUENCY = '02' AND P_PABRP > '24' . "Semi-Monthly
P_PABRP = '01'.
ELSEIF P_FREQUENCY = '03' AND P_PABRP > '52' . "Weekly
P_PABRP = '01'.
ENDIF.

SELECT SINGLE *
FROM T549Q
INTO WA_T549Q
WHERE PERMO = P_FREQUENCY AND

Page 11 of 13
PABRJ = P_PABRJ AND
PABRP = P_PABRP.

IF SY-SUBRC IS INITIAL.
P_OPENPAY_BEGDA = WA_T549Q-BEGDA.
P_OPENPAY_ENDDA = WA_T549Q-ENDDA.
ENDIF.

ENDFORM.

Resul

Page 12 of 13
Page 13 of 13

You might also like