FAC_CDS_UH_CD
Global Hierarchy Change Log
FAC_CDS_UH_CD is a CDS View that provides data about "Global Hierarchy Change Log" in SAP S/4HANA. It reads from 4 data sources (FAC_CDS_UH_CD_VERSION, FAC_CDS_UH_CD_VERSION, cdpos, fac_cds_uh_cd_tf) and exposes 55 fields with key fields ObjectClass, ObjectId, DocumentNumber, TableName, FieldName. It has 2 associations to related views. Part of development package UH_CORE.
Data Sources (4)
| Source | Alias | Join Type |
|---|---|---|
| FAC_CDS_UH_CD_VERSION | _cdhdr | from |
| FAC_CDS_UH_CD_VERSION | _cdhdr | union_all |
| cdpos | _cdpos | left_outer |
| fac_cds_uh_cd_tf | _cdpos_str | left_outer |
Associations (2)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_UserContactCard | _UserContactCard | _UserContactCard.ContactCardID = $projection.UserName |
| [0..1] | I_Language | _ChangeDocLanguage | _ChangeDocLanguage.Language = $projection.Langauge |
Annotations (8)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | FACV_UH_CD | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| EndUserText.label | Global Hierarchy Change Log | view | |
| ObjectModel.usageType.dataClass | #MASTER | view | |
| ObjectModel.usageType.serviceQuality | #D | view | |
| ObjectModel.usageType.sizeCategory | #L | view |
Fields (55)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ObjectClass | FAC_CDS_UH_CD_VERSION | objectclas | |
| KEY | ObjectId | FAC_CDS_UH_CD_VERSION | objectid | |
| KEY | DocumentNumber | FAC_CDS_UH_CD_VERSION | changenr | |
| KEY | TableName | fac_cds_uh_cd_tf | tabname | |
| KEY | FieldName | fac_cds_uh_cd_tf | fname | |
| KEY | TableKey | fac_cds_uh_cd_tf | tabkey | |
| ChangeTypeText | ||||
| ObjectTypeText | ||||
| ObjectText | ||||
| ObjectFieldText | ||||
| UserName | FAC_CDS_UH_CD_VERSION | username | ||
| CreatedDate | udate | |||
| CreatedTime | utime | |||
| CreatedDateTime | ||||
| NewValue | ||||
| OldValue | ||||
| ver_idendasVersionId | ||||
| hier_catgendasHierarchyCategory | ||||
| HryType | _uh_catg | hrrp_hrytype | ||
| hier_hidendasHierarchyId | ||||
| ver_vldfmendasValidityStartDate | ||||
| ver_vldtoendasValidityEndDate | ||||
| Langauge | FAC_CDS_UH_CD_VERSION | langu | ||
| LanguageName | ||||
| FullName | _UserContactCard | FullName | ||
| TabFieldName | ||||
| _UserContactCard | _UserContactCard | |||
| objectclasasObjectClass | ||||
| KEY | ObjectId | FAC_CDS_UH_CD_VERSION | objectid | |
| KEY | DocumentNumber | FAC_CDS_UH_CD_VERSION | changenr | |
| KEY | TableName | cdpos | tabname | |
| KEY | FieldName | cdpos | fname | |
| KEY | TableKey | |||
| ChangeTypeText | ||||
| ObjectTypeText | ||||
| ObjectText | ||||
| ObjectFieldText | ||||
| UserName | FAC_CDS_UH_CD_VERSION | username | Changed By | |
| CreatedDate | udate | Created On | ||
| CreatedTime | utime | Created At | ||
| CreatedDateTime | Created At | |||
| NewValue | cdpos | value_new | New Value | |
| OldValue | cdpos | value_old | Old Value | |
| ver_idendasVersionId | ||||
| hier_catgendasHierarchyCategory | ||||
| HryType | _uh_catg | hrrp_hrytype | ||
| hier_hidendasHierarchyId | ||||
| ver_vldfmendasValidityStartDate | ||||
| ver_vldtoendasValidityEndDate | ||||
| Langauge | FAC_CDS_UH_CD_VERSION | langu | ||
| LanguageName | ||||
| FullName | _UserContactCard | FullName | ||
| TabFieldName | ||||
| _UserContactCard | _UserContactCard | |||
| _ChangeDocLanguage | _ChangeDocLanguage |
@AbapCatalog.sqlViewName: 'FACV_UH_CD'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Global Hierarchy Change Log'
@ObjectModel.usageType: {
dataClass: #MASTER,
serviceQuality: #D,
sizeCategory: #L
}
define view FAC_CDS_UH_CD as select from FAC_CDS_UH_CD_VERSION as _cdhdr
left outer join fac_cds_uh_cd_tf as _cdpos_str on _cdpos_str.objectclas = _cdhdr.objectclas
and _cdpos_str.objectid = _cdhdr.objectid
and _cdpos_str.changenr = _cdhdr.changenr
association [0..1] to I_UserContactCard as _UserContactCard on _UserContactCard.ContactCardID = $projection.UserName
association [0..1] to I_Language as _ChangeDocLanguage on _ChangeDocLanguage.Language = $projection.Langauge
{
key _cdhdr.objectclas as ObjectClass,
key _cdhdr.objectid as ObjectId,
key _cdhdr.changenr as DocumentNumber,
key _cdpos_str.tabname as TableName,
key _cdpos_str.fname as FieldName,
key case
when _cdpos_str.fname = 'NODE_RID' then 'UN'
else case
when _cdpos_str.chngind = 'J' then
case when _cdpos_str.node_type = 'L' then 'CL' else 'CN' end
when _cdpos_str.chngind = 'E' then
case when _cdpos_str.tabname = 'UHS_CD_NODE_DESC' then 'EN'
when _cdpos_str.tabname = 'UHS_CD_VER_NODE' and _cdpos_str.node_type <> 'L' then 'EN' else 'EL' end
when _cdpos_str.chngind = 'U' then
case when _cdpos_str.tabname = 'UHS_CD_NODE_ATTR' then 'UA'
when _cdpos_str.fname = 'NODE_PID' then 'MN'
when _cdpos_str.node_type <> 'L' then 'UN' else 'UL' end end end as ChangeType,
key _cdpos_str.tabkey as TableKey,
cast( '' as cdchngt ) as ChangeTypeText,
cast( '' as cdobjtd ) as ObjectTypeText,
cast( substring( _cdpos_str.tabkey, 41, 80 ) as cdobjd ) as ObjectText,
cast( '' as cdfldt ) as ObjectFieldText,
_cdhdr.username as UserName,
udate as CreatedDate,
utime as CreatedTime,
cast(dats_tims_to_tstmp(udate, utime, abap_system_timezone($session.client, 'NULL'), $session.client, 'NULL') as timestamp) as CreatedDateTime,
cast( _cdpos_str.value_new as cdfldvaln ) as NewValue,
cast( _cdpos_str.value_old as cdfldvalo ) as OldValue,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 1, 40 ) as vrsid )
else _uh_vrsn.ver_id
end as VersionId,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 41, 4 ) as cakey )
else _uh_vrsn.hier_catg
end as HierarchyCategory,
_uh_catg.hrrp_hrytype as HryType,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 45, 20 ) as vhrid )
else _uh_vrsn.hier_hid
end as HierarchyId,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 65, 8 ) as vdtfm )
else _uh_vrsn.ver_vldfm
end as ValidityStartDate,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 73, 8 ) as vdtto )
else _uh_vrsn.ver_vldto
end as ValidityEndDate,
_cdhdr.langu as Langauge,
_ChangeDocLanguage._Text[1:Language=$session.system_language].LanguageName,
_UserContactCard.FullName,
cast ( concat( _cdpos_str.tabname, concat( '-', _cdpos_str.fname ) ) as cdtabfname ) as TabFieldName,
_UserContactCard,
_ChangeDocLanguage
}
where
(
_cdpos_str.tabname = 'UHS_CD_VER_NODE'
or _cdpos_str.tabname = 'UHS_CD_NODE_DESC'
or _cdpos_str.tabname = 'UHS_CD_NODE_ATTR'
)
and(
(
_cdpos_str.value_old <> ''
and _cdpos_str.value_new <> ''
)
or _cdpos_str.fname = 'NODE_VAL'
or _cdpos_str.fname = 'NODE_DESC'
or _cdpos_str.fname = 'NODE_RID'
or _cdpos_str.fname = 'NODE_PID'
or _cdpos_str.fname = 'NODE_VLD'
or _cdpos_str.chngind = 'U'
)
union all select from FAC_CDS_UH_CD_VERSION as _cdhdr
left outer join cdpos as _cdpos on _cdpos.objectclas = _cdhdr.objectclas
and _cdpos.objectid = _cdhdr.objectid
and _cdpos.changenr = _cdhdr.changenr
association [0..1] to I_UserContactCard as _UserContactCard on _UserContactCard.ContactCardID = $projection.UserName
association [0..1] to I_Language as _ChangeDocLanguage on _ChangeDocLanguage.Language = $projection.Langauge
{
key _cdhdr.objectclas as ObjectClass,
key _cdhdr.objectid as ObjectId,
key _cdhdr.changenr as DocumentNumber,
key _cdpos.tabname as TableName,
key _cdpos.fname as FieldName,
key case
when _cdpos.chngind = 'J' then 'CH'
when _cdpos.tabname = 'UHS_CD_VER_ATTR' then 'UA'
when _cdpos.tabname = 'UHS_CD_VERSION' and _cdpos.fname = 'VER_STATUS' then 'UJ'
else 'UH' end as ChangeType,
key cast( _cdpos.tabkey as cdtabkeylo ) as TableKey,
cast( '' as cdchngt ) as ChangeTypeText,
cast( '' as cdobjtd ) as ObjectTypeText,
cast( substring( _cdhdr.objectid, 45, 20 ) as cdobjtd ) as ObjectText,
cast( '' as cdfldt ) as ObjectFieldText,
@EndUserText.label: 'Changed By'
_cdhdr.username as UserName,
@EndUserText.label: 'Created On'
udate as CreatedDate,
@EndUserText.label: 'Created At'
utime as CreatedTime,
@EndUserText.label: 'Created At'
cast(dats_tims_to_tstmp(udate, utime, abap_system_timezone($session.client, 'NULL'), $session.client, 'NULL') as timestamp) as CreatedDateTime,
@EndUserText.label: 'New Value'
_cdpos.value_new as NewValue,
@EndUserText.label: 'Old Value'
_cdpos.value_old as OldValue,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 1, 40 ) as vrsid )
else _uh_vrsn.ver_id
end as VersionId,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 41, 4 ) as cakey )
else _uh_vrsn.hier_catg
end as HierarchyCategory,
_uh_catg.hrrp_hrytype as HryType,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 45, 20 ) as vhrid )
else _uh_vrsn.hier_hid
end as HierarchyId,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 65, 8 ) as vdtfm )
else _uh_vrsn.ver_vldfm
end as ValidityStartDate,
case
when _uh_vrsn.ver_id is null then cast ( substring( _cdhdr.objectid, 73, 8 ) as vdtto )
else _uh_vrsn.ver_vldto
end as ValidityEndDate,
_cdhdr.langu as Langauge,
_ChangeDocLanguage._Text[1:Language=$session.system_language].LanguageName,
_UserContactCard.FullName,
cast ( concat( _cdpos.tabname, concat( '-', _cdpos.fname ) ) as cdtabfname ) as TabFieldName,
_UserContactCard,
_ChangeDocLanguage
}
where
(
_cdpos.tabname = 'UHS_CD_VERSION'
or _cdpos.tabname = 'UHS_CD_VER_ATTR'
or _cdpos.tabname = 'UHS_CD_VER_CLFD'
or _cdpos.tabname = 'UHS_CD_VER_DESC'
)
and(
(
_cdpos.value_old <> ''
and _cdpos.value_new <> ''
)
or _cdpos.fname = 'VER_VLD'
or _cdpos.chngind = 'U'
)
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