go to post JAQUELINE KRIEGER · Jul 18, 2018 Hi community, here I show the final solution that resolve my problem. It was necessary create 3 methods. In this solution the hierarchy was built programatically. ClassMethod GetUnitLevel(pUnidad As %Integer, pLevelReq As %Integer, ByRef pSC As %Status) As %String{Set str = ""Set pSC = $$$OKTry{Set objUnidad = ##class(AUPOL.CT.UnidadPolicial).%OpenId(pUnidad)Set tUnidadInterno = objUnidad.IdUnidadInterno#Dim objCTUnidad As AUPOL.CT.UnidadSet objCTUnidad = ..GetCTUnidadByUniCodigo(tUnidadInterno)If $IsObject(objCTUnidad){Set objCTUnidadPadre = ..GetUnitLevelRef(objCTUnidad,pSC,.pArray)Quit:$System.Status.IsError(pSC)Set total = $order(pArray(""),-1)Set nivel = 0Set cursor = ""If ( (pLevelReq -1) = total){Set str = objCTUnidad.UNIDESCRIPCION }ElseIf ((pLevelReq > total)){Set str = ""}Else{ For{Set nivel = nivel + 1Set cursor = $order(pArray(cursor),-1)Set str = pArray(cursor) Quit:((pLevelReq = nivel))}}w "pLevelReq ",pLevelReq,!w "total ",total,!w "str ",str,!}}Catch(e){Set pSC = e.AsStatus() } Quit str}ClassMethod GetUnitLevelRef(pCTUnidad As AUPOL.CT.Unidad, ByRef pSC As %Status, ByRef pArray) As AUPOL.CT.Unidad{#Dim objUnidad As AUPOL.CT.UnidadSet objUnidad = pCTUnidadTry{ Set objPadre = ..GetCTUnidadByUniCodigo(pCTUnidad.UNIPADRE,.pSC)Quit:$System.Status.IsError(pSC)If ($IsObject(objPadre)){If ($DATA(pArray) = 0){Set pArray(1) = objPadre.UNIDESCRIPCION }ELSE{Set iNext = $order(pArray(""),-1) + 1Set pArray(iNext) = objPadre.UNIDESCRIPCION }If ( objPadre.UNIPADRE > 0 ){Set objPadre = ..GetUnitLevelRef(objPadre, .pSC,.pArray)Quit:$System.Status.IsError(pSC)}Set objUnidad = objPadre}}Catch(e){Set pSC = e.AsStatus()}Quit objUnidad}ClassMethod GetCTUnidadByUniCodigo(pUniCodigo As %String, ByRef pSC As %Status) As AUPOL.CT.Unidad{Set obj = ""Try{Set sql = "SELECT %Id "_ "FROM AUPOL_CT.Unidad "_"WHERE Unicodigo = ? "Set res = ##Class(%ResultSet).%New()Set pSC = res.Prepare(sql)Quit:$System.Status.IsError(pSC)Set pSC = res.Execute(pUniCodigo)Quit:$System.Status.IsError(pSC)If (res.Next()){Set obj = res.GetObject() }}Catch(e){Set pSC = e.AsStatus() }Quit obj}ClassMethod TieneSubordinados(pUniCodigo As %String, ByRef pSC As %Status) As %Boolean{Set bool = 0Try{Set sql = "SELECT SUM(*) As NumeroHijos "_ "FROM AUPOL_CT.Unidad "_"WHERE UNIPADRE = ? "Set res = ##Class(%ResultSet).%New()Set pSC = res.Prepare(sql)Quit:$System.Status.IsError(pSC)Set pSC = res.Execute(pUniCodigo)Quit:$System.Status.IsError(pSC)If (res.Next()){Set iNum = res.Get("NumeroHijos")if (iNum > 0){Set bool = 1 } }}Catch(e){Set pSC = e.AsStatus() }Quit bool}}