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