I_ProjectChangeDocuments
Change document for Project data
I_ProjectChangeDocuments is a Basic CDS View (Fact) that provides data about "Change document for Project data" in SAP S/4HANA. It reads from 3 data sources (I_ChangeDocument, I_ChangeDocumentItem, I_ProjectData_2) and exposes 29 fields with key fields ChangeDocObject, ChangeDocObjectClass, ChangeDocument, DatabaseTable, ChangeDocTableKey. It has 3 associations to related views.
Data Sources (3)
| Source | Alias | Join Type |
|---|---|---|
| I_ChangeDocument | cdhdr | inner |
| I_ChangeDocumentItem | cdpos | inner |
| I_ProjectData_2 | proj | from |
Associations (3)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_ProjectResponsiblePerson | _ResponsiblePerson | $projection.ResponsiblePerson = _ResponsiblePerson.ResponsiblePerson |
| [0..1] | I_ProjectApplicant | _ProjectApplicant | $projection.ApplicantCode = _ProjectApplicant.ApplicantCode |
| [0..*] | I_WBSElementData_2 | _WBSElement | $projection.ProjectInternalID = _WBSElement.ProjectInternalID |
Annotations (15)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | IPROJCHGDOC | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| EndUserText.label | Change document for Project data | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| VDM.viewType | #BASIC | view | |
| VDM.lifecycle.contract.type | #PUBLIC_LOCAL_API | view | |
| ObjectModel.compositionRoot | true | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.sizeCategory | #XL | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| Analytics.dataCategory | #FACT | view | |
| Analytics.dataExtraction.enabled | true | view | |
| Metadata.ignorePropagatedAnnotations | true | view |
Fields (29)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ChangeDocObject | I_ChangeDocument | ChangeDocObject | |
| KEY | ChangeDocObjectClass | I_ChangeDocument | ChangeDocObjectClass | |
| KEY | ChangeDocument | I_ChangeDocumentItem | ChangeDocument | |
| KEY | DatabaseTable | I_ChangeDocumentItem | DatabaseTable | |
| KEY | ChangeDocTableKey | I_ChangeDocumentItem | ChangeDocTableKey | |
| KEY | ChangeDocDatabaseTableField | I_ChangeDocumentItem | ChangeDocDatabaseTableField | |
| KEY | ChangeDocItemChangeType | I_ChangeDocumentItem | ChangeDocItemChangeType | |
| KEY | ProjectInternalID | I_ProjectData_2 | ProjectInternalID | |
| ProjectExternalID | I_ProjectData_2 | ProjectExternalID | ||
| ChangeDocGlobalFieldName | FieldmapProj | GFNName | ||
| ProjectDescription | I_ProjectData_2 | ProjectDescription | ||
| ControllingArea | I_ProjectData_2 | ControllingArea | ||
| ProfitCenter | I_ProjectData_2 | ProfitCenter | ||
| ResponsiblePerson | I_ProjectData_2 | ResponsiblePerson | ||
| ApplicantCode | I_ProjectData_2 | ApplicantCode | ||
| ChangeDocPreviousUnit | I_ChangeDocumentItem | ChangeDocPreviousUnit | ||
| ChangeDocNewUnit | I_ChangeDocumentItem | ChangeDocNewUnit | ||
| ChangeDocPreviousCurrency | I_ChangeDocumentItem | ChangeDocPreviousCurrency | ||
| ChangeDocNewCurrency | I_ChangeDocumentItem | ChangeDocNewCurrency | ||
| ChangeDocumentOldFieldValue | I_ChangeDocumentItem | ChangeDocPreviousFieldValue | Old Value | |
| ChangeDocumentNewFieldValue | I_ChangeDocumentItem | ChangeDocNewFieldValue | New Value | |
| LastChangedByUser | I_ChangeDocument | CreatedByUser | ||
| LastChangeDate | I_ChangeDocument | CreationDate | ||
| LastChangeTime | I_ChangeDocument | CreationTime | ||
| _ControllingArea | I_ProjectData_2 | _ControllingArea | ||
| _ProfitCenter | I_ProjectData_2 | _ProfitCenter | ||
| _ResponsiblePerson | _ResponsiblePerson | |||
| _ProjectApplicant | _ProjectApplicant | |||
| _WBSElement | _WBSElement |
@AbapCatalog: {
sqlViewName: 'IPROJCHGDOC',
compiler.compareFilter: true,
preserveKey: true
}
@AccessControl: {
authorizationCheck: #CHECK
}
@EndUserText.label: 'Change document for Project data'
@ClientHandling.algorithm: #SESSION_VARIABLE
@VDM: {
viewType: #BASIC,
lifecycle.contract.type: #PUBLIC_LOCAL_API
}
@ObjectModel: {
compositionRoot: true,
usageType: {
serviceQuality: #C,
sizeCategory : #XL,
dataClass: #TRANSACTIONAL
},
supportedCapabilities: [ #SQL_DATA_SOURCE, #EXTRACTION_DATA_SOURCE, #CDS_MODELING_DATA_SOURCE, #CDS_MODELING_ASSOCIATION_TARGET ]
}
@Analytics: {
dataCategory: #FACT,
dataExtraction: {
enabled: true
}
}
@Metadata.ignorePropagatedAnnotations:true
define view I_ProjectChangeDocuments
as select from I_ProjectData_2 as proj
inner join I_ChangeDocument as cdhdr on cdhdr.ChangeDocObject = proj.ProjectInternalID
and cdhdr.ChangeDocObjectClass = 'PROJ'
inner join I_ChangeDocumentItem as cdpos on cdpos.ChangeDocObject = proj.ProjectInternalID
and cdpos.ChangeDocument = cdhdr.ChangeDocument
and (
cdpos.DatabaseTable = 'PROJ'
)
left outer to one join P_ProjectFieldMappingForChgDoc( p_tabname: 'I_PROJECTDATA_2' , p_viewname:'IPROJECTDATA2' ) as FieldmapProj on FieldmapProj.DDICName = cdpos.ChangeDocDatabaseTableField
// DPP Changes
// Person in Responsible for Project
association [0..1] to I_ProjectResponsiblePerson as _ResponsiblePerson on $projection.ResponsiblePerson = _ResponsiblePerson.ResponsiblePerson
// Project Applicant
association [0..1] to I_ProjectApplicant as _ProjectApplicant on $projection.ApplicantCode = _ProjectApplicant.ApplicantCode
// WBS Element
association [0..*] to I_WBSElementData_2 as _WBSElement on $projection.ProjectInternalID = _WBSElement.ProjectInternalID
{
key cdhdr.ChangeDocObject as ChangeDocObject,
key cdhdr.ChangeDocObjectClass as ChangeDocObjectClass,
key cdpos.ChangeDocument as ChangeDocument,
key cdpos.DatabaseTable as DatabaseTable,
key cdpos.ChangeDocTableKey as ChangeDocTableKey,
// Field Name
key cdpos.ChangeDocDatabaseTableField as ChangeDocDatabaseTableField,
// Change Indicator
key cdpos.ChangeDocItemChangeType as ChangeDocItemChangeType,
key proj.ProjectInternalID as ProjectInternalID,
proj.ProjectExternalID as ProjectExternalID,
FieldmapProj.GFNName as ChangeDocGlobalFieldName,
@Semantics.text: true
proj.ProjectDescription as ProjectDescription,
@Consumption.hidden: true
proj.ControllingArea as ControllingArea,
@Consumption.hidden: true
proj.ProfitCenter as ProfitCenter,
@Consumption.hidden: true
proj.ResponsiblePerson as ResponsiblePerson,
@Consumption.hidden: true
proj.ApplicantCode as ApplicantCode,
cdpos.ChangeDocPreviousUnit as ChangeDocPreviousUnit,
cdpos.ChangeDocNewUnit as ChangeDocNewUnit,
cdpos.ChangeDocPreviousCurrency as ChangeDocPreviousCurrency,
cdpos.ChangeDocNewCurrency as ChangeDocNewCurrency,
// Old Value
@EndUserText.label: 'Old Value'
cdpos.ChangeDocPreviousFieldValue as ChangeDocumentOldFieldValue,
// New Value
@EndUserText.label: 'New Value'
cdpos.ChangeDocNewFieldValue as ChangeDocumentNewFieldValue,
// Changed By
cdhdr.CreatedByUser as LastChangedByUser,
// Separate Date
// LastChangedDate needed for Smart Filter Bar
@Semantics.systemDate.createdAt: true
cdhdr.CreationDate as LastChangeDate,
// Separate Time
// LastChangeTime needed for sorting
@Semantics.systemTime.createdAt: true
cdhdr.CreationTime as LastChangeTime,
//Associations
@Consumption.hidden: true
proj._ControllingArea as _ControllingArea,
@Consumption.hidden: true
proj._ProfitCenter as _ProfitCenter,
@Consumption.hidden: true
_ResponsiblePerson,
@Consumption.hidden: true
_ProjectApplicant,
@Consumption.hidden: true
_WBSElement
}
where
cdhdr.ChangeDocObjectClass = 'PROJ'
and cdpos.ChangeDocObjectClass = 'PROJ'
and cdpos.DatabaseTable = 'PROJ'
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