Commit Failed Error in PY after copying Business Data from PD to PY

Purpose of Document

--- Goal ---

Recently client had performed the data copying from PD into PY, but after that they are facing this error of commit failed across system.

Example 1:

A. Commit Fail error in running P4113 - Inventory Transfer

B. In running P4310 - Purchase Order Entry error appears in inserting data into F43199 - Purchase Order Ledger

C. In running P4312 - Purchase Order Receipt leaves error in inserting data into F4111 - Cardex

1252/2996 Wed Jan 21 08:08:09 2009 ODBC_U1.C1124
ODB0000175 - Columns not in cache in Table F41021WF
Column LWUKID
Database Business Data - CRP

1252/2996 Wed Jan 21 08:08:09 2009 JDBODBC.C1515
ODB0000055 - Describe table failed for table F41021WF

1252/2996 Wed Jan 21 08:08:09 2009 jdb_exet.c5224
JDB3400009 - Failed to perform Insert for F41021WF

1252/2996 Wed Jan 21 08:08:09 2009 JDBODBC.C2148
ODB0000183 - SQLExecute failed

1252/2996 Wed Jan 21 08:08:09 2009 JDBODBC.C2148
[IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0803 - Duplicate key value specified. - SQLSTATE: 23000

Example 2:

OCI0000179 - Error - ORA-00001: unique constraint (UATDTA.F43199_PK) violated
JDB9900401 - Failed to execute db request
JDB3400009 - Failed to perform Insert for F43199
JDB9901232 - Canceling transaction because: TC052 InsertTable: Insert failed

What might be the cause of this issue?

--- Solution ---

The cause of this type of Duplicated Key error is that primary key Unique Key ID (Internal) - UKID is not updated properly in copying business data.

So in copying Business Data, copy Control tables along with. For this example, copy control tables (F0002/F00021/F00022) from PRODCTL to CRPCTL/UACTL.

For both examples, the primary key UKID is defined at F00022 - Unique Key File (which can be accessed through P00022) where object name is F41021 Transaction Workfile (F41021WF) and P.O. Detail Ledger File (F43199).

Alternatively, get max value through query tool as below,
1. Get max value from F43199 (e.g., sql> select max(olukid) from crpdta.f43199
2. Set F00022.UKUKID = (max + 1) for the object F43199

At once data for Business Data and Controls Tables are copied rebounce JDE Service to refresh Instances in your logic server.