I_BudgetAccountHierarchyNode
Budget Account Hierarchy Node
I_BudgetAccountHierarchyNode is a Basic CDS View that provides data about "Budget Account Hierarchy Node" in SAP S/4HANA. It reads from 2 data sources (hrrp_node, I_BudgetAccountHierarchy) and exposes 15 fields with key fields BudgetAccountHierarchy, HierarchyNode, ValidityEndDate. It has 4 associations to related views.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| hrrp_node | hrrp_node | from |
| I_BudgetAccountHierarchy | I_BudgetAccountHierarchy | inner |
Associations (4)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..*] | I_BudgetAccountHierarchyNodeT | _Text | $projection.BudgetAccountHierarchy = _Text.BudgetAccountHierarchy and $projection.HierarchyNode = _Text.HierarchyNode and $projection.PubSecBudgetAccount = '' |
| [0..1] | I_BudgetAccountInChtAccts | _BudgetAccountInChtAccts | $projection.ChartOfAccounts = _BudgetAccountInChtAccts.ChartOfAccounts and $projection.PubSecBudgetAccount = _BudgetAccountInChtAccts.PubSecBudgetAccount |
| [1..1] | I_BudgetAccountHierarchy | _Hierarchy | $projection.BudgetAccountHierarchy = _Hierarchy.BudgetAccountHierarchy and $projection.ValidityEndDate = _Hierarchy.ValidityEndDate |
| [0..1] | I_ChartOfAccounts | _ChartOfAccounts | $projection.ChartOfAccounts = _ChartOfAccounts.ChartOfAccounts |
Annotations (17)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | IPSMS4CBDACHN | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| AccessControl.authorizationCheck | #PRIVILEGED_ONLY | view | |
| EndUserText.label | Budget Account Hierarchy Node | view | |
| VDM.viewType | #BASIC | view | |
| Hierarchy.parentChild.recurse.parent | ParentNode | view | |
| Hierarchy.parentChild.recurse.child | HierarchyNode | view | |
| Hierarchy.parentChild.siblingsOrder.by | SequenceNumber | view | |
| Hierarchy.parentChild.siblingsOrder.direction | ASC | view | |
| Hierarchy.parentChild.directory | _Hierarchy | view | |
| Analytics.dataExtraction.enabled | true | view | |
| ObjectModel.dataCategory | #HIERARCHY | view | |
| ObjectModel.usageType.dataClass | #MASTER | view | |
| ObjectModel.usageType.serviceQuality | #A | view | |
| ObjectModel.usageType.sizeCategory | #XL | view |
Fields (15)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | BudgetAccountHierarchy | |||
| KEY | HierarchyNode | hrrp_node | hrynode | |
| KEY | ValidityEndDate | |||
| ParentNode | hrrp_node | parnode | ||
| HierarchyVersion | hrrp_node | hryver | ||
| ValidityStartDate | ||||
| ChartOfAccounts | ||||
| SequenceNumber | ||||
| HierarchyNodeSequence | hrrp_node | hryseqnbr | ||
| HierarchyNodeLevel | hrrp_node | hrylevel | ||
| NodeType | hrrp_node | nodetype | ||
| _Text | _Text | |||
| _BudgetAccountInChtAccts | _BudgetAccountInChtAccts | |||
| _ChartOfAccounts | _ChartOfAccounts | |||
| _Hierarchy | _Hierarchy |
@AbapCatalog.sqlViewName: 'IPSMS4CBDACHN'
@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@EndUserText.label: 'Budget Account Hierarchy Node'
@VDM.viewType: #BASIC
@Hierarchy.parentChild:
{ recurse: { parent: 'ParentNode', child: 'HierarchyNode' },
siblingsOrder: { by: 'SequenceNumber', direction: 'ASC' },
directory: '_Hierarchy'
}
@Analytics: { dataExtraction: {enabled:true} }
@ObjectModel: {
dataCategory: #HIERARCHY,
usageType: {
dataClass: #MASTER,
serviceQuality: #A,
sizeCategory: #XL
}
}
define view I_BudgetAccountHierarchyNode
as select from hrrp_node
inner join I_BudgetAccountHierarchy on I_BudgetAccountHierarchy.BudgetAccountHierarchy = hrrp_node.hryid
and I_BudgetAccountHierarchy.ValidityEndDate = hrrp_node.hryvalto
association [0..*] to I_BudgetAccountHierarchyNodeT as _Text on $projection.BudgetAccountHierarchy = _Text.BudgetAccountHierarchy
and $projection.HierarchyNode = _Text.HierarchyNode
and $projection.PubSecBudgetAccount = '' // just to show that this association is only to be followed if BudgetAccounts is blank
association [0..1] to I_BudgetAccountInChtAccts as _BudgetAccountInChtAccts on $projection.ChartOfAccounts = _BudgetAccountInChtAccts.ChartOfAccounts
and $projection.PubSecBudgetAccount = _BudgetAccountInChtAccts.PubSecBudgetAccount
association [1..1] to I_BudgetAccountHierarchy as _Hierarchy on $projection.BudgetAccountHierarchy = _Hierarchy.BudgetAccountHierarchy
and $projection.ValidityEndDate = _Hierarchy.ValidityEndDate
association [0..1] to I_ChartOfAccounts as _ChartOfAccounts on $projection.ChartOfAccounts = _ChartOfAccounts.ChartOfAccounts
{
@Consumption.filter: {mandatory : true, selectionType : #SINGLE, multipleSelections : false }
@ObjectModel.foreignKey.association: '_Hierarchy'
key cast( hrrp_node.hryid as psm_hryid_budgetaccount preserving type) as BudgetAccountHierarchy,
@ObjectModel.text.association: '_Text'
key hrrp_node.hrynode as HierarchyNode,
@Consumption.filter: {mandatory : true, selectionType : #SINGLE, multipleSelections : false }
@Semantics.businessDate.to: true
key cast( hrrp_node.hryvalto as fis_datbi preserving type ) as ValidityEndDate,
hrrp_node.parnode as ParentNode,
hrrp_node.hryver as HierarchyVersion,
@Semantics.businessDate.from: true
cast( hrrp_node.hryvalfrom as fis_datab preserving type) as ValidityStartDate,
@ObjectModel.foreignKey.association: '_BudgetAccountInChtAccts'
cast ( case nodetype
when 'L' then hrrp_node.nodevalue
else ''
end as psm_bdgt_account ) as PubSecBudgetAccount,
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_ChartOfAccountsStdVH',
element: 'ChartOfAccounts' }
}]
@ObjectModel.foreignKey.association: '_ChartOfAccounts'
cast( hrrp_node.nodecls as fis_ktopl ) as ChartOfAccounts,
concat( hrrp_node.hryseqnbr, hrrp_node.hrynode ) as SequenceNumber,
hrrp_node.hryseqnbr as HierarchyNodeSequence,
hrrp_node.hrylevel as HierarchyNodeLevel,
hrrp_node.nodetype as NodeType,
_Text,
_BudgetAccountInChtAccts,
_ChartOfAccounts,
_Hierarchy
}
where
nodetype = 'L'
or nodetype = 'N'
or nodetype = 'R'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_BUDGETACCOUNTHIERARCHY",
"HRRP_NODE"
],
"ASSOCIATED":
[
"I_BUDGETACCOUNTHIERARCHY",
"I_BUDGETACCOUNTHIERARCHYNODET",
"I_BUDGETACCOUNTINCHTACCTS",
"I_CHARTOFACCOUNTS"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA