BSFN, Cache, and Examples of Why Sales Order Entry ( P4210) Fails To Save Data With No Error Message On Screen FAQs

Purpose of Document

This document is to discover possible cause of cache issue in sales order entry application. The audience for this note is someone with developer level knowledge. This document only contains examples and direction. It is not meant to be all encompassing.

Question 1: Sales Order Entry (P4210) does not allow the user to add or update an order but no error is displayed. What is a possible cause of this issue?

Answer 1: Check whether B4200312 - F4211EditDoc (F4211 Edit Doc) ends in error. This business function compares / verifies Sales Order Header Cache with Sales Order Detail Cache. For example, summary of the detail line(s) has to be equal to header.

Example error may be appear as follows:

10127/2 WRK:WENWANG_40617B20_P4210 Wed Jan 13 14:04:10.023455 jdecm_rb.c3241
      CMRB000002 - User buffer too small. Size allocated 812, needed 820

This error may come when there is a dependency among BSFNs including the header file. In this example, the actual error is coming from F4211EditDoc which has to read data from LPDSF42UI02Cache as this lpds is defined at B4202090.h so make it sure you have installed baseline ESUs and its dependent ESU(s). The complaint from jdecm_rb.c is that allocated memory (lpdsF42UI02Cache) is smaller than actual memory which is assigned through B4200312. That is, the code of B4200312 is later than the code of B4202090.h.

Notes:


Question 2: How are caches handled in Sales Order Entry (P4210)?

Answer 2: To handle user input data in a flexible manner, P4210 handles data / cache as follows:

Note: For further detail, see 1265902.1


Question 3: What is the purpose of F42UI01, F42UI02, F42UI11, and F42UI12?

Answer 3:  F42UI02 is not a physical table rather this is data structure to hold cache for header extension as F42UI01 is not able to hold necessary header information. Note: The data structure of F42UI02 (DSF42UI02Cache) is defined at B4202090.h. For this reason, B4200310, B4200311, B4200312 and B4202090 are dependent on each other.

Sales Order Master BSFNs are dependent on all the *.h files defined in B4200310.h with #include statement. Open b4200310.h and verify list of header file of tables and business functions.

In adding/changing Sales Order through P4210/P42101 these tables are meant for Data Structure but in batch (for example, R47011 - 'EDI Inbound Purchase Order Edit/Create') application EnterpriseOne may write actual tables. This is to prevent possible issue may be caused by the size of memory in holding data in cursor.

Note: In case customization is crucial for your daily transaction make it sure dependent object has been altered properly (ie: change of data structures, BSFN Data Structure, Processing Option Data Structure, Table, Business View, Index, etc).


Question 4: Why are there three different sales order business functions B4200310, B4200311, and B4200312?

Answer 4: B4200311 and B4200312 are extensions of B4200310 as the functionality keeps on increasing with new functionality or additional validation.  All of these objects belong to parent DLL CSALES.dll.


Question 5: When adding an order through Sales Order Entry (P4210) the order does not write the Sales Order Detail (F4211) record.  No error is displayed on the screen. What is a possible cause of this issue?

Answer 5: For this example, sales order entry application fails to create cache for sales order detail line as result "Return Value is 2 for F4211FSEditLine (BSFNLevel = 1)" in the log. In one scenario, the value for 'Sales Price Based On Date' in System Constants was changed from '2' to '8. Even though the value of 8 was added to the UDC 40/DB it is still not a valid value. To fix this:

  1. Go to Branch Plant Constants (P41001)
  2. (Form Exit) System Constants
  3. Correct value for control Sales Price Based On Date to be one of the valid values (Blank, 1, 2, 3, 4 or 5)
  4. Reset database cache as F4009 is a member of P98613/F98613 - Database Caching