FAC_CDS_UH_CD

DDL: FAC_CDS_UH_CD SQL: FACV_UH_CD Type: view Package: UH_CORE

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)

SourceAliasJoin 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)

CardinalityTargetAliasCondition
[0..1] I_UserContactCard _UserContactCard _UserContactCard.ContactCardID = $projection.UserName
[0..1] I_Language _ChangeDocLanguage _ChangeDocLanguage.Language = $projection.Langauge

Annotations (8)

NameValueLevelField
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)

KeyFieldSource TableSource FieldDescription
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'
  )