FindAncestor
Returns the closest ancestor of a specified business object instance in a hierarchy of business objects.
For each ancestor business object going upward from a starting business object, this function evaluates the search predicate on the related business object. If a hierarchy business object is not related to one of the related business objects, the application skips it. See Expression Grammar, Defining a CI relationship, and Using Relationships.
Syntax
FindAncestor(hierarchyBoRef, relatedBoRef, recId, searchPredicate)
Enabled For
For a description of the business object categories, see Notes on "Enabled For".
| Business Object Category | Yes/No | 
|---|---|
| Business Rules: Before-Save Rules | Yes | 
| Business Rules: Calculation Rules (After Save, with or without Also Recalculate on Load) | Yes | 
| Business Rules: Calculation Rules (Before Save or Always, without Also Recalculate On Load) | Yes | 
| Business Rules: Calculation Rules (Before Save or Always, with Recalculate On Load) | Yes | 
| Business Rules: Editing Rules | Yes1 | 
| Business Rules: Initialization Rules | Yes | 
| Business Rules: Read Only Rules | No | 
| Business Rules: Required Rules | Yes1 | 
| Business Rules: Validation Rules | Yes | 
| Client Expressions | No | 
| Object Permissions | No | 
| Services | Yes | 
| LDAP | Yes | 
| Mobile | Yes | 
| Quick Actions (except UI Quick Actions) | Yes | 
| UI Quick Actions | No | 
| Reports | Yes | 
| Search/Dashboard without field references | Yes | 
| Search/Dashboard with field references | No | 
| 1. Except when this field appears on a form or is triggered by such a field. | |
Parameters
| Parameter | Description | 
|---|---|
| hierarchyObjectRef | The name of the business object (the starting business object) that forms the hierarchy in which to find the ancestor. This is not a business object reference. | 
| relatedObjectRef | The name of the related business object. | 
| recId | The RecID of the hierarchy business object instance. | 
| searchPredicate | (Optional) Boolean filter expression to evaluate on the related business object. | 
Return Value
Text value. The RecID of the ancestor instance found.
Example
$(FindAncestor("Frs_CompositeContract_Entity", "ServiceAgreement", EntityLink_RecID,
"$((ServiceLink == [OtherObject]Service_Valid) && (Status == \"Published\"))"
))
In the example above, the application goes up the through the ancestors of the business object specified by the hierarchyObjectRef parameter (in this case, Frs_CompositeContract_Entity) and looks for the nearest ancestor that has a related business object or a business object related by the relatedObjectRef parameter (in this case, a published service agreement) for which the searchPredicate parameter evaluates to true.