C_EntProjDmndRsceAssignment

DDL: C_ENTPROJDMNDRSCEASSIGNMENT Type: view_entity CONSUMPTION Package: ODATA_PPM_PRO_CTRL_PROFNL_SRVC

Project Demand Resource Assignment Data

C_EntProjDmndRsceAssignment is a Consumption CDS View that provides data about "Project Demand Resource Assignment Data" in SAP S/4HANA. It reads from 2 data sources (R_ProjDmndRsceAssgmtDistrTP, I_ProjDmndResourceAssignmentTP) and exposes 18 fields with key fields ProjectUUID, ProjectDemandUUID, ProjDmndRsceAssgmtUUID, ProjDmndRsceAssgmt. It has 4 associations to related views. It is exposed through 2 OData services (UI_ENPRJPFSRVSMNGPRJELMNT, UI_ENTPROJCTRLPROFNLSRVC). Part of development package ODATA_PPM_PRO_CTRL_PROFNL_SRVC.

Data Sources (2)

SourceAliasJoin Type
R_ProjDmndRsceAssgmtDistrTP AssignmentDistr inner
I_ProjDmndResourceAssignmentTP AssignmentHdr from

Associations (4)

CardinalityTargetAliasCondition
[1..1] C_EntProjSrvcOrgCntctCard _SuppDeliveryOrganization _SuppDeliveryOrganization.EnterpriseProjectServiceOrg = $projection.ProjectDemandSupplyDeliveryOrg
[1..1] I_EngagementProjectSrvcOrgText _SuppDeliveryOrganizationText $projection.ProjectDemandSupplyDeliveryOrg = _SuppDeliveryOrganizationText.EngagementProjectServiceOrg
[0..1] C_EntProjMemberContactCard _WorkerContactCard _WorkerContactCard.BusinessPartnerUUID = $projection.BusinessPartnerUUID
[1..1] I_EnterpriseProject _EnterpriseProject _EnterpriseProject.ProjectUUID = $projection.ProjectUUID

Annotations (8)

NameValueLevelField
AccessControl.authorizationCheck #MANDATORY view
AccessControl.personalData.blocking #REQUIRED view
VDM.viewType #CONSUMPTION view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #L view
EndUserText.label Project Demand Resource Assignment Data view
Metadata.allowExtensions true view

OData Services (2)

ServiceBindingVersionContractRelease
UI_ENPRJPFSRVSMNGPRJELMNT UI_ENPRJPFSRVSMNGPRJELMNT V4 C1 NOT_RELEASED
UI_ENTPROJCTRLPROFNLSRVC UI_ENTPROJCTRLPROFNLSRVC V4 C1 NOT_TO_BE_RELEASED_STABLE

Fields (18)

KeyFieldSource TableSource FieldDescription
KEY ProjectUUID I_ProjDmndResourceAssignmentTP ProjectUUID
KEY ProjectDemandUUID I_ProjDmndResourceAssignmentTP ProjectDemandUUID
KEY ProjDmndRsceAssgmtUUID I_ProjDmndResourceAssignmentTP ProjDmndRsceAssgmtUUID
KEY ProjDmndRsceAssgmt I_ProjDmndResourceAssignmentTP ProjDmndRsceAssgmt
BusinessPartnerUUID Person BusinessPartnerUUID
WorkforcePersonExternalID Worker WorkforcePersonExternalID
IsBlocked Worker IsBlocked
IsBusinessPurposeCompleted Person IsBusinessPurposeCompleted
PersonFullName
ProjectDemandSupplyDeliveryOrg I_ProjDmndResourceAssignmentTP ProjectDemandSupplyDeliveryOrg
ProjDmndRsceAssgmtDistrQtyUnit R_ProjDmndRsceAssgmtDistrTP ProjDmndRsceAssgmtDistrQtyUnit
ProjDmndStaffedEffortQty
ProjDmndRsceDistrPerdAmtCur R_ProjDmndRsceAssgmtDistrTP ProjDmndRsceDistrPerdAmtCur
PrjDmndStaffedEffortCostAmount
_WorkerContactCard _WorkerContactCard
_SuppDeliveryOrganization _SuppDeliveryOrganization
_EnterpriseProject _EnterpriseProject
_SuppDeliveryOrganizationText _SuppDeliveryOrganizationText
@AccessControl: {
    authorizationCheck:     #MANDATORY,
    personalData.blocking:  #REQUIRED
}
@VDM: {
    viewType: #CONSUMPTION
}

@ObjectModel: {

    usageType: {
      dataClass:       #TRANSACTIONAL,
      serviceQuality:  #C, 
      sizeCategory:    #L
    }


}
@EndUserText.label: 'Project Demand Resource Assignment Data'
@Metadata.allowExtensions: true
@Consumption.dbHints: [ 'USE_HEX_PLAN' ]    

define view entity C_EntProjDmndRsceAssignment
  as select from           I_ProjDmndResourceAssignmentTP as AssignmentHdr
    inner join             R_ProjDmndRsceAssgmtDistrTP    as AssignmentDistr on  AssignmentDistr.ProjDmndRsceAssgmtUUID = AssignmentHdr.ProjDmndRsceAssgmtUUID
                                                                             and AssignmentDistr.ProjectUUID            = AssignmentHdr.ProjectUUID
                                                                             and AssignmentDistr.ProjectDemandUUID      = AssignmentHdr.ProjectDemandUUID

    left outer to one join R_WorkAssignmentKeyMap         as Worker          on Worker.WorkforceAssignment = AssignmentHdr.ProjDmndRsceAssgmt
    
    left outer to one join I_BusinessPartner              as Person          on Person.BusinessPartner = Worker.BusinessPartner

  association [1..1] to C_EntProjSrvcOrgCntctCard      as _SuppDeliveryOrganization     on _SuppDeliveryOrganization.EnterpriseProjectServiceOrg = $projection.ProjectDemandSupplyDeliveryOrg
  association [1..1] to I_EngagementProjectSrvcOrgText as _SuppDeliveryOrganizationText on $projection.ProjectDemandSupplyDeliveryOrg = _SuppDeliveryOrganizationText.EngagementProjectServiceOrg
  association [0..1] to C_EntProjMemberContactCard     as _WorkerContactCard            on _WorkerContactCard.BusinessPartnerUUID = $projection.BusinessPartnerUUID
  association [1..1] to I_EnterpriseProject            as _EnterpriseProject            on _EnterpriseProject.ProjectUUID = $projection.ProjectUUID
 {
  key AssignmentHdr.ProjectUUID                                                  as ProjectUUID,
  key AssignmentHdr.ProjectDemandUUID                                            as ProjectDemandUUID,
  key AssignmentHdr.ProjDmndRsceAssgmtUUID                                       as ProjDmndRsceAssgmtUUID,
  key AssignmentHdr.ProjDmndRsceAssgmt                                           as ProjDmndRsceAssgmt,

      @ObjectModel.text.element: [ 'PersonFullName' ]
      @ObjectModel.foreignKey.association: '_WorkerContactCard'
      Person.BusinessPartnerUUID                                                 as BusinessPartnerUUID,
      
      Worker.WorkforcePersonExternalID                                           as WorkforcePersonExternalID,

      //For DCL

      Worker.IsBlocked,
      Person.IsBusinessPurposeCompleted,
      
      @ObjectModel.virtualElement: true
      @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_EPPM_PROJ_CTRL_PROFNL_SRVC'
      cast( '' as bu_name1tx )                                                   as PersonFullName,
      
      @ObjectModel:{
        text.association: '_SuppDeliveryOrganizationText',
        foreignKey.association: '_SuppDeliveryOrganization'
      }
      AssignmentHdr.ProjectDemandSupplyDeliveryOrg                               as ProjectDemandSupplyDeliveryOrg,
      AssignmentDistr.ProjDmndRsceAssgmtDistrQtyUnit                             as ProjDmndRsceAssgmtDistrQtyUnit,
      @Semantics.quantity.unitOfMeasure: 'ProjDmndRsceAssgmtDistrQtyUnit'
      cast( sum(AssignmentDistr.ProjDmndRsceAssgmtDistrQty) as abap.quan(20,3) ) as ProjDmndStaffedEffortQty,
      AssignmentDistr.ProjDmndRsceDistrPerdAmtCur                                as ProjDmndRsceDistrPerdAmtCur,
      @Semantics.amount.currencyCode: 'ProjDmndRsceDistrPerdAmtCur'
      cast( sum(AssignmentDistr.ProjDmndRsceDistrPerdAmt)   as abap.curr(24,2) ) as PrjDmndStaffedEffortCostAmount,
      _WorkerContactCard,
      _SuppDeliveryOrganization,
      _EnterpriseProject,
      _SuppDeliveryOrganizationText
}

where
      AssignmentHdr.ProjDmndRsceAssgmt               is not initial
  and AssignmentDistr.ProjDmndRsceDistrIsNotSupplied is initial //Where Clause to fetch data for Supplied lines of a 0ACT Demand

group by
  AssignmentHdr.ProjDmndRsceAssgmtUUID,
  AssignmentHdr.ProjectUUID,
  AssignmentHdr.ProjectDemandUUID,
  AssignmentHdr.ReferencedObjectUUID,
  AssignmentHdr.ProjDmndRsceAssgmt,
  Person.BusinessPartnerUUID,
  Worker.WorkforcePersonExternalID,
  Worker.IsBlocked,
  Person.IsBusinessPurposeCompleted,
  AssignmentHdr.ProjectDemandSupplyDeliveryOrg,
  AssignmentDistr.ProjDmndRsceDistrPerdAmtCur,
  AssignmentDistr.ProjDmndRsceAssgmtDistrQtyUnit