Hi
Plese find below the code.. the form created for cost distribution infotype
p0027 contains the record.
FORM infotype_costdist_data
TABLES p0000 STRUCTURE p0000
p0027 STRUCTURE p0027
USING p_pernr
p_mode
CHANGING p_error.
DATA:
l_do_infty_update(1) TYPE c.
CLEAR:
l_do_infty_update,
p_error.
* Get most recently created inforec for this infotype
SELECT * FROM pa0027
UP TO 1 ROWS
WHERE pernr = p_pernr
ORDER BY begda DESCENDING.
ENDSELECT.
IF p_mode EQ 'CREATE' AND sy-subrc NE 0.
MOVE 'X' TO l_do_infty_update.
ELSEIF p_mode EQ 'CHANGE'
AND NOT ( p0027-begda IS INITIAL OR p0027-begda EQ space ).
PERFORM merge_data TABLES p0027 USING pa0027 'PS0027'.
MOVE 'X' TO l_do_infty_update.
ELSEIF p_mode EQ 'CREATE'.
PERFORM add_infotype_name TABLES i_messg USING 'PA0027'.
Perform add_error using 'I' TEXT-E05 'PA0027' p_pernr.
ENDIF.
IF NOT l_do_infty_update IS INITIAL.
* Create header line for this infotype
PERFORM add_infotype_name TABLES i_messg USING 'PA0027'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
number = p_pernr
* IMPORTING
* RETURN =
.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '0027'
number = p_pernr
validityend = p0000-endda
validitybegin = p0027-begda
record = p0027
operation = 'INS'
DIALOG_MODE = W_DIALOG_MODE
nocommit = c_commit
IMPORTING
return = w_return
key = w_costdistdatakey
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF w_return-number IS INITIAL.
PERFORM add_msg_to_messg TABLES i_messg
USING 'PQ' '004' 'S' '' '' '' ''.
ELSE.
PERFORM add_msg_to_messg TABLES i_messg
USING 'PQ' '005' 'E' '' '' '' ''.
p_error = 'X'.
PERFORM message_from_hr_function
TABLES i_messg
USING w_return.
ENDIF.
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
EXPORTING
number = p_pernr
* IMPORTING
* RETURN =
.
ENDIF.
ENDFORM.