Case Study - Open Cursor for Cache F42UI11 Failed (078M) Error in Sales Order Entry (P4210)
Purpose of Document
The audience for this document is a user with developer level knowledge.
In updating additional information for existing sales order, the error Open Cursor for cache F42UI11 failed (078M) is populated for a specific items in same Sales Order.
Steps to Duplicate
Create a sales order and save it.
Look for newly created sales order and select it to go to [Sales Order Detail Revision].
(Row Exit) SOE - Additional to call [SOE - Additional Information].
Change any value (for example G/L Category Code) in this form and click OK which returns calling form W4210A - [Sales Order Detail Revision].
Click OK to save change made in step 4.
Observe that error '078M - Error: Open Cursor for cache F42UI11 failed' is populated.
Open Cursor for cache F42UI11 failed
A form level error has occurred. CAUSE: A cursor was not able to be opened because the Cache Init was not successful or cache F42UI11 was empty. RESOLUTION: Verify that the Cache Init was successful and that records exist in your cache prior to the Open Cursor. Check the JDE.LOG and JDEDEBUG.LOG for additional information. ER Details: Form P4210_W4210A Control Id 1 Control Title Grid Event Row is Exit & Changed - Asynch Line No 740 BSFN Details: Source File \DNVMGSC02\E900\PD900\package\ESU900B\source\B4200311.c Source Line 26975 Error ID 078M
Note:
Line Number 740 can be different per the event rule. This message simply referencing that F4211FSEditLine (B4200311) has been called at line number 740 in the event of "Row is Exit & Changed - Asynch".
Source file directory can be vary as this just explain which C component in your deployment server is used for compilation.
Source Line can be vary depends on E1 release and ESU you have applied.
Error ID 078M is may be describe as Open Cursor for cache &1 failed. For this case &1 is the value where pointer of error issue logic addresses. For this case F42UI11 is value for error API has been called. In actual fact, Data Structure F42UI12 is the one which is missing from error routine.
As above error reads, capture jdedebug.log and reference it for your debugging. But for this example, error code and error routine may not describe exactly why this error is populated.
Cause
In general, this error '078M' in Sales Order occurs during updating exiting records when data from control tables or Data Dictionary Item changed.
For this case study, issue is caused by missing blank UDC code against UDC(41|P4) Master Planning Family. Since a number of items which do not have category code (F4101.PRP4) in adding a new Sales Order this value gets populated with blank value as it is defined in Item Master File (F4101).
E1 Distribution programs might stop working when the BLANK value is deleted from Payment Terms. This occurs because of the DD edit behind PTC against a BSFN called IsColumnInPymtTermsTable. The edit is executed in Tools code beneath the application layer of code. In any given program if we declared a variable based off of PTC and for what ever reason, the variable is not populated, the underlying DD edit may trigger an error. This being the case, the rule of thumb is never to delete BLANKS from UDCs or tables where data items are coded for DD edits.
Technical Explanation
In P4210 forms get called in the following sequence:
In clicking SELECT button on W4210E - [Customer Service Inquiry] which calls W4210A - [Sales Order Detail Revision]
On W4210A, (row exit) SOE - Additional is calling the form W4210B - [SOE - Additional Information]
On W4210B click OK to return to calling form W4210A
W4210A - [Sales Order Detail Revision]
For this example, form W4210A and W4210B have to talk to each other by storing change in the form W4210B into cache (F42UI12). In the form W4210B, through Business Function B4200310 - F4211FSEditLinePreProcess which is to create cache of F42UI11 and F42UI12 and this will be used by B4200311 - F4211FSEditLine in form W4210A.
For this issue, F4211FSEditLinePreProcess validates all the column value appears on screen of W4210B.
Note:
SRP1, SRP2, SRP3, SRP4, PRP1, PRP2, PRP3 and PRP4 are to be validated.
PRP1, PRP2, PRP3 and PRP4 are not appeared on the form.
But internally it validates value stored (as it is update mode) against UDC.
B4200310 (F4211FSEditLinePreProcess) stores validation result into cache of F42UI12 and B4200311 (F4211FSEditLine) stores same into F42UI11
So if F4211FSEditLinePreProcess fails to validate any column value listed above this error shall come (and R47131 (EDI Inbound Purchase Order Change) may ends in Memory Violation
In this routine, UDC validation for Blank against UDC (41|P4) failed as the table F0005 fails to get information as below:
SELECT * FROM JDE_SPYUAECRP.CRPCTL.F0005 WHERE ( DRSY = '41' AND DRRT = 'P4' AND DRKY = ' ' ) No More Data found ERROR INFO JDEERR - ID= 34, Error= 018A - \builds\8.98.02.00.08\Rels\common\Jdekrnl\runtime\Rtk_ddvl.c, Line= 544
Note:
This type of error will come not only PRP4 column but also any other columns.
But offending business function is being called at Post OK button Clicked event, error itself may not stop you from processing.
So if you have jdedebug.log observe that whether F4211FSEditLinePreProcess ends in error with return code 2.
Through Bug 10715021 - Fields not populated in F4211 validation of PRP1, PRP2, PRP3 and PRP4 took place.
Missing UDC code and/or change of default value can cause Memory Corruption in running R47131 (EDI Inbound Purchase Order Change). In case you can verify error through CallObject Kernel log (but not in Work Center Message) try to update Sales Order through P4210 and verify whether you hit same error mentioned above.
Oracle do not bear responsibility for missing UDC code and changed default value.
To fix this issue
Go to UDC
Look for System Code 41 and User Defined Codes P4
Add Blank Code as below:
Codes: (Blank)
Description 01: Add master planning family P4c
Hard Coded: Y
Note:
Across E1, do not remove blank code if this code is delivered upon installation (refer Pristine or Development settings for default value).
It is hard for Oracle or you to debug if the issue is caused by removed blank code against a certain UDC.
If your business requires not to allow blank code, try to have recommendation from Oracle Global Support.
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.