P_ChgDocItmWthUUIDTblKeyNoExtn is a Basic CDS View that provides data about "Change Document Item with UUID Key no Extension" in SAP S/4HANA. It reads from 1 data source (cdpos) and exposes 27 fields with key fields ChangeDocObject, ChangeDocObjectClass, ChangeDocument, DatabaseTable, ChangeDocTableKey. It has 8 associations to related views.
$projection.ChangeDocObjectClass = _FieldTextReplace.ObjectClass and $projection.DatabaseTable = _FieldTextReplace.DatabaseTable and $projection.ChangeDocDatabaseTableField = _FieldTextReplace.Fieldname and _FieldTextReplace.TextType = 'f'
@AbapCatalog.viewEnhancementCategory: [#NONE]@AccessControl.authorizationCheck: #NOT_REQUIRED@EndUserText.label: 'Change Document Item with UUID Key no Extension'
@Metadata.ignorePropagatedAnnotations: true@VDM.viewType: #BASIC@VDM.private: true@ObjectModel.usageType:{
serviceQuality: #C,
sizeCategory: #L,
dataClass: #MIXED
}defineviewentity P_ChgDocItmWthUUIDTblKeyNoExtn
withparameters P_ChangeDocObjectClass : cdobjectcl, P_DatabaseTable : tabname
asselectfrom cdpos
//for string and rawstring
leftouter to one join cdpos_str as extn
on cdpos.tabkey = extn.keyguid
and extn.objectclas = $parameters.P_ChangeDocObjectClass
and extn.tabname = $parameters.P_DatabaseTable
association [0..1] to I_ChangeDocument as _ChangeDocument
on $projection.ChangeDocObjectClass = _ChangeDocument.ChangeDocObjectClass
and $projection.ChangeDocObject = _ChangeDocument.ChangeDocObject
and $projection.ChangeDocument = _ChangeDocument.ChangeDocument
association [0..1] to I_ChangeDocLongTableKey as _ChangeDocLongTableKey
on $projection.ChangeDocTableKey = _ChangeDocLongTableKey.ChangeDocKeyGuid
/*association [0..1] to I_ChangeDocumentItemExtension as _ChangeDocumentItemExtension
on $projection.ChangeDocTableKey = _ChangeDocumentItemExtension.ChangeDocKeyGuid
*/association [0..1] to I_ChangeDocFieldNames as _FieldTextDDIC
on $projection.DatabaseTable = _FieldTextDDIC.DatabaseTable
and $projection.ChangeDocDatabaseTableField = _FieldTextDDIC.Value
and _FieldTextDDIC.Language = $session.system_language
association [0..1] to I_ChangeDocFieldText as _FieldTextView
on $projection.DatabaseTable = _FieldTextView.DatabaseTableName
and $projection.ChangeDocDatabaseTableField = _FieldTextView.FieldName
and _FieldTextView.Language = $session.system_language
association [0..1] to I_ChangeDocFieldLabel as _FieldTextLabel
on $projection.DatabaseTable = _FieldTextLabel.DatabaseTableName
and $projection.ChangeDocDatabaseTableField = _FieldTextLabel.FieldName
and _FieldTextLabel.Language = $session.system_language
/*+[hideWarning] { "IDS" : [ "CARDINALITY_CHECK" ] }*/association [0..1] to I_ChangeDocViewText as _FieldTextReplace
on $projection.ChangeDocObjectClass = _FieldTextReplace.ObjectClass
and $projection.DatabaseTable = _FieldTextReplace.DatabaseTable
and $projection.ChangeDocDatabaseTableField = _FieldTextReplace.Fieldname
and _FieldTextReplace.TextType = 'f'
association [0..1] to I_ChangeDocTableNames as _TableTextDDIC
on $projection.DatabaseTable = _TableTextDDIC.Value
and _TableTextDDIC.Language = $session.system_language
association [0..1] to I_ChangeDocTableText as _TableTextView
on $projection.DatabaseTable = _TableTextView.CDSViewName
and _TableTextView.Language = $session.system_language
{
key cdpos.objectid as ChangeDocObject,
key cdpos.objectclas as ChangeDocObjectClass,
key cdpos.changenr as ChangeDocument,
key cdpos.tabname as DatabaseTable,
key cdpos.tabkey as ChangeDocTableKey,
key cdpos.fname as ChangeDocDatabaseTableField,
key cdpos.chngind as ChangeDocItemChangeType,
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 ChangeDocNewFieldValue,
cdpos.value_old as ChangeDocPreviousFieldValue,
extn.value_new as ChangeDocStringNew,
extn.value_old as ChangeDocStringOld,
extn.value_rawstr_new as ChangeDocRawStringNew,
extn.value_rawstr_old as ChangeDocRawStringOld,
/*extn.value_shstr_new as ChangeDocShortStringNew,
extn.value_shstr_old as ChangeDocShortStringOld,*/cast(cdpos.value_new as cdshortstringn) as ChangeDocShortStringNew,
cast(cdpos.value_old as cdshortstringo) as ChangeDocShortStringOld,
//cast(substring(cdpos.objectid, 1, 32) as hexadecimalcharchangedocobject preserving type) as HexadecimalCharChangeDocObject,
casewhen cdpos.objectclas = $parameters.P_ChangeDocObjectClass
thencast(substring(cdpos.objectid, 1, 32) as hexadecimalcharchangedocobject preserving type)
elsecast('00000000000000000000000000000000' as hexadecimalcharchangedocobject )
endas HexadecimalCharChangeDocObject,
//cast(substring(cdpos.tabkey, 4, 32) as hexadecimalcharchgdoctablekey preserving type) as HexadecimalCharChgDocTableKey,
casewhen cdpos.objectclas = $parameters.P_ChangeDocObjectClass
thencast(substring(cdpos.tabkey, 4, 32) as hexadecimalcharchgdoctablekey preserving type)
elsecast('00000000000000000000000000000000' as hexadecimalcharchgdoctablekey )
endas HexadecimalCharChgDocTableKey,
casewhen cdpos.text_case = 'X'
then cdpos.text_case
elsecast ( ' ' as cdxfeld preserving type )
endas ChangeDocTextIsChanged,
_ChangeDocument,
_ChangeDocLongTableKey,
//_ChangeDocumentItemExtension,
_FieldTextDDIC,
_FieldTextView,
_FieldTextLabel,
_TableTextView,
_TableTextDDIC,
_FieldTextReplace
} where cdpos.tabname = $parameters.P_DatabaseTable
and cdpos.objectclas = $parameters.P_ChangeDocObjectClass
and cdpos.objectclas like 'ATP%'
and length(cdpos.tabkey) = 35
and extn.keyguid isnull/*+[internal] {
"BASEINFO":
{
"FROM":
[
"CDPOS",
"CDPOS_STR"
],
"ASSOCIATED":
[
"I_CHANGEDOCFIELDLABEL",
"I_CHANGEDOCFIELDNAMES",
"I_CHANGEDOCFIELDTEXT",
"I_CHANGEDOCLONGTABLEKEY",
"I_CHANGEDOCTABLENAMES",
"I_CHANGEDOCTABLETEXT",
"I_CHANGEDOCUMENT",
"I_CHANGEDOCVIEWTEXT"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/