Skip to Content
0
Feb 21, 2011 at 06:15 AM

IN_UPDATE method at BADI HRPAD00INFTY

860 Views

hi all,

i need some help on this BADI.

i have a requirement somewhat like this:

on PA30 under infotype 9 and subtype 1 after delimiting the record i need to update the record in database which was chosen for delimitation . i will have to make enda of chosen record to newly selected date - 1.

below is the code which i have written in IN_UPDATE method at BADI HRPAD00INFTY.

here i am importing data from after_input and before_output methods of same badi.

method IF_EX_HRPAD00INFTY~IN_UPDATE.

data: V_ENDDA type endda,

V_begda TYPE begda,

v_INFTY TYPE INFTY,

v_subty TYPE SUBTY,

v_pernr type PERSNO.

data: new_innnn type PRELP,

old_innnn TYPE PRELP,

flag1 type i.

data: v_pa0009 type P0009,

v_pa0009_copy TYPE P0009,

v_date type endda.

CONSTANTS: change TYPE pspar-actio VALUE 'MOD'.

data: begin1 type begda,

end1 type sy-datum,

v_sydatum TYPE endda,

v_VIEW_INF type P0003-VIEKN,

V_SECON_INF type t777d-infty,

return type bapireturn1,

key type BAPIPAKEY.

if sy-ucomm = 'UPD'.

import t_begda to v_begda

t_endda to v_endda

t_subty to v_subty

t_pernr to v_pernr

from MEMORY ID 'DATA_DELI_OUTPUT'.

IMPORT t_new_innnn to new_innnn

t_old_innnn to old_innnn

from MEMORY ID 'DATA_DELI_INPUT'.

if v_begda is not initial and v_pernr is not initial.

if new_innnn-begda is not INITIAL .

if new_innnn-begda <> v_begda.

CALL FUNCTION 'HR_99S_DATE_MINUS_TIME_UNIT'

EXPORTING

I_IDATE = new_innnn-begda

I_TIME = 1

I_TIMEUNIT = 'D'

IMPORTING

O_IDATE = v_date

EXCEPTIONS

INVALID_PERIOD = 1

INVALID_ROUND_UP_RULE = 2

INTERNAL_ERROR = 3

OTHERS = 4

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

if v_date is not initial.

begin1 = v_begda.

end1 = v_endda.

CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'

EXPORTING

number = v_pernr.

CALL FUNCTION 'HR_INFOTYPE_GETDETAIL'

EXPORTING

INFTY = '0009'

NUMBER = v_pernr

SUBTYPE = v_subty

  • OBJECTID =

LOCKINDICATOR = ' '

VALIDITYBEGIN = begin1

VALIDITYEND = end1

  • RECORDNUMBER =

TCLAS = 'A'

IMPORTING

RETURN = return

RECORD = v_pa0009

VIEW_IDENTIFIER = V_VIEW_INF

SECONDARY_RECORD = v_SECON_INF

.

V_PA0009_COPY = V_PA0009 .

BREAK-POINT.

end1 = v_pa0009-endda.

V_sydatum = v_date.

v_pa0009_COPY-endda = v_sydatum.

CALL FUNCTION 'HR_INFOTYPE_OPERATION'

EXPORTING

INFTY = '0009'

NUMBER = v_pa0009-pernr

SUBTYPE = v_pa0009-subty

OBJECTID = v_pa0009-objps

LOCKINDICATOR = ' '

VALIDITYEND = end1

VALIDITYBEGIN = v_pa0009-begda

RECORDNUMBER = v_pa0009-seqnr

RECORD = v_pa0009_COPY

OPERATION = change

TCLAS = 'A'

DIALOG_MODE = '0'

NOCOMMIT = ' '

VIEW_IDENTIFIER = V_VIEW_INF

SECONDARY_RECORD = v_SECON_INF

IMPORTING

RETURN = RETURN

KEY = KEY

.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

"unlock record after modification

CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'

EXPORTING

number = v_pa0009-pernr.

endif.

clear v_pa0009.

endif.

  • endif.

endif.

endif.

endif.

but after execution on PA30 this is ending up with message: NA DATA STORED IN BANK DETAILS FOR SELECTED PERIOD.

and am not able to modify the chosen record.

kindly help me.

i am new for HRABAP.

thanks,

snehaal