P_ProjScheduleWBSElementAttrib

DDL: P_PROJSCHEDULEWBSELEMENTATTRIB SQL: PWBSELEMATTR Type: view COMPOSITE

P_ProjScheduleWBSElementAttrib is a Composite CDS View in SAP S/4HANA. It reads from 1 data source (I_WBSElementByInternalKey) and exposes 57 fields with key field WBSElementInternalID. It has 3 associations to related views.

Data Sources (1)

SourceAliasJoin Type
I_WBSElementByInternalKey ProjectWBSElement from

Associations (3)

CardinalityTargetAliasCondition
[0..1] I_StsObjConcatActiveStsILL _Status _Status.StatusObject = $projection.WBSElementObject
[0..1] I_ProjectApplicant _ProjectApplicant $projection.ApplicantCode = _ProjectApplicant.ApplicantCode
[1..1] E_WBSElement _Extension $projection.WBSElement = _Extension.WBSElement

Annotations (10)

NameValueLevelField
AbapCatalog.sqlViewName PWBSELEMATTR view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
AccessControl.authorizationCheck #CHECK view
VDM.viewType #COMPOSITE view
VDM.private true view
ObjectModel.usageType.serviceQuality #A view
ObjectModel.usageType.sizeCategory #M view
ObjectModel.usageType.dataClass #MASTER view
ClientHandling.algorithm #SESSION_VARIABLE view

Fields (57)

KeyFieldSource TableSource FieldDescription
KEY WBSElementInternalID I_WBSElementByInternalKey WBSElementInternalID
WBSElement
WBSElementExternalID I_WBSElementByInternalKey WBSElementExternalID
WBSElementObject I_WBSElementByInternalKey WBSElementObject
ObjectType
ProjectInternalID I_WBSElementByInternalKey ProjectInternalID
WBSDescriptionendasWBSDescription
BasicStartDate I_WBSElementByInternalKey BasicStartDate
BasicEndDate I_WBSElementByInternalKey BasicEndDate
SchedldBasicEarliestStartDate I_WBSElementByInternalKey SchedldBasicEarliestStartDate
SchedldBasicEarliestEndDate I_WBSElementByInternalKey SchedldBasicEarliestEndDate
SchedldBasicLatestStartDate I_WBSElementByInternalKey SchedldBasicLatestStartDate
ScheduledBasicLatestEndDate I_WBSElementByInternalKey ScheduledBasicLatestEndDate
SchedldFcstdEarliestStartDate I_WBSElementByInternalKey SchedldFcstdEarliestStartDate
SchedldFcstdEarliestEndDate I_WBSElementByInternalKey SchedldFcstdEarliestEndDate
LatestSchedldFcstdStartDate I_WBSElementByInternalKey LatestSchedldFcstdStartDate
LatestSchedldFcstdEndDate I_WBSElementByInternalKey LatestSchedldFcstdEndDate
ActualStartDate I_WBSElementByInternalKey ActualStartDate
ActualEndDate I_WBSElementByInternalKey ActualEndDate
BasicDuration I_WBSElementByInternalKey BasicDuration
BasicDurationUnit I_WBSElementByInternalKey BasicDurationUnit
ActualDurationUnit I_WBSElementByInternalKey ActualDurationUnit
ActualDuration I_WBSElementByInternalKey ActualDuration
FreeDefinedAttribute01 I_WBSElementByInternalKey FreeDefinedAttribute01
FreeDefinedAttribute02 I_WBSElementByInternalKey FreeDefinedAttribute02
FreeDefinedAttribute03 I_WBSElementByInternalKey FreeDefinedAttribute03
FreeDefinedAttribute04 I_WBSElementByInternalKey FreeDefinedAttribute04
FreeDefinedQuantity1Unit I_WBSElementByInternalKey FreeDefinedQuantity1Unit
FreeDefinedQuantity1 I_WBSElementByInternalKey FreeDefinedQuantity1
FreeDefinedQuantity2Unit I_WBSElementByInternalKey FreeDefinedQuantity2Unit
FreeDefinedQuantity2 I_WBSElementByInternalKey FreeDefinedQuantity2
FreeDefinedAmount1Currency I_WBSElementByInternalKey FreeDefinedAmount1Currency
FreeDefinedAmount1 I_WBSElementByInternalKey FreeDefinedAmount1
FreeDefinedAmount2Currency I_WBSElementByInternalKey FreeDefinedAmount2Currency
FreeDefinedAmount2 I_WBSElementByInternalKey FreeDefinedAmount2
FreeDefinedDate1 I_WBSElementByInternalKey FreeDefinedDate1
FreeDefinedDate2 I_WBSElementByInternalKey FreeDefinedDate2
FreeDefinedIndicator1 I_WBSElementByInternalKey FreeDefinedIndicator1
FreeDefinedIndicator2 I_WBSElementByInternalKey FreeDefinedIndicator2
PriorityCode I_WBSElementByInternalKey PriorityCode
WBSElementHierarchyLevel I_WBSElementByInternalKey WBSElementHierarchyLevel
Currency I_WBSElementByInternalKey Currency
Plant I_WBSElementByInternalKey Plant
CompanyCode I_WBSElementByInternalKey CompanyCode
WBSElementIsPlanningElement I_WBSElementByInternalKey WBSElementIsPlanningElement
WBSIsAccountAssignmentElement I_WBSElementByInternalKey WBSIsAccountAssignmentElement
WBSElementIsBillingElement I_WBSElementByInternalKey WBSElementIsBillingElement
ProjectType I_WBSElementByInternalKey ProjectType
CreationDate I_WBSElementByInternalKey CreationDate
CreatedByUser I_WBSElementByInternalKey CreatedByUser
LastChangeDate I_WBSElementByInternalKey LastChangeDate
ResponsiblePerson I_WBSElementByInternalKey ResponsiblePerson
ResponsiblePersonName I_WBSElementByInternalKey ResponsiblePersonName
CostCenter I_WBSElementByInternalKey CostCenter Cost Center to which costs are posted
ResponsibleCostCenter I_WBSElementByInternalKey ResponsibleCostCenter
_ProjectApplicant _ProjectApplicant
_Project _Project
@AbapCatalog.sqlViewName: 'PWBSELEMATTR'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@VDM.viewType: #COMPOSITE
@VDM.private: true
@ObjectModel.usageType.serviceQuality: #A
@ObjectModel.usageType.sizeCategory : #M
@ObjectModel.usageType.dataClass: #MASTER
@ClientHandling.algorithm: #SESSION_VARIABLE

define view P_ProjScheduleWBSElementAttrib
  as select from I_WBSElementByInternalKey as ProjectWBSElement

  association [0..1] to I_StsObjConcatActiveStsILL as _Status           on _Status.StatusObject = $projection.WBSElementObject

  association [0..1] to I_ProjectApplicant         as _ProjectApplicant on $projection.ApplicantCode = _ProjectApplicant.ApplicantCode

  association [1..1] to E_WBSElement               as _Extension        on $projection.WBSElement = _Extension.WBSElement

{
  key ProjectWBSElement.WBSElementInternalID                 as WBSElementInternalID,
      cast ( ProjectWBSElement.WBSElement as ps_posid_edit ) as WBSElement,
      ProjectWBSElement.WBSElementExternalID                 as WBSElementExternalID,
      ProjectWBSElement.WBSElementObject                     as WBSElementObject,
      'PR'                                                   as ObjectType,
      ProjectWBSElement.ProjectInternalID                    as ProjectInternalID,
      @Semantics.text: true
      case
      when ProjectWBSElement._WBSElementShortText.LanguageBasedShortText is not initial
      then ProjectWBSElement._WBSElementShortText.LanguageBasedShortText
      else ProjectWBSElement.WBSDescription
      end                                                    as WBSDescription,
      //ProjectWBSElement.WBSDescription                                                                                                                                                       as WBSDescription,

      ProjectWBSElement.BasicStartDate                       as BasicStartDate,
      ProjectWBSElement.BasicEndDate                         as BasicEndDate,
      ProjectWBSElement.ForecastedStartDate                  as ForecastedStartDate,
      ProjectWBSElement.ForecastedEndDate                    as ForecastedEndDate,
      ProjectWBSElement.SchedldBasicEarliestStartDate        as SchedldBasicEarliestStartDate,
      ProjectWBSElement.SchedldBasicEarliestEndDate          as SchedldBasicEarliestEndDate,
      ProjectWBSElement.SchedldBasicLatestStartDate          as SchedldBasicLatestStartDate,
      ProjectWBSElement.ScheduledBasicLatestEndDate          as ScheduledBasicLatestEndDate,
      ProjectWBSElement.SchedldFcstdEarliestStartDate        as SchedldFcstdEarliestStartDate,
      ProjectWBSElement.SchedldFcstdEarliestEndDate          as SchedldFcstdEarliestEndDate,
      ProjectWBSElement.LatestSchedldFcstdStartDate          as LatestSchedldFcstdStartDate,
      ProjectWBSElement.LatestSchedldFcstdEndDate            as LatestSchedldFcstdEndDate,
      ProjectWBSElement.ActualStartDate                      as ActualStartDate,
      ProjectWBSElement.ActualEndDate                        as ActualEndDate,
      @Semantics.quantity.unitOfMeasure: 'BasicDurationUnit'
      ProjectWBSElement.BasicDuration                        as BasicDuration,
      @Semantics.unitOfMeasure: true
      ProjectWBSElement.BasicDurationUnit                    as BasicDurationUnit,
      @Semantics.quantity.unitOfMeasure: 'ForecastedDurationUnit'
      ProjectWBSElement.ForecastedDuration                   as ForecastedDuration,
      @Semantics.unitOfMeasure: true
      ProjectWBSElement.ForecastedDurationUnit               as ForecastedDurationUnit,
      @Semantics.unitOfMeasure: true
      ProjectWBSElement.ActualDurationUnit                   as ActualDurationUnit,
      @Semantics.quantity.unitOfMeasure: 'ActualDurationUnit'
      ProjectWBSElement.ActualDuration                       as ActualDuration,

      ProjectWBSElement.FreeDefinedAttribute01               as FreeDefinedAttribute01,
      ProjectWBSElement.FreeDefinedAttribute02               as FreeDefinedAttribute02,
      ProjectWBSElement.FreeDefinedAttribute03               as FreeDefinedAttribute03,
      ProjectWBSElement.FreeDefinedAttribute04               as FreeDefinedAttribute04,
      @Semantics.unitOfMeasure: true
      ProjectWBSElement.FreeDefinedQuantity1Unit             as FreeDefinedQuantity1Unit,
      @Semantics.quantity.unitOfMeasure: 'FreeDefinedQuantity1Unit'
      ProjectWBSElement.FreeDefinedQuantity1                 as FreeDefinedQuantity1,
      @Semantics.unitOfMeasure: true
      ProjectWBSElement.FreeDefinedQuantity2Unit             as FreeDefinedQuantity2Unit,
      @Semantics.quantity.unitOfMeasure: 'FreeDefinedQuantity2Unit'
      ProjectWBSElement.FreeDefinedQuantity2                 as FreeDefinedQuantity2,
      @Semantics.currencyCode: true
      ProjectWBSElement.FreeDefinedAmount1Currency           as FreeDefinedAmount1Currency,
      @Semantics.amount.currencyCode: 'FreeDefinedAmount1Currency'
      ProjectWBSElement.FreeDefinedAmount1                   as FreeDefinedAmount1,
      @Semantics.currencyCode: true
      ProjectWBSElement.FreeDefinedAmount2Currency           as FreeDefinedAmount2Currency,
      @Semantics.amount.currencyCode: 'FreeDefinedAmount2Currency'
      ProjectWBSElement.FreeDefinedAmount2                   as FreeDefinedAmount2,
      ProjectWBSElement.FreeDefinedDate1                     as FreeDefinedDate1,
      ProjectWBSElement.FreeDefinedDate2                     as FreeDefinedDate2,
      ProjectWBSElement.FreeDefinedIndicator1                as FreeDefinedIndicator1,
      ProjectWBSElement.FreeDefinedIndicator2                as FreeDefinedIndicator2,

      ProjectWBSElement.PriorityCode                         as PriorityCode,
      ProjectWBSElement.WBSElementHierarchyLevel             as WBSElementHierarchyLevel,
      ProjectWBSElement.Currency                             as Currency,
      ProjectWBSElement.Plant                                as Plant,
      ProjectWBSElement.CompanyCode                          as CompanyCode,
      cast( case
          when ProjectWBSElement.ApplicantCode = '00000000'
              then ''
          else ProjectWBSElement.ApplicantCode
      end as ps_s4_astnr )                                   as ApplicantCode,
      ProjectWBSElement.WBSElementIsPlanningElement          as WBSElementIsPlanningElement,
      ProjectWBSElement.WBSIsAccountAssignmentElement        as WBSIsAccountAssignmentElement,
      ProjectWBSElement.WBSElementIsBillingElement           as WBSElementIsBillingElement,
      ProjectWBSElement.ProjectType                          as ProjectType,
      ProjectWBSElement.CreationDate                         as CreationDate,
      ProjectWBSElement.CreatedByUser                        as CreatedByUser,
      ProjectWBSElement.LastChangeDate                       as LastChangeDate,
      ProjectWBSElement.ResponsiblePerson                    as ResponsiblePerson,
      ProjectWBSElement.ResponsiblePersonName                as ResponsiblePersonName,
      @EndUserText.label: 'Cost Center to which costs are posted'
      ProjectWBSElement.CostCenter                           as CostCenter,
      ProjectWBSElement.ResponsibleCostCenter                as ResponsibleCostCenter,
      //Remove Status fields

      //      case

      //          when _Status.ConcatenatedActiveSystStsName is null

      //              then ''

      //          else _Status.ConcatenatedActiveSystStsName

      //      end                                                                                                                                                                                    as ConcatenatedActiveSystStsName,

      //      case

      //          when _Status.ConcatenatedActiveUserStsName is null

      //              then ''

      //          else _Status.ConcatenatedActiveUserStsName

      //      end                                                                                                                                                                                    as ConcatenatedActiveUserStsName,

      //Remove Status fields

      //New Dummy fields

      ''                                                     as ConcatenatedActiveSystStsName,
      ''                                                     as ConcatenatedActiveUserStsName,
      //New Dummy fields

      _ProjectApplicant,
      _Project

}
//04.01.2022 - Begin of code(perfomance fixes)

//where

//     WBSElementObject like 'PR%'

//  or WBSElementObject like 'V2%'

//04.01.2022 - Begin of code(perfomance fixes)

/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PROJECTOBJECTSHORTTEXT",
"I_WBSELEMENTBYINTERNALKEY"
],
"ASSOCIATED":
[
"E_WBSELEMENT",
"I_PROJECTAPPLICANT",
"I_PROJECTBYINTERNALKEY",
"I_STSOBJCONCATACTIVESTSILL"
],
"BASE":
[
"I_WBSELEMENTBYINTERNALKEY"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/