Knowledge Base Article

Filter IC Dimension by Entity Property

A common requirement for reporting is to be able to filter the IC dimension by some property that exists only on the original Entity members.

This can be achieved with a custom Member List defined  in a Finance business Rule.

Select Case api.FunctionType
' MemberListHeaders support is optional but good practice
Case Is = FinanceFunctionType.MemberListHeaders
	Dim mListHeaders As New List(Of MemberListHeader)
 	' add the name of your list:
	mListHeaders.Add(New MemberListHeader("withText1"))
	Return mListHeaders

' Here we do the real work
Case Is = FinanceFunctionType.MemberList
If args.MemberListArgs.MemberListName.XFEqualsIgnoreCase("withText1") Then
	' this list of members will be populated later
	Dim ICs As New List(Of Member)
        ' amend parameters as necessary here
	Dim dimensionName as String = "CorpEntities"
	Dim memberFilter as String = "E#Root.Base.Where(Text1 <> '')"
	' filter the Entity dimension by some criteria
	Dim entities As List(Of MemberInfo) = brapi.Finance.Members.GetMembersUsingFilter(si, _
			brapi.Finance.Dim.GetDimPk(si, dimensionName), _
			memberFilter, _
			True)
	' retrieve IC members corresponding to the selected Entity members
	' and push them into output list
	For Each entityMInfo As MemberInfo In entities
		if entityMInfo.getEntityProperties().isIC then
			ICs.Add(brapi.Finance.Members.GetMember(si, dimtypeId.IC, entityMInfo.Member.Name))
		end if
	Next
	' wrap with the MemberList object and return
	Return New MemberList(New MemberListHeader("withText1"), ICs)

This can then be referenced in CubeViews and elsewhere like this:

Updated 12 months ago
Version 5.0