P42101 and P43070 Cause Deadlock in Competing to Update a Held Orders (F4209) Table

Goal

Troubleshooting Steps

When users are changing data in Sales Order Entry (P42101) and immediately try to Release Held Orders (P43070) causes a dead lock to Held Orders (F4209) table as <Bug:10969260> reads.

Possible business scenario where this may happen:

  1. Sales staff create sales orders through R47011 with order hold (e.g., EDI Hold) with more than 30 detail lines
  2. Review/Update SO created through P42101 - Sales Order Entry
  3. Release order through P43070 - Release Held Order

When does this error occur?

Case 1 - Valid transaction
Sales staff create sales orders through R47011 with order hold (e.g., EDI Hold) with more than 30 detail lines

  1. Review/Update SO created through P42101 - Sales Order Entry
  2. Release order through P43070 - Release Held Order

Through P42101 (TRANSACTION #1)
1. ENTER: SalesOrderApplCtrlEX
2. ENTER: F4211FSEndDoc /* With Transaction Processing ON - MANNUAL COMMIT */
3. ENTER: WriteHoldCode
sql> UPDATE PRODDTA.F4209 SET (...) WHERE (order number 9999)
3. EXIT: for WriteHoldCode=0
2. EXIT: for F4211FSEndDoc=0 /* sql> COMMIT TRANSACTION */
1. EXIT: for SalesOrderApplCtrlEX=0

Through P43070 (TRANSACTION #2)
1. ENTER: ReleaseHeldOrder
sql> UPDATE PRODDTA.F4209 SET (...) WHERE (order number 9999)
1. EXIT: for ReleaseHeldOrder=0



Note:



Case 2 - Deadlock Transaction

Through P42101 (TRANSACTION #1)
1. ENTER: SalesOrderApplCtrlEX
2. ENTER: F4211FSEndDoc /* With Transaction Processing ON - MANNUAL COMMIT */
3. ENTER: WriteHoldCode
sql> UPDATE PRODDTA.F4209 SET (...) WHERE (order number 9999)
3. EXIT: for WriteHoldCode=
*** Continue to COMMIT other tables ***
*** TRANSACTION #2 tries to get locking information for blocked table by TRANSACTION #1 ***

Through P43070 (TRANSACTION #2)
1. ENTER: ReleaseHeldOrder
sql> UPDATE PRODDTA.F4209 SET (...) WHERE (order number 9999)
/* Transaction Stops here in getting locking information for table F4209 */
/* Because it is blocked by 1st TRANSACTION */
(TRANSACTION FAILURE)



Note:



How can this be fixed?

  1. (Fast Path) UDC
  2. Look for Product Code: 00 (Foundation Environment) and User Defined Codes 'RR' - Object In Use Application ID
  3. Verify/Add application ID P42101 and P43070 (If it is missing)

Currently record reservation for applications P42101 and P43070 are implemented as below,

Note:

To look at upcoming or archived Advisor Webcasts please see Advisor Webcast Details <Document 548764.1> if your topic is not currently scheduled please suggest it.