No Matching Buffer Errors
A no matching buffer error occurs when there is a mismatch in the data within the component buffer scroll hierarchy (scroll 0, scroll 1, scroll 2, scroll 3).
It occurs due to one or more orphaned data rows in the lower scroll levels that do not link back to the higher scroll levels through keys. The component buffer is where PeopleSoft enforces its own referential integrity. This means that while there may not be any relationships between tables defined at the database level, when records are loaded into a component, they need to maintain a key based relationship according to the scroll level structure in that buffer.
The classic message is something like this:
Typically no matching buffer errors are caused by processes that delete or update rows from parent records without updating or removing rows from the appropriate child record within the component scroll level structure. If the component buffer can load a row from a lower (child/grand-child) scroll that doesn't match on keys to the scroll levels above it, the error will occur.
There are two fundamental ways to fix a no matching buffer error:
- Put the missing parent-record row back (or change the keys back)
- Remove the orphaned row from the child record
A SQL trace is a good place to start with investigating buffer errors. The point at which a rollback happens in the trace is typically where the no matching buffer error has occurred. This is usually at the point when the orphaned row in the child record was loaded.
Please see this page about querying the structure of a component which provides a great way to disect a component for troubleshooting no matching bfufer errors.
After you've identified the culprit child record, the next step is to examine the component scroll structure and find candidate records in the scroll levels above to find the cause of the issue. So if the child record is at scroll level 2, look at records at scroll level 1, and 0. Remember this error is key-based so you only need to be concerned with records that have one or more of keys in the child record.
The error is not necessarily with data from the record you selected the — the error may be on any other child record being loaded in the component that shares the same keys. So don't make any assumptions about the culprit record. You may need to systematically check tables loaded by the component.
Sometimes, opening the component with include history (all effective dates) will prevent the no matching buffer error. This is a sign that the error is a result of an effective date or effective sequence mismatch that is causing the problem.