I_ProjectChangeDocuments

DDL: I_PROJECTCHANGEDOCUMENTS Type: view BASIC Package: VDM_PS_ST_CHANGEDOC

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. Part of development package VDM_PS_ST_CHANGEDOC.

Data Sources (3)

SourceAliasJoin Type
I_ChangeDocument cdhdr inner
I_ChangeDocumentItem cdpos inner
I_ProjectData_2 proj from

Associations (3)

CardinalityTargetAliasCondition
[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)

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

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