11-01-2021 10:01 AM - last edited on 05-25-2023 07:37 AM by JackLacava
Hi,
I would like to retrieve the value for a text attribute of a member - could be in any any dimension - in order to display it in a label on a dashboard.
Can I do so with a generic XFBR?
Solved! Go to Solution.
11-01-2021 10:07 AM - edited 11-11-2021 08:58 AM
This is an example of XFBR code that can retrieve any text attribute, as well as member description, from any member in any dimension. It will also work when retrieving scenario/time varying attributes.
XFBR(PRJ_ParamHelper, GetAttribute, Dimension=YourDimension, Member=YourMember, Attribute=Text2, Scenario=YourScenario, Time=YourTime)
the Attribute parameter can be any text attribute (Text1...Text12), or you can use Description to retrieve the description
The Scenario and Time parameters are optional.
If args.FunctionName.XFEqualsIgnoreCase("GetAttribute") Then
' Attribute can be Description or a Text Attribute (Text1, Text2,...)
Dim strDim = args.NameValuePairs.XFGetValue("Dimension",String.Empty)
Dim strMember = args.NameValuePairs.XFGetValue("Member",String.Empty)
Dim strAttr = args.NameValuePairs.XFGetValue("Attribute",String.Empty)
Dim strScenario = args.NameValuePairs.XFGetValue("Scenario",String.Empty)
Dim strTime = args.NameValuePairs.XFGetValue("Time",String.Empty)
' If looking for specific scenario/time, set the IDs
Dim intTimeId As Integer = DimConstants.Unknown
Dim intScenarioId As Integer = DimConstants.Unknown
If strScenario <> String.Empty Then intScenarioId = BRApi.Finance.Members.GetMember(si,DimTypeId.Scenario,strScenario).MemberId
If strTime <> String.Empty Then intTimeId = BRApi.Finance.Members.GetMember(si,DimTypeId.Time,strTime).MemberId
' Get the attribute value.
Dim dimPk As DimPk = BRApi.Finance.Dim.GetDim(si,strDim).DimPk
If strAttr = "Description" Then Return brapi.Finance.Members.GetMember(si, dimPk.DimTypeId,strMember).Description
Dim writMemProps As VaryingMemberProperties = brapi.Finance.Members.ReadMemberPropertiesNoCache(si, dimPk.DimTypeId, strMember)
Dim attrId As UDMemberPropTypeId = [Enum].Parse(GetType(UDMemberPropTypeId),strAttr)
Return writMemProps.InternalProperties(attrId).GetStoredPropertyItem(DimConstants.Unknown,intScenarioId,intTimeId).TextValue
End If
11-01-2021 10:07 AM - edited 11-11-2021 08:58 AM
This is an example of XFBR code that can retrieve any text attribute, as well as member description, from any member in any dimension. It will also work when retrieving scenario/time varying attributes.
XFBR(PRJ_ParamHelper, GetAttribute, Dimension=YourDimension, Member=YourMember, Attribute=Text2, Scenario=YourScenario, Time=YourTime)
the Attribute parameter can be any text attribute (Text1...Text12), or you can use Description to retrieve the description
The Scenario and Time parameters are optional.
If args.FunctionName.XFEqualsIgnoreCase("GetAttribute") Then
' Attribute can be Description or a Text Attribute (Text1, Text2,...)
Dim strDim = args.NameValuePairs.XFGetValue("Dimension",String.Empty)
Dim strMember = args.NameValuePairs.XFGetValue("Member",String.Empty)
Dim strAttr = args.NameValuePairs.XFGetValue("Attribute",String.Empty)
Dim strScenario = args.NameValuePairs.XFGetValue("Scenario",String.Empty)
Dim strTime = args.NameValuePairs.XFGetValue("Time",String.Empty)
' If looking for specific scenario/time, set the IDs
Dim intTimeId As Integer = DimConstants.Unknown
Dim intScenarioId As Integer = DimConstants.Unknown
If strScenario <> String.Empty Then intScenarioId = BRApi.Finance.Members.GetMember(si,DimTypeId.Scenario,strScenario).MemberId
If strTime <> String.Empty Then intTimeId = BRApi.Finance.Members.GetMember(si,DimTypeId.Time,strTime).MemberId
' Get the attribute value.
Dim dimPk As DimPk = BRApi.Finance.Dim.GetDim(si,strDim).DimPk
If strAttr = "Description" Then Return brapi.Finance.Members.GetMember(si, dimPk.DimTypeId,strMember).Description
Dim writMemProps As VaryingMemberProperties = brapi.Finance.Members.ReadMemberPropertiesNoCache(si, dimPk.DimTypeId, strMember)
Dim attrId As UDMemberPropTypeId = [Enum].Parse(GetType(UDMemberPropTypeId),strAttr)
Return writMemProps.InternalProperties(attrId).GetStoredPropertyItem(DimConstants.Unknown,intScenarioId,intTimeId).TextValue
End If