2007 Jul 19 7:03 AM
Can anyone please tell me how to update a primary key field in HR Tables (PA2001 and PA2002).
I need to update sprps field in both the tables. I used HR_Infotype_Operation function module, but still it is not updating the field.
Pls find the following code snippet for the table PA2001 and let me know if any discrepancies :
TABLES: pa2001.
DATA: it_pa2001 TYPE TABLE OF pa2001,
wa_pa2001 LIKE LINE OF it_pa2001,
DATA: date TYPE d.
date = sy-datum - 100.
SELECT pernr sprps begda endda FROM PA2001 INTO CORRESPONDING FIELDS OF TABLE it_pa2001
WHERE begda BETWEEN date and sy-datum.
WRITE:/.
WRITE:/ 'PA 2001 Records'.
if sy-subrc <> 0.
WRITE:/ 'No Data Exists'.
else.
LOOP AT it_pa2001 INTO wa_pa2001.
WRITE:/ wa_pa2001-pernr, wa_pa2001-sprps, wa_pa2001-begda, wa_pa2001-endda.
ENDLOOP.
endif.
LOOP AT it_pa2001 INTO wa_pa2001.
wa_pa2001-sprps = 'X'.
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
infty = '2001'
number = wa_pa2001-pernr
SUBTYPE =
OBJECTID =
LOCKINDICATOR =
VALIDITYEND =
VALIDITYBEGIN =
RECORDNUMBER =
record = wa_pa2001
operation = 'MOD'
TCLAS = 'A'
DIALOG_MODE = '0'
NOCOMMIT =
VIEW_IDENTIFIER =
SECONDARY_RECORD =
IMPORTING
RETURN =
KEY =
.
ENDLOOP.
if sy-subrc = 0.
write:/ 'SY-subrc is zero'.
write:/ ' Rows modified = ', sy-dbcnt.
else.
write:/ 'No Record(s) updated'.
endif.
commit work.
WRITE: / 'Updated Records in the Internal Table IT_PA2001'.
SELECT pernr sprps begda endda FROM PA2001 INTO CORRESPONDING FIELDS OF TABLE it_pa2001
WHERE begda BETWEEN date AND sy-datum..
LOOP AT it_pa2001 INTO wa_pa2001.
WRITE:/ wa_pa2001-pernr, wa_pa2001-sprps, wa_pa2001-begda, wa_pa2001-endda.
ENDLOOP.
2007 Jul 19 7:07 AM
Hi,
Please do not do that. You are asking for big trouble if you proceed. Do not ever change the primary key of a standard table.
<b>Reward points</b>
Regards
2007 Jul 19 7:07 AM
Hi,
Please do not do that. You are asking for big trouble if you proceed. Do not ever change the primary key of a standard table.
<b>Reward points</b>
Regards
2007 Jul 19 7:37 AM
Thanks Kiran.
But I need to change this field as we need to lock the records, as soon as the employee fills his/her time sheets which will be sent for HR Payroll, later on.
When I am updating directly the field the database table PA2001, its not updating but for table PA2002, only few records are being updated.
Is there any other alternative for this problem?
Pls reply.
Thanks,
Harish
2007 Jul 19 7:42 AM
Hi,
you should create a new table ZXXXXX with all keys of Youre reqired fields .
<b>Reward points</b>
Regards
2007 Jul 19 8:02 AM
thanks for ur reply,
Can u tell me how this Lock indicator is set (Functionally) in the standard table.
as this indiactor is checked while payroll is run , so what action sets this indiactor.
2007 Jul 19 7:56 AM
Instead of this FM, refer this BAPI -
BAPI_ABSENCE_CHANGE
Regards,
Amit
Reward all helpful replies.
2007 Jul 19 8:41 AM
But Amit, I need to change the field SPRPS. How can I do it when I am passing it to the function module <b>BAPI_ABSENCE_CHANGE</b>.
Could anyone pls provide me with a sample code snippet.
Thanks,
Harish
2007 Jul 19 1:57 PM
That field you need to change manually, by reading the record and modifying the field. We had a similar requirement and none of the FM worked for that, even HR_INFOTYPE_OPERATION has ACTION as EDQ for lock/unlock.
Regards,
Amit