The audience for this note is someone with developer level knowledge.
Cancellation of existing Sales Order issues Commit Fail error when,
SO is created based on SQ
'Status Code - Next' (NXTR) from table F4211 is 560
By canceling LTTR = "980" and NXTR = "999"
(Inclusive) Row Security is set as below:
User
Table
Col
From
To
Add
Change
Delete
View
UserA
F4211
NXTR
500
509
N
N
N
N
UserA
F4211
NXTR
510
999
Y
Y
Y
Y
And Order Activity Rules are defined as below for SO and SQ type orders:
Order Type
Line Type
Last Status
Description
Next Status
SQ
S
500
Enter Quote Order
505
SQ
S
505
Ready to Create SO
510
SQ
S
...
Order Type
Line Type
Last Status
Description
Next Status
SO
S
510
Enter Sales Order
540
SO
S
540
...
All the setting appears to be valid as Next Status is 560 to be moved to next status is 999 but ASYNCHRONOUS BUSINESS FUNCTION ERROR against Business Function F4211FSEndDoc is issued and jde.log leave message as below:
1952/2160 WRK:TESTFBA_050DC240_P4210 Wed May 26 01:26:37.896050 Jdb_exef.c826 JDB9900900 - Inclusive Row Level Security Violation: UserA attempted an UPDATE on column SDNXTR in table F4211
Error is caused by Row Security in updating SQ order line. As Bug 12498818 - "Re-Open Blanket Order in case of the quantity releases decreased" indicates, the SQ quantity has to be replenished in canceling Sales Order which is derived from Sales Quote.
Since cancellation has to update quantity and status (F4211.NXTR) for SQ into 505 it ends in error as 505 wasn't included in the security.
Note:
This routine is written at BSFN B4200490 - RelieveSOBlanketOrderQty (F4211 Update Blanket Release Quantity) which is called by B4200310 - F4211FSEndDoc (F4211 End Document)
Since security method is inclusive row security the first row (where it meets Column 'Change' and Value 'N') won't be referred
So DML statement might be SQL> UPDATE PRODDTA.F4211 SET SDNXTR = '505' WHERE (SDDCTO = 'SQ' AND SDDOCO = mnS/ONumber AND ...) AND (SDNXTR BETWEEN '510' AND '999')
So error message will issued in testing WHERE clause as Row Security Setting conflicts with (SDNXTR BETWEEN '510' AND '999')
To verify this capture jdedebug.log without having row security and determine which routine ends in error. This is important, as stated above, error is to be issued in TESTING WHERE clause so error log does not contain any hint on why it fails
To overcome this error correct Row Security settings by allowing NXTR = 505
User
Table
Col
From
To
Add
Change
Delete
View
UserA
F4211
NXTR
505
999
Y
Y
Y
Y
or do not set inclusive row security for column Change.
Disclaimer: Oracle is not responsible for transaction failure which is caused by incorrect Row Security settings.
To discuss information further with Oracle experts and industry peers, we encourage you to review, join or start a discussion in the JDE1 Distribution Community.
To look at upcoming or archived Advisor Webcasts please see Advisor Webcast Details (Doc ID 548764.1) if your topic is not currently scheduled please suggest it.