I_ChangeDocument_2
Change Documents
I_ChangeDocument_2 is a Basic CDS View that provides data about "Change Documents" in SAP S/4HANA. It reads from 2 data sources (cdhdr, cdpos) and exposes 34 fields with key fields ChangeDocObjectClass, ChangeDocObject, ChangeDocument, ChangeDocDatabaseTable, ChangeDocShortTableKey. It has 5 associations to related views. Part of development package SZD.
Associations (5)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_ChangeDocLongTableKey | _ChangeDocLongTableKey | $projection.ChangeDocShortTableKey = _ChangeDocLongTableKey.ChangeDocKeyGuid |
| [0..1] | I_ChangeDocumentItemExtension | _ChangeDocumentItemExtension | $projection.ChangeDocShortTableKey = _ChangeDocumentItemExtension.ChangeDocKeyGuid |
| [0..1] | I_Language | _ChangeDocLanguage | $projection.ChangeDocLanguage = _ChangeDocLanguage.Language |
| [0..1] | I_LanguageText | _ChangeDocLanguageText | _ChangeDocLanguageText.Language = $session.system_language and _ChangeDocLanguageText.LanguageCode = $projection.ChangeDocLanguage |
| [0..1] | I_ChangeDocUser | _user | $projection.CreatedByUser = _user.UserName |
Annotations (8)
| Name | Value | Level | Field |
|---|---|---|---|
| AccessControl.authorizationCheck | #PRIVILEGED_ONLY | view | |
| EndUserText.label | Change Documents | view | |
| Metadata.ignorePropagatedAnnotations | true | view | |
| Metadata.allowExtensions | true | view | |
| ObjectModel.usageType.serviceQuality | #X | view | |
| ObjectModel.usageType.sizeCategory | #XXL | view | |
| ObjectModel.usageType.dataClass | #MIXED | view | |
| VDM.viewType | #BASIC | view |
Fields (34)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ChangeDocObjectClass | cdpos | objectclas | |
| KEY | ChangeDocObject | cdpos | objectid | |
| KEY | ChangeDocument | cdpos | changenr | |
| KEY | ChangeDocDatabaseTable | cdpos | tabname | |
| KEY | ChangeDocShortTableKey | cdpos | tabkey | |
| KEY | ChangeDocDatabaseTableField | cdpos | fname | |
| KEY | ChangeDocItemChangeType | cdpos | chngind | |
| tabkeyendasChangeDocTableKey | ||||
| CreatedByUser | cdhdr | username | ||
| usernameendasChangeDocCreatedByUser | ||||
| CreationDate | cdhdr | udate | ||
| CreationTime | cdhdr | utime | ||
| clientNULLascdcreatedasCreationDateTime | ||||
| ChangeTransactionCode | cdhdr | tcode | ||
| ChangeDocChangeType | cdhdr | change_ind | ||
| ChangeDocLanguage | cdhdr | langu | ||
| ChangeDocPreviousUnit | ||||
| ChangeDocNewUnit | ||||
| ChangeDocPreviousCurrency | ||||
| ChangeDocNewCurrency | ||||
| ChangeDocNewFieldValueDB | cdpos | value_new | ||
| ChangeDocPreviousFieldValueDB | cdpos | value_old | ||
| ChangeDocNewString | _ChangeDocumentItemExtension | ChangeDocStringNew | ||
| ChangeDocPreviousString | _ChangeDocumentItemExtension | ChangeDocStringOld | ||
| ChangeDocNewShortString | _ChangeDocumentItemExtension | ChangeDocShortStringNew | ||
| ChangeDocPreviousShortString | _ChangeDocumentItemExtension | ChangeDocShortStringOld | ||
| ChangeDocNewRawString | _ChangeDocumentItemExtension | ChangeDocRawStringNew | ||
| ChangeDocPreviousRawString | _ChangeDocumentItemExtension | ChangeDocRawStringOld | ||
| _ChangeTypeText | _ChangeTypeText | |||
| _ChangeDocLanguage | _ChangeDocLanguage | |||
| _ChangeDocLanguageText | _ChangeDocLanguageText | |||
| _user | _user | |||
| _TableText | _TableText | |||
| _FieldText | _FieldText |
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@EndUserText.label: 'Change Documents'
@Metadata.ignorePropagatedAnnotations: true
@Metadata.allowExtensions: true
@ObjectModel.usageType:{
serviceQuality: #X,
sizeCategory: #XXL,
dataClass: #MIXED
}
@VDM.viewType:#BASIC
define root view entity I_ChangeDocument_2
as select from cdpos
left outer join cdhdr on cdhdr.objectclas = cdpos.objectclas
and cdhdr.objectid = cdpos.objectid
and cdhdr.changenr = cdpos.changenr
association [0..1] to I_ChangeDocLongTableKey as _ChangeDocLongTableKey
on $projection.ChangeDocShortTableKey = _ChangeDocLongTableKey.ChangeDocKeyGuid
association [0..1] to I_ChangeDocumentItemExtension as _ChangeDocumentItemExtension
on $projection.ChangeDocShortTableKey = _ChangeDocumentItemExtension.ChangeDocKeyGuid
association of one to many I_ChangeDocTableNameText as _TableText
on $projection.ChangeDocObjectClass = _TableText.ChangeDocObject
and $projection.ChangeDocDatabaseTable = _TableText.Tablename
association of one to many I_ChangeDocFieldNameText as _FieldText
on $projection.ChangeDocObjectClass = _FieldText.ChangeDocObject
and $projection.ChangeDocDatabaseTable = _FieldText.Tablename
and $projection.ChangeDocDatabaseTableField = _FieldText.Fieldname
association of one to many I_ChangeDocChangeIndT as _ChangeTypeText
on $projection.ChangeDocItemChangeType = _ChangeTypeText.Value
association [0..1] to I_Language as _ChangeDocLanguage
on $projection.ChangeDocLanguage = _ChangeDocLanguage.Language
association [0..1] to I_LanguageText as _ChangeDocLanguageText
on _ChangeDocLanguageText.Language = $session.system_language
and _ChangeDocLanguageText.LanguageCode = $projection.ChangeDocLanguage
association [0..1] to I_ChangeDocUser as _user
on $projection.CreatedByUser = _user.UserName
{
key cdpos.objectclas as ChangeDocObjectClass,
key cdpos.objectid as ChangeDocObject,
key cdpos.changenr as ChangeDocument,
key cdpos.tabname as ChangeDocDatabaseTable,
key cdpos.tabkey as ChangeDocShortTableKey,
key cdpos.fname as ChangeDocDatabaseTableField,
key cdpos.chngind as ChangeDocItemChangeType,
// merge tabkeyshort or tabkeylong into tabkeylong
case
when _ChangeDocumentItemExtension.ChangeDocTableKey is not initial // string field
then
_ChangeDocumentItemExtension.ChangeDocTableKey // string field -> tabkey from CDPOS_STR
when _ChangeDocLongTableKey.ChangeDocLongTableKey is not initial // long tabkey, no string field
then
_ChangeDocLongTableKey.ChangeDocLongTableKey // no string field -> long tabkey from CDPOS_UID
else
cdpos.tabkey // short tabkey from CDPOS
end as ChangeDocTableKey,
cdhdr.username as CreatedByUser,
// username -> Text
case
when _user.NAME_TEXTC is not initial
then _user.NAME_TEXTC
else cdhdr.username
end as ChangeDocCreatedByUser,
@Semantics.systemDate.createdAt: true
cdhdr.udate as CreationDate,
@Semantics.systemTime.createdAt: true
cdhdr.utime as CreationTime,
// Created on
cast(dats_tims_to_tstmp ( cdhdr.udate,
cdhdr.utime,
abap_system_timezone( $session.client, 'NULL' ),
$session.client,
'NULL' ) as cdcreated ) as CreationDateTime,
cdhdr.tcode as ChangeTransactionCode,
cdhdr.change_ind as ChangeDocChangeType,
@Semantics.language: true
@ObjectModel.foreignKey.association: '_ChangeDocLanguage'
cdhdr.langu as ChangeDocLanguage,
cast ( cdpos.unit_old as cdunito preserving type ) as ChangeDocPreviousUnit,
cast ( cdpos.unit_new as cdunitn preserving type ) as ChangeDocNewUnit,
cast ( cdpos.cuky_old as cdcukyo preserving type ) as ChangeDocPreviousCurrency,
cast ( cdpos.cuky_new as cdcukyn preserving type ) as ChangeDocNewCurrency,
cdpos.value_new as ChangeDocNewFieldValueDB,
case
when cdpos.value_new is not initial or
cdpos.unit_new is not initial or
cdpos.cuky_new is not initial
then
cast( concat_with_space( cdpos.value_new,
concat(cdpos.cuky_new,
cdpos.unit_new ), 1 )
as cdfldvaln )
else ' '
end as ChangeDocNewFieldValue,
cdpos.value_old as ChangeDocPreviousFieldValueDB,
case
when cdpos.value_old is not initial or
cdpos.cuky_old is not initial or
cdpos.unit_old is not initial
then
cast( concat_with_space(cdpos.value_old,
concat(cdpos.cuky_old,
cdpos.unit_old ), 1 )
as cdfldvaln )
else ' '
end as ChangeDocPreviousFieldValue,
// Text case
case
when cdpos.text_case = 'X'
then cdpos.text_case
else cast ( ' ' as cdxfeld preserving type )
end as ChangeDocTextIsChanged,
// string values
_ChangeDocumentItemExtension.ChangeDocStringNew as ChangeDocNewString,
_ChangeDocumentItemExtension.ChangeDocStringOld as ChangeDocPreviousString,
_ChangeDocumentItemExtension.ChangeDocShortStringNew as ChangeDocNewShortString,
_ChangeDocumentItemExtension.ChangeDocShortStringOld as ChangeDocPreviousShortString,
_ChangeDocumentItemExtension.ChangeDocRawStringNew as ChangeDocNewRawString,
_ChangeDocumentItemExtension.ChangeDocRawStringOld as ChangeDocPreviousRawString,
_ChangeTypeText,
_ChangeDocLanguage,
_ChangeDocLanguageText,
_user,
_TableText,
_FieldText
}
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