I_WBSElementChangeDocuments

DDL: I_WBSELEMENTCHANGEDOCUMENTS Type: view BASIC

Change document for WBS Element data

I_WBSElementChangeDocuments is a Basic CDS View (Fact) that provides data about "Change document for WBS Element data" in SAP S/4HANA. It reads from 3 data sources (I_ChangeDocument, I_ChangeDocumentItem, I_WBSElementData_2) and exposes 39 fields with key fields ChangeDocObject, ChangeDocObjectClass, ChangeDocument, DatabaseTable, ChangeDocTableKey. It has 3 associations to related views.

Data Sources (3)

SourceAliasJoin Type
I_ChangeDocument cdhdr inner
I_ChangeDocumentItem cdpos inner
I_WBSElementData_2 prps from

Associations (3)

CardinalityTargetAliasCondition
[0..1] I_ProjectResponsiblePerson _ResponsiblePerson $projection.ResponsiblePerson = _ResponsiblePerson.ResponsiblePerson
[0..1] I_ProjectApplicant _ProjectApplicant $projection.ApplicantCode = _ProjectApplicant.ApplicantCode
[1..1] I_ProjectData_2 _Project $projection.ChangeDocObject = _Project.ProjectInternalID

Annotations (15)

NameValueLevelField
AbapCatalog.sqlViewName IWBSCHGDOC view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #CHECK view
EndUserText.label Change document for WBS Element 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 (39)

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 WBSElementInternalID I_WBSElementData_2 WBSElementInternalID
WBSElementExternalID I_WBSElementData_2 WBSElementExternalID
ChangeDocGlobalFieldName FieldmapProj GFNName
WBSDescription I_WBSElementData_2 WBSDescription
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_WBSElementData_2 ControllingArea
ProfitCenter I_WBSElementData_2 ProfitCenter
ResponsiblePerson I_WBSElementData_2 ResponsiblePerson
ApplicantCode I_WBSElementData_2 ApplicantCode
RespCostCenterControllingArea I_WBSElementData_2 RespCostCenterControllingArea
ResponsibleCostCenter I_WBSElementData_2 ResponsibleCostCenter
FreeDefinedAttribute01 I_WBSElementData_2 FreeDefinedAttribute01
FreeDefinedAttribute02 I_WBSElementData_2 FreeDefinedAttribute02
FreeDefinedAttribute03 I_WBSElementData_2 FreeDefinedAttribute03
FreeDefinedAttribute04 I_WBSElementData_2 FreeDefinedAttribute04
FreeDefinedIndicator1 I_WBSElementData_2 FreeDefinedIndicator1
FreeDefinedIndicator2 I_WBSElementData_2 FreeDefinedIndicator2
ProjectType I_WBSElementData_2 ProjectType
_ControllingArea I_WBSElementData_2 _ControllingArea
_ProfitCenter I_WBSElementData_2 _ProfitCenter
_ResponsibleCostCenter I_WBSElementData_2 _ResponsibleCostCenter
_ResponsiblePerson _ResponsiblePerson
_ProjectApplicant _ProjectApplicant
_Project _Project
@AbapCatalog: {
          sqlViewName: 'IWBSCHGDOC',
          compiler.compareFilter: true,
          preserveKey: true
          }

@AccessControl: {
    authorizationCheck: #CHECK
    }
@EndUserText.label: 'Change document for WBS Element 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_WBSElementChangeDocuments
  as select from           I_WBSElementData_2                                                                              as prps
    inner join             I_ChangeDocument                                                                                as cdhdr        on  cdhdr.ChangeDocObject      = prps.ProjectInternalID
                                                                                                                                           and cdhdr.ChangeDocObjectClass = 'PROJ'
    inner join             I_ChangeDocumentItem                                                                            as cdpos        on  cdpos.ChangeDocObject      = prps.ProjectInternalID
                                                                                                                                           and cdpos.ChangeDocObjectClass = 'PROJ'
                                                                                                                                           and cdpos.ChangeDocument       = cdhdr.ChangeDocument
                                                                                                                                           and cdpos.ChangeDocTableKey    = concat(
      cast(
        $session.client                                                                                                    as char3
      ), prps.WBSElementInternalID
    )
                                                                                                                                           and (
                                                                                                                                              cdpos.DatabaseTable         = 'PRPS'
                                                                                                                                            )
    left outer to one join P_ProjectFieldMappingForChgDoc( p_tabname: 'I_WBSELEMENTDATA_2' , p_viewname:'IWBSELMNTDATA2' ) 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
  // Project Data

  association [1..1] to I_ProjectData_2            as _Project           on $projection.ChangeDocObject = _Project.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 prps.WBSElementInternalID          as WBSElementInternalID,
      prps.WBSElementExternalID          as WBSElementExternalID,
      FieldmapProj.GFNName               as ChangeDocGlobalFieldName,
      @Semantics.text: true
      prps.WBSDescription                as WBSDescription,


      cdpos.ChangeDocPreviousUnit        as ChangeDocPreviousUnit,

      cdpos.ChangeDocNewUnit             as ChangeDocNewUnit,

      cdpos.ChangeDocPreviousCurrency    as ChangeDocPreviousCurrency,

      cdpos.ChangeDocNewCurrency         as ChangeDocNewCurrency,

      @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,


      @Consumption.hidden: true
      prps.ControllingArea               as ControllingArea,

      @Consumption.hidden: true
      prps.ProfitCenter                  as ProfitCenter,

      @Consumption.hidden: true
      prps.ResponsiblePerson             as ResponsiblePerson,

      @Consumption.hidden: true
      prps.ApplicantCode                 as ApplicantCode,

      @Consumption.hidden: true
      prps.RespCostCenterControllingArea as RespCostCenterControllingArea,

      @Consumption.hidden: true
      prps.ResponsibleCostCenter         as ResponsibleCostCenter,

      @Consumption.hidden: true
      prps.FreeDefinedAttribute01        as FreeDefinedAttribute01,

      @Consumption.hidden: true
      prps.FreeDefinedAttribute02        as FreeDefinedAttribute02,

      @Consumption.hidden: true
      prps.FreeDefinedAttribute03        as FreeDefinedAttribute03,

      @Consumption.hidden: true
      prps.FreeDefinedAttribute04        as FreeDefinedAttribute04,

      @Consumption.hidden: true
      prps.FreeDefinedIndicator1         as FreeDefinedIndicator1,

      @Consumption.hidden: true
      prps.FreeDefinedIndicator2         as FreeDefinedIndicator2,
      @Consumption.hidden: true
      prps.ProjectType                   as ProjectType,


      //Associations

      @Consumption.hidden: true
      prps._ControllingArea              as _ControllingArea,

      @Consumption.hidden: true
      prps._ProfitCenter                 as _ProfitCenter,

      @Consumption.hidden: true
      prps._ResponsibleCostCenter        as _ResponsibleCostCenter,

      @Consumption.hidden: true
      _ResponsiblePerson,
      @Consumption.hidden: true
      _ProjectApplicant,
      @Consumption.hidden: true
      _Project
}
where
      cdhdr.ChangeDocObjectClass = 'PROJ'
  and cdpos.ChangeDocObjectClass = 'PROJ'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_CHANGEDOCUMENT",
"I_CHANGEDOCUMENTITEM",
"I_WBSELEMENTDATA_2",
"P_PROJECTFIELDMAPPINGFORCHGDOC"
],
"ASSOCIATED":
[
"I_CONTROLLINGAREA",
"I_COSTCENTER",
"I_PROFITCENTER",
"I_PROJECTAPPLICANT",
"I_PROJECTDATA_2",
"I_PROJECTRESPONSIBLEPERSON"
],
"BASE":
[
"I_WBSELEMENTDATA_2"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/