2006 Sep 21 4:38 PM
I've been stuck with the problem for days, could anyone help. I try to use the function modules in my report to create the record in pa0027, but it won't work! here is the code:
REPORT ZHRADDPA0027 NO STANDARD PAGE HEADING.
TABLES : PA0027, PA0024.
DATA: BEGIN OF IT0027 OCCURS 0,
MANDT LIKE PA0027-MANDT,
PERNR LIKE PA0027-PERNR,
SUBTY LIKE PA0027-SUBTY,
OBJPS LIKE PA0027-OBJPS,
SPRPS LIKE PA0027-SPRPS,
ENDDA LIKE PA0027-ENDDA,
BEGDA LIKE PA0027-BEGDA,
........................
........................
PSP25 LIKE PA0027-PSP25,
END OF IT0027.
DATA: RET LIKE BAPIRETURN1.
DATA: RET2 LIKE BAPIRETURN1.
DATA: RET3 LIKE BAPIRETURN1.
DATA: LOCKING_USER LIKE SY-UNAME.
DATA: MKEY LIKE BAPIPAKEY.
CLEAR IT0027.
SELECT * FROM PA0027 WHERE PERNR = '00000123' AND ENDDA = '99991231'.
MOVE-CORRESPONDING PA0027 TO IT0027.
APPEND IT0027.
ENDSELECT.
LOOP AT IT0027.
IT0027-BEGDA = '19990101'.
IT0027-ENDDA = '19991231'.
MODIFY IT0027.
ENDLOOP.
CLEAR IT0027.
LOOP AT IT0027.
CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
EXPORTING
NUMBER = IT0027-PERNR
IMPORTING
RETURN = RET
LOCKING_USER = LOCKING_USER.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0027'
NUMBER = IT0027-PERNR
RECORD = IT0027
OPERATION = 'INS'
NOCOMMIT = 'X'
IMPORTING
RETURN = RET2
KEY = MKEY.
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
NUMBER = IT0027-PERNR
IMPORTING
RETURN = RET3.
ENDLOOP.
I've been stuck with the problem for days, could anyone help. I try to use the function modules in my report to create the record in pa0027, but it won't work! here is the code:
REPORT ZHRADDPA0027 NO STANDARD PAGE HEADING.
TABLES : PA0027, PA0024.
DATA: BEGIN OF IT0027 OCCURS 0,
MANDT LIKE PA0027-MANDT,
PERNR LIKE PA0027-PERNR,
SUBTY LIKE PA0027-SUBTY,
OBJPS LIKE PA0027-OBJPS,
SPRPS LIKE PA0027-SPRPS,
ENDDA LIKE PA0027-ENDDA,
BEGDA LIKE PA0027-BEGDA,
........................
........................
PSP25 LIKE PA0027-PSP25,
END OF IT0027.
DATA: RET LIKE BAPIRETURN1.
DATA: RET2 LIKE BAPIRETURN1.
DATA: RET3 LIKE BAPIRETURN1.
DATA: LOCKING_USER LIKE SY-UNAME.
DATA: MKEY LIKE BAPIPAKEY.
CLEAR IT0027.
SELECT * FROM PA0027 WHERE PERNR = '00000123' AND ENDDA = '99991231'.
MOVE-CORRESPONDING PA0027 TO IT0027.
APPEND IT0027.
ENDSELECT.
LOOP AT IT0027.
IT0027-BEGDA = '19990101'.
IT0027-ENDDA = '19991231'.
MODIFY IT0027.
ENDLOOP.
CLEAR IT0027.
LOOP AT IT0027.
CALL FUNCTION 'HR_EMPLOYEE_ENQUEUE'
EXPORTING
NUMBER = IT0027-PERNR
IMPORTING
RETURN = RET
LOCKING_USER = LOCKING_USER.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0027'
NUMBER = IT0027-PERNR
RECORD = IT0027
OPERATION = 'INS'
NOCOMMIT = 'X'
IMPORTING
RETURN = RET2
KEY = MKEY.
CALL FUNCTION 'HR_EMPLOYEE_DEQUEUE'
EXPORTING
NUMBER = IT0027-PERNR
IMPORTING
RETURN = RET3.
ENDLOOP.
2006 Sep 21 4:41 PM
2006 Sep 21 4:46 PM
it's not inserting into the table. the error was "System error in SAPLRHCD, routine INT(2): notify SAP" from running the function HR_INFOTYPE_OPERATION. then when I go to the SAPLRHCD program and put break point on it, the error change to "a complex application error has occurred".
2006 Sep 21 4:53 PM
There are some notes for this program; you should have a look at them. If there's nothing that helps, the message is saying to contact SAP, so you can raise an OSS message.
Rob
2006 Sep 21 4:44 PM
Hi,
see the Function modules <b>'HR_EMPLOYEE_ENQUEUE'</b>, <b>'HR_INFOTYPE_OPERATION'</b> and <b>'HR_EMPLOYEE_DEQUEUE'</b>.... Check the types of each and every field and structure, i think you are not passing same type some where ...
Regards
Sudheer
2006 Sep 21 4:56 PM
here is the declaration and getting the data.
DATA: BEGIN OF IT0027 OCCURS 0,
MANDT LIKE PA0027-MANDT,
PERNR LIKE PA0027-PERNR,
SUBTY LIKE PA0027-SUBTY,
OBJPS LIKE PA0027-OBJPS,
SPRPS LIKE PA0027-SPRPS,
ENDDA LIKE PA0027-ENDDA,
BEGDA LIKE PA0027-BEGDA,
........................ ,<- All the field names
........................ <- the list is too long
PSP25 LIKE PA0027-PSP25,
END OF IT0027.
DATA: RET LIKE BAPIRETURN1.
DATA: RET2 LIKE BAPIRETURN1.
DATA: RET3 LIKE BAPIRETURN1.
DATA: LOCKING_USER LIKE SY-UNAME.
DATA: MKEY LIKE BAPIPAKEY.
CLEAR IT0027.
SELECT * FROM PA0027 WHERE PERNR = '00000123' AND ENDDA = '99991231'.
MOVE-CORRESPONDING PA0027 TO IT0027.
APPEND IT0027. <- copy the record and change the date and then inserting it back!
ENDSELECT.
Any help or information will be great!
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |