P_RAChangeDocumentItem
P_RAChangeDocumentItem is a Composite CDS View in SAP S/4HANA. It reads from 1 data source (I_ChangeDocumentItem) and exposes 23 fields with key fields ChangeDocObject, ChangeDocObjectClass, ChangeDocument, DatabaseTable, ChangeDocTableKey. It has 6 associations to related views.
Data Sources (1)
| Source | Alias | Join Type |
|---|---|---|
| I_ChangeDocumentItem | I_ChangeDocumentItem | from |
Associations (6)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1..1] | P_RAContractForChangeItem | _Contract | _Contract.ChangeDocObject = $projection.ChangeDocObject |
| [0..1] | I_RAPerformanceObligation | _POB | _POB.PerformanceObligation = $projection.PerformanceObligation |
| [1..1] | I_RAChangeDocFieldName | _FieldName | _FieldName.DatabaseTable = $projection.DatabaseTable and _FieldName.DatabaseTableField = $projection.ChangeDocDatabaseTableField and _FieldName.Language = $session.system_language |
| [1..1] | I_RAChangeDocTableName | _TableName | _TableName.DatabaseTable = $projection.DatabaseTable and _TableName.Language = $session.system_language |
| [1..1] | I_User | _CreatedByUser | _CreatedByUser.UserID = $projection.CreatedByUser |
| [1..1] | I_RAChangeTransactionCode | _RAChangeTransactionCode | _RAChangeTransactionCode.ChangeTransactionCode = $projection.changetransactioncode |
Annotations (8)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | PRACHGDOCITEM | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| AccessControl.authorizationCheck | #NOT_REQUIRED | view | |
| AccessControl.privilegedAssociations | _CreatedByUser | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| VDM.viewType | #COMPOSITE | view | |
| VDM.private | true | view |
Fields (23)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ChangeDocObject | ChangeDocObject | ||
| KEY | ChangeDocObjectClass | ChangeDocObjectClass | ||
| KEY | ChangeDocument | ChangeDocument | ||
| KEY | DatabaseTable | DatabaseTable | ||
| KEY | ChangeDocTableKey | ChangeDocTableKey | ||
| KEY | ChangeDocDatabaseTableField | ChangeDocDatabaseTableField | ||
| KEY | ChangeDocItemChangeType | ChangeDocItemChangeType | ||
| DatabaseTableText | _TableName | DatabaseTableText | ||
| DatabaseTableFieldText | _FieldName | DatabaseTableFieldText | ||
| ChangeDocPreviousUnit | ChangeDocPreviousUnit | |||
| ChangeDocNewUnit | ChangeDocNewUnit | |||
| ChangeDocPreviousCurrency | ChangeDocPreviousCurrency | |||
| ChangeDocNewCurrency | ChangeDocNewCurrency | |||
| CreatedByUser | _ChangeDocument | CreatedByUser | ||
| CreationDate | _ChangeDocument | CreationDate | ||
| CreationTime | _ChangeDocument | CreationTime | ||
| ChangeTransactionCode | _ChangeDocument | ChangeTransactionCode | ||
| _TableName | _TableName | |||
| _FieldName | _FieldName | |||
| _CreatedByUser | _CreatedByUser | |||
| _Contract | _Contract | |||
| _POB | _POB | |||
| _RAChangeTransactionCode | _RAChangeTransactionCode |
@AbapCatalog.sqlViewName: 'PRACHGDOCITEM'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@AccessControl.privilegedAssociations: '_CreatedByUser'
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM.viewType: #COMPOSITE
@VDM.private:true
define view P_RAChangeDocumentItem as select from I_ChangeDocumentItem
association [1..1] to P_RAContractForChangeItem as _Contract
on _Contract.ChangeDocObject = $projection.ChangeDocObject
association [0..1] to I_RAPerformanceObligation as _POB
on _POB.PerformanceObligation = $projection.PerformanceObligation
association [1..1] to I_RAChangeDocFieldName as _FieldName
on _FieldName.DatabaseTable = $projection.DatabaseTable
and _FieldName.DatabaseTableField = $projection.ChangeDocDatabaseTableField
and _FieldName.Language = $session.system_language
association [1..1] to I_RAChangeDocTableName as _TableName
on _TableName.DatabaseTable = $projection.DatabaseTable
and _TableName.Language = $session.system_language
association [1..1] to I_User as _CreatedByUser
on _CreatedByUser.UserID = $projection.CreatedByUser
association [1..1] to I_RAChangeTransactionCode as _RAChangeTransactionCode
on _RAChangeTransactionCode.ChangeTransactionCode = $projection.changetransactioncode
{
key ChangeDocObject,
key ChangeDocObjectClass,
key ChangeDocument,
@ObjectModel.foreignKey.association: '_TableName'
key DatabaseTable,
key ChangeDocTableKey,
@ObjectModel.foreignKey.association: '_FieldName'
key ChangeDocDatabaseTableField,
key ChangeDocItemChangeType,
_TableName.DatabaseTableText,
_FieldName.DatabaseTableFieldText,
ChangeDocPreviousUnit,
ChangeDocNewUnit,
ChangeDocPreviousCurrency,
ChangeDocNewCurrency,
// join new field value with its currency or unit
case
when ChangeDocNewCurrency is not initial or
ChangeDocNewUnit is not initial
then
cast( concat_with_space(ChangeDocNewFieldValue, concat(ChangeDocNewCurrency, ChangeDocNewUnit ), 1 ) as changedocnewfieldvalue )
else
cast( ChangeDocNewFieldValue as changedocnewfieldvalue )
end as ChangeDocNewFieldValue,
// join old field value with its currency or unit
case
when ChangeDocPreviousCurrency is not initial or
ChangeDocPreviousUnit is not initial
then
cast( concat_with_space(ChangeDocPreviousFieldValue, concat(ChangeDocPreviousCurrency, ChangeDocPreviousUnit ), 1 ) as changedocpreviousfieldvalue )
else
cast( ChangeDocPreviousFieldValue as changedocpreviousfieldvalue )
end as ChangeDocPreviousFieldValue,
@Semantics.user.createdBy: true
@ObjectModel.foreignKey.association: '_CreatedByUser'
_ChangeDocument.CreatedByUser as CreatedByUser,
@Semantics.systemDate.createdAt: true
_ChangeDocument.CreationDate,
_ChangeDocument.CreationTime,
@ObjectModel.foreignKey.association: '_RAChangeTransactionCode'
_ChangeDocument.ChangeTransactionCode,
// Is Manually Changed
case
when _ChangeDocument.ChangeTransactionCode like 'FARR_MANUAL_%'
//or _ChangeDocument.ChangeTransactionCode = 'FARR_MANUAL_FULFILL'
then cast('X' as farr_manual_changed_cds preserving type)
else cast(' ' as farr_manual_changed_cds preserving type)
end as RAContractIsManuallyChanged,
// select POB ID from ChangeDocTableKey
@ObjectModel.foreignKey.association: '_POB'
case
when DatabaseTable = 'FARR_D_POB' then cast(SUBSTRING(ChangeDocTableKey, 4, 16) as farr_cds_pob_id preserving type)
end as PerformanceObligation,
_TableName,
_FieldName,
_CreatedByUser,
_Contract,
_POB,
_RAChangeTransactionCode
}
where ChangeDocObjectClass = 'FARR_CONTRACT' // Only select Revenue Accounting change
and ( DatabaseTable = 'FARR_D_CONTRACT'
or DatabaseTable = 'FARR_D_POB'
or DatabaseTable = 'FARR_D_FULFILLMT' )
and ChangeDocItemChangeType = 'U'; // history with updated flag
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