0% found this document useful (0 votes)
53 views6 pages

DB Integration

This document contains a report for integrating fingerprint data. It opens a cursor to select check-in/out records from a database table for a given date. It loops through the records, calls various API functions to process employee time and attendance data, and updates the records and status in the database.

Uploaded by

Mostafa Hassanin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views6 pages

DB Integration

This document contains a report for integrating fingerprint data. It opens a cursor to select check-in/out records from a database table for a given date. It loops through the records, calls various API functions to process employee time and attendance data, and updates the records and status in the database.

Uploaded by

Mostafa Hassanin
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

*&---------------------------------------------------------------------*

*& Report ZHCM_FPRINT_INTEGRATION


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZHCM_FPRINT_DATE_EMP .

PARAMETERS : date TYPE SY-DATUM OBLIGATORY .


*emp TYPE pa0001-pernr OBLIGATORY..
*TABLES : SAPCheckInOut.
DATA :C TYPE CURSor , currDate TYPE sy-datum ."VALUE '1900-01-01'.

DATA : wai TYPE ZFPRINT_INTRF ,

itab TYPE TABLE OF ZFPRINT_INTRF2 ,

wa TYPE ZFPRINT_INTRF2 .
data: ls_message type scx_t100key.
DATA : RETURN2 TYPE BAPIRETURN1,
KEY TYPE BAPIPAKEY .
DATA : lv_dbs,
PA0007_WA TYPE PA0007,
T508A_WA TYPE T508A,
T551A_WA TYPE T551A,
T550A_WA TYPE T550A,
Row_count TYPE char2,
Modls TYPE char2 ,
teven_it TYPE TABLE OF teven ,
s_p2011 type P2011,
ch_count TYPE char2,
* tmp_prnr TYPE pa0001-pernr ,
PDSNR TYPE teven-PDSNR ,
DURATION TYPE SYTABIX ,
TEVEN_WA TYPE TEVEN.

lv_dbs = 'HCMATT'.

EXEC SQL.
CONNECT TO :'HCMATT'
ENDEXEC.

EXEC SQL.
OPEN CURSOR FOR
SELECT Id,
EmplyeeId,
Name,
CheckTime,
CheckDate,
CheckType,
MachineNumber,
MachineIP,
Status

FROM SAPCheckInOut
WHERE CHECKDATE = :DATE and Status is NULL
ENDEXEC.
"and EmplyeeId = :EMP
. "EmplyeeId = :EMP
*WHERE Status is NULL AND CHECKDATE = :sy-datum ORDER BY EmplyeeId
"Status is NULL AND CHECKDATE = :sy-datum Id = '001_2018-02-03_06:04:15'
*
" this cursor to get data record by record to work area .
DO.
EXEC SQL.
FETCH NEXT CURSOR INTO :wai-ID,
:wai-EMPLYEEID,
:wai-NAME,
:wai-CHECKTIME,
:wai-CHECKDATE,
:wai-CHECKTYPE,
:wai-MACHINENUMBER,
:wai-MACHINEIP,
:wai-STATUS

ENDEXEC.
IF sy-subrc <> 0.
EXIT.
ELSE.

REPLACE ALL OCCURRENCES OF '-' IN wai-CHECKDATE WITH space. CONDENSE wai-


CHECKDATE.
REPLACE ALL OCCURRENCES OF ':' IN wai-CHECKTIME WITH space. CONDENSE wai-
CHECKTIME.

wa-ID = wai-ID .
*wa-EMPLYEEID = wai-EMPLYEEID.
wa-NAME = wai-NAME.

wa-CHECKTIME = wai-CHECKTIME .
wa-CHECKTIME+5(1) = '0'.
wa-CHECKDATE = wai-CHECKDATE.
wa-CHECKTYPE = wai-CHECKTYPE.
wa-MACHINENUMBER = wai-MACHINENUMBER.
wa-MACHINEIP = wai-MACHINEIP .
wa-STATUS = wai-STATUS.
UNPACK wai-EMPLYEEID to wa-EMPLYEEID.

APPEND wa TO ITAB.
ENDIF.
ENDDO.
CLEAR wa.

*BREAK-POINT .

LOOP AT ITAB INTO WA.

s_p2011-pernr = wa-EMPLYEEID." '00000004'."


s_p2011-infty = '2011'.
s_p2011-ldate = wa-CHECKDATE. "sy-datum. "
s_p2011-ltime = wa-CHECKTIME. "sy-uzeit. "
s_p2011-erdat = sy-datum.
s_p2011-ertim = sy-uzeit.
* s_p2011-satza = 'P10'.
s_p2011-origf = 'E'.

s_p2011-begda = wa-CHECKDATE."wa-CHECKDATE.sy-datum."
s_p2011-endda = wa-CHECKDATE."wa-CHECKDATE.

SELECT SINGLE * FROM PA0007 INTO PA0007_WA WHERE PERNR = wa-EMPLYEEID AND beg
da <= sy-datum AND endda >= sy-datum .
SELECT SINGLE * FROM T508A INTO T508A_WA WHERE SCHKZ = PA0007_WA-SCHKZ .
SELECT SINGLE * FROM T551A INTO T551A_WA WHERE ZMODN = T508A_WA-ZMODN AND MOT
PR = T508A_WA-MOTPR .
SELECT SINGLE * FROM T550A INTO T550A_WA WHERE TPROG = T551A_WA-TPRG1 AND MOTP
R = T551A_WA-MOTPR .

CH_count = 0 .
IF T550A_WA-SOBEG IS NOT INITIAL .
CH_count = CH_count + 1.
ENDIF.
IF T550A_WA-SOEND IS NOT INITIAL .
CH_count = CH_count + 1.
ENDIF.

IF T550A_WA-PAMOD IS NOT INITIAL .


CH_count = CH_count + 2.
ENDIF.

SELECT * FROM teven INTO teven_WA WHERE LDATE eq wa-CHECKDATE AND PERNR eq w
a-EMPLYEEID and STOKZ ne 'X' AND LTIME < s_p2011-ltime . "wa-EMPLYEEID.
APPEND TEVEN_WA TO TEVEN_IT.
ENDSELECT.

DESCRIBE TABLE teven_it lines row_count .


modls = row_count mod 2.
IF ROW_COUNT NE '0'.
CALL FUNCTION 'SWI_DURATION_DETERMINE'
EXPORTING
START_DATE = wa-CHECKDATE
END_DATE = wa-CHECKDATE
START_TIME = TEVEN_WA-LTIME
END_TIME = s_p2011-ltime
IMPORTING
DURATION = DURATION
.
ELSE .
DURATION = 122.
ENDIF.

IF DURATION > 121 .

IF modls eq 0.
s_p2011-satza = 'P10'.
wa-CHECKTYPE = 'P10'.
ELSE.
s_p2011-satza = 'P20'.
wa-CHECKTYPE = 'P20'.
ENDIF.

CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'


EXPORTING
NUMBER = wa-EMPLYEEID "tmp_prnr ."wa-EMPLYEEID. "'00000004'
* IMPORTING
* RETURN =
.
SELECT SINGLE PDSNR FROM TEVEN INTO PDSNR WHERE PERNR eq wa-EMPLYEEID AND LDAT
E eq s_p2011-ldate and LTIME eq s_p2011-ltime AND STOKZ ne 'X' .
IF sy-subrc <> 0.

CALL FUNCTION 'HR_INFOTYPE_OPERATION'


EXPORTING
infty = '2011'
number = wa-EMPLYEEID "tmp_prnr "wa-
EMPLYEEID"'00000004'"s_p2011-pernr
* SUBTYPE =
* OBJECTID =
* LOCKINDICATOR =
validityend = s_p2011-begda
validitybegin = s_p2011-endda
* recordnumber = f_recordnumber
record = s_p2011
operation = 'INS'
tclas = 'A'
dialog_mode = '0'
* NOCOMMIT = 'X'
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
return = RETURN2
key = KEY.
" BREAK-POINT.
COMMIT WORK.
WAIT UP TO 1 SECONDS .

IF PA0007_WA-KZTIM eq '01' AND s_p2011-satza = 'P10' .


* s_p2011-ltime = wa-CHECKTIME + 14400. "sy-uzeit. "
IF CH_count eq '4'.
s_p2011-ltime = wa-CHECKTIME + 14400. "sy-uzeit. "
ELSEIF CH_count eq '2'.
s_p2011-ltime = wa-CHECKTIME + 28800. "sy-uzeit. "
ENDIF.

s_p2011-satza = 'P20' .
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '2011'
number = wa-EMPLYEEID "tmp_prnr "wa-
EMPLYEEID"'00000004'"s_p2011-pernr
* SUBTYPE =
* OBJECTID =
* LOCKINDICATOR =
validityend = s_p2011-begda
validitybegin = s_p2011-endda
* recordnumber = f_recordnumber
record = s_p2011
operation = 'INS'
tclas = 'A'
dialog_mode = '0'
* NOCOMMIT = 'X'
* VIEW_IDENTIFIER =
* SECONDARY_RECORD =
IMPORTING
return = RETURN2
key = KEY.
" BREAK-POINT.
COMMIT WORK.

WAIT UP TO 1 SECONDS .
ENDIF.
ENDIF.
** BREAK-POINT.
SELECT SINGLE PDSNR FROM TEVEN INTO PDSNR WHERE PERNR eq wa-EMPLYEEID AND LDAT
E eq s_p2011-ldate and LTIME eq s_p2011-ltime AND STOKZ ne 'X' .

IF return2-type NE 'E' and PDSNR ne '0' .


EXEC SQL.
UPDATE SAPCheckInOut
SET STATUS = 1
WHERE Id = :wa-ID

ENDEXEC .
wa-status = '1' .
INSERT INTO ZFPRINT_INTRF2 VALUES wa.

ELSE .

wa-status = '0' .
INSERT INTO ZFPRINT_INTRF2 VALUES wa.

ENDIF.

CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'


EXPORTING
NUMBER = wa-EMPLYEEID"tmp_prnr "wa-EMPLYEEID"'00000004'
* IMPORTING
* RETURN =
.

ENDIF.
CLEAR: Wa .
CLEAR s_p2011.
clear PA0007_WA .
CLEAR T508A_WA.
CLEAR T551A_WA .
CLEAR T550A_WA .
CLEAR TEVEN_WA.
FREE teven_it.
ch_count = 0 .
row_count = 0.
modls = 0.
*tmp_prnr = 0.
PDSNR = '' .
DURATION = 0.

ENDLOOP.

You might also like