I_EngagementProject
Engagement Project
I_EngagementProject is a Basic CDS View (Dimension) that provides data about "Engagement Project" in SAP S/4HANA. It reads from 1 data source (P_EngagementProject) and exposes 40 fields with key field EngagementProject. It has 15 associations to related views.
Data Sources (1)
| Source | Alias | Join Type |
|---|---|---|
| P_EngagementProject | EngagementProject | from |
Associations (15)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1..1] | I_EngagementProjFinancialPlan | _EngagementProjFinancialPlan | $projection.EngagementProjectUUID = _EngagementProjFinancialPlan.EngagementProjectUUID |
| [0..*] | I_PersnWrkAgreementDet | _PersonWorkAgreementDet | $projection.ProjectManagerWorkAgreement = _PersonWorkAgreementDet.PersonWorkAgreement |
| [0..1] | I_Employment | _Employment | $projection.ProjectManagerWorkAgreement = _Employment.EmploymentInternalID |
| [0..1] | I_Customer | _Customer | $projection.Customer = _Customer.Customer |
| [0..*] | I_CostCenter | _CostCenter | $projection.CostCenter = _CostCenter.CostCenter and $projection.ControllingArea = _CostCenter.ControllingArea |
| [0..*] | I_ProfitCenter | _ProfitCenter | $projection.ProfitCenter = _ProfitCenter.ProfitCenter and $projection.ControllingArea = _ProfitCenter.ControllingArea |
| [0..1] | I_ControllingArea | _ControllingArea | $projection.ControllingArea = _ControllingArea.ControllingArea |
| [0..1] | I_CompanyCode | _CompanyCode | $projection.CompanyCode = _CompanyCode.CompanyCode |
| [0..1] | I_EngagementProjectStage | _EngagementProjectStage | $projection.EngagementProjectStage = _EngagementProjectStage.EngagementProjectStage |
| [0..*] | I_EngagementProjectItem | _EngagementProjectItem | $projection.EngagementProjectUUID = _EngagementProjectItem.EngagementProjectUUID |
| [0..1] | I_EngagementProjectSrvcOrg | _EngagementProjectServiceOrg | $projection.EngagementProjectServiceOrg = _EngagementProjectServiceOrg.EngagementProjectServiceOrg |
| [1..1] | E_CustomerProject | _Extension | EngagementProject.mp_id = _Extension.CustomerProject |
| [1..1] | I_EngmntProjWithUserInvlmnt | _UserInvlmnt | $projection.EngagementProjectUUID = _UserInvlmnt.ProjectUUID |
| [0..*] | I_PersonWorkAgreement | _PersonWorkAgreement | $projection.ProjectManagerWorkAgreement = _PersonWorkAgreement.PersonWorkAgreement |
| [0..1] | I_PersonWorkAgreement_1 | _PersonWorkAgreement_1 | $projection.ProjectManagerWorkAgreement = _PersonWorkAgreement_1.PersonWorkAgreement |
Annotations (18)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | IENGMNTPROJ | view | |
| AbapCatalog.preserveKey | true | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| AccessControl.personalData.blocking | #REQUIRED | view | |
| Analytics.dataCategory | #DIMENSION | view | |
| Analytics.dataExtraction.enabled | true | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| EndUserText.label | Engagement Project | view | |
| ObjectModel.representativeKey | EngagementProject | view | |
| ObjectModel.usageType.serviceQuality | #B | view | |
| ObjectModel.usageType.sizeCategory | #M | view | |
| ObjectModel.usageType.dataClass | #MIXED | view | |
| ObjectModel.modelingPattern | #ANALYTICAL_DIMENSION | view | |
| Metadata.allowExtensions | true | view | |
| Metadata.ignorePropagatedAnnotations | true | view | |
| VDM.lifecycle.contract.type | #PUBLIC_LOCAL_API | view | |
| VDM.viewType | #BASIC | view |
Fields (40)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | EngagementProject | |||
| EngagementProjectUUID | ||||
| EngagementProjectName | P_EngagementProject | text | ||
| EngmntProjNameUprCase | P_EngagementProject | textu | ||
| EngagementProjectType | ||||
| EngagementProjectStage | P_EngagementProject | mp_stage | ||
| EngagementProjectServiceOrg | P_EngagementProject | org_id | ||
| EngagementProjectCategory | ||||
| ProjectStartDate | P_EngagementProject | start_date | ||
| ProjectEndDate | P_EngagementProject | end_date | ||
| ProjectVisibility | P_EngagementProject | confidential | ||
| ProjectManager | P_EngagementProject | proj_manager_id | ||
| ProjectManagerWorkAgreement | P_EngagementProject | proj_manager_id | ||
| LastChangeDateTime | P_EngagementProject | changed_on | ||
| LastChangedByUser | P_EngagementProject | changed_by | ||
| CreatedByUser | P_EngagementProject | created_by | ||
| CreationDateTime | P_EngagementProject | created_on | ||
| CostCenter | P_EngagementProject | cost_center | ||
| ProfitCenter | P_EngagementProject | profit_center | ||
| Customer | P_EngagementProject | customer | ||
| ControllingArea | P_EngagementProject | ControllingArea | ||
| CompanyCode | P_EngagementProject | CompanyCode | ||
| TimePostingIsRestricted | P_EngagementProject | restrict_time_posting | ||
| RestrictedTimePosting | P_EngagementProject | restrict_time_posting | ||
| ProjectBillingIsUsed | P_EngagementProject | use_project_billing | ||
| ProjectProfileCode | P_EngagementProject | ProjectProfileCode | ||
| _PersonWorkAgreement | _PersonWorkAgreement | |||
| _PersonWorkAgreement_1 | _PersonWorkAgreement_1 | |||
| _PersonWorkAgreementDet | _PersonWorkAgreementDet | |||
| _Customer | _Customer | |||
| _ControllingArea | _ControllingArea | |||
| _CompanyCode | _CompanyCode | |||
| _CostCenter | _CostCenter | |||
| _ProfitCenter | _ProfitCenter | |||
| _EngagementProjFinancialPlan | _EngagementProjFinancialPlan | |||
| _EngagementProjectStage | _EngagementProjectStage | |||
| _EngagementProjectItem | _EngagementProjectItem | |||
| _EngagementProjectServiceOrg | _EngagementProjectServiceOrg | |||
| _UserInvlmnt | _UserInvlmnt | |||
| _Employment | _Employment |
@AbapCatalog: {
sqlViewName: 'IENGMNTPROJ',
preserveKey: true,
compiler.compareFilter: true
}
@AccessControl: {
authorizationCheck: #CHECK,
privilegedAssociations: [ '_EngagementProjFinancialPlan' ],
personalData: {
blockingIndicator: [ '_PersonWorkAgreementDet._BusinessPartner.IsBusinessPurposeCompleted', '_Customer.IsBusinessPurposeCompleted' ],
blocking: #REQUIRED
}
}
@Analytics: {
dataCategory: #DIMENSION,
dataExtraction.enabled: true
}
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Engagement Project'
@ObjectModel: {
representativeKey: 'EngagementProject',
usageType: {
serviceQuality: #B,
sizeCategory: #M,
dataClass: #MIXED
},
modelingPattern: #ANALYTICAL_DIMENSION,
supportedCapabilities: [#ANALYTICAL_DIMENSION,
#CDS_MODELING_ASSOCIATION_TARGET,
#CDS_MODELING_DATA_SOURCE,
#EXTRACTION_DATA_SOURCE,
#SQL_DATA_SOURCE]
}
@Metadata: {
allowExtensions: true,
ignorePropagatedAnnotations: true
}
@VDM: {
// private: false,
lifecycle.contract.type: #PUBLIC_LOCAL_API,
viewType: #BASIC
}
define view I_EngagementProject
as select from P_EngagementProject as EngagementProject
// inner join I_EngmntProjWithUserInvlmnt as B on EngagementProject.db_key = B.ProjectUUID
association [1..1] to I_EngagementProjFinancialPlan as _EngagementProjFinancialPlan on $projection.EngagementProjectUUID = _EngagementProjFinancialPlan.EngagementProjectUUID
association [0..*] to I_PersnWrkAgreementDet as _PersonWorkAgreementDet on $projection.ProjectManagerWorkAgreement = _PersonWorkAgreementDet.PersonWorkAgreement
association [0..1] to I_Employment as _Employment on $projection.ProjectManagerWorkAgreement = _Employment.EmploymentInternalID
// and $projection.ProjectStartDate >= _Employment.StartDate
//and $projection.ProjectEndDate <= _Employment.EndDate
association [0..1] to I_Customer as _Customer on $projection.Customer = _Customer.Customer
association [0..*] to I_CostCenter as _CostCenter on $projection.CostCenter = _CostCenter.CostCenter
and $projection.ControllingArea = _CostCenter.ControllingArea
association [0..*] to I_ProfitCenter as _ProfitCenter on $projection.ProfitCenter = _ProfitCenter.ProfitCenter
and $projection.ControllingArea = _ProfitCenter.ControllingArea
association [0..1] to I_ControllingArea as _ControllingArea on $projection.ControllingArea = _ControllingArea.ControllingArea
association [0..1] to I_CompanyCode as _CompanyCode on $projection.CompanyCode = _CompanyCode.CompanyCode
association [0..1] to I_EngagementProjectStage as _EngagementProjectStage on $projection.EngagementProjectStage = _EngagementProjectStage.EngagementProjectStage
association [0..*] to I_EngagementProjectItem as _EngagementProjectItem on $projection.EngagementProjectUUID = _EngagementProjectItem.EngagementProjectUUID
association [0..1] to I_EngagementProjectSrvcOrg as _EngagementProjectServiceOrg on $projection.EngagementProjectServiceOrg = _EngagementProjectServiceOrg.EngagementProjectServiceOrg
association [1..1] to E_CustomerProject as _Extension on EngagementProject.mp_id = _Extension.CustomerProject
association [1..1] to I_EngmntProjWithUserInvlmnt as _UserInvlmnt on $projection.EngagementProjectUUID = _UserInvlmnt.ProjectUUID
// Association to I_PersonWorkAgreement ( Released CDS View by HCM. Used for EOP Authorization Check )
association [0..*] to I_PersonWorkAgreement as _PersonWorkAgreement on $projection.ProjectManagerWorkAgreement = _PersonWorkAgreement.PersonWorkAgreement
association [0..1] to I_PersonWorkAgreement_1 as _PersonWorkAgreement_1 on $projection.ProjectManagerWorkAgreement = _PersonWorkAgreement_1.PersonWorkAgreement
{
@ObjectModel.text.element: 'EngagementProjectName'
key cast(EngagementProject.mp_id as /cpd/eng_mp_id preserving type ) as EngagementProject,
cast(EngagementProject.db_key as /cpd/eng_db_key preserving type ) as EngagementProjectUUID,
@Semantics.text: true
EngagementProject.text as EngagementProjectName,
@Semantics.text : true
EngagementProject.textu as EngmntProjNameUprCase,
cast(EngagementProject.mp_type as /cpd/eng_mp_type preserving type ) as EngagementProjectType,
@ObjectModel.foreignKey.association: '_EngagementProjectStage'
EngagementProject.mp_stage as EngagementProjectStage,
//--[ GENERATED:012:GlBfhyJl7jY4oBIOE}WCZW
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_EngmntProjSrvcOrgStdVH',
element: 'EngagementProjectServiceOrg' }
}]
// ]--GENERATED
@ObjectModel.foreignKey.association: '_EngagementProjectServiceOrg'
EngagementProject.org_id as EngagementProjectServiceOrg,
cast(EngagementProject.project_type as /cpd/eng_proj_type preserving type ) as EngagementProjectCategory,
EngagementProject.start_date as ProjectStartDate,
EngagementProject.end_date as ProjectEndDate,
EngagementProject.confidential as ProjectVisibility,
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'ProjectManagerWorkAgreement'
EngagementProject.proj_manager_id as ProjectManager,
EngagementProject.proj_manager_id as ProjectManagerWorkAgreement,
@Semantics.dateTime:true
@Semantics.systemDateTime.lastChangedAt:true
EngagementProject.changed_on as LastChangeDateTime,
EngagementProject.changed_by as LastChangedByUser,
EngagementProject.created_by as CreatedByUser,
@Semantics.dateTime:true
@Semantics.systemDateTime.createdAt:true
EngagementProject.created_on as CreationDateTime,
//--[ GENERATED:012:GlBfhyJl7jY4oBIOE}WCZW
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_CostCenterStdVH',
element: 'CostCenter' },
additionalBinding: [{ localElement: 'ControllingArea',
element: 'ControllingArea' }]
}]
// ]--GENERATED
@ObjectModel.foreignKey.association: '_CostCenter'
EngagementProject.cost_center as CostCenter,
//--[ GENERATED:012:GlBfhyJl7jY4oBIOE}WCZW
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_ProfitCenterStdVH',
element: 'ProfitCenter' },
additionalBinding: [{ localElement: 'ControllingArea',
element: 'ControllingArea' }]
}]
// ]--GENERATED
@ObjectModel.foreignKey.association: '_ProfitCenter'
EngagementProject.profit_center as ProfitCenter,
//--[ GENERATED:012:GlBfhyJl7jY4oBIOE}WCZW
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_Customer_VH',
element: 'Customer' }
}]
// ]--GENERATED
@ObjectModel.foreignKey.association: '_Customer'
EngagementProject.customer as Customer,
@ObjectModel.foreignKey.association: '_ControllingArea'
EngagementProject.ControllingArea as ControllingArea,
//--[ GENERATED:012:GlBfhyJl7jY4oBIOE}WCZW
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_CompanyCodeStdVH',
element: 'CompanyCode' }
}]
// ]--GENERATED
@ObjectModel.foreignKey.association: '_CompanyCode'
EngagementProject.CompanyCode as CompanyCode,
// Y: if time posting without staffing is allowed else N
@VDM.lifecycle.status: #DEPRECATED
@VDM.lifecycle.successor: 'RestrictedTimePosting'
EngagementProject.restrict_time_posting as TimePostingIsRestricted,
EngagementProject.restrict_time_posting as RestrictedTimePosting,
//If Use New Project Billing: 'X'
//else: '' (blank)
@Semantics.booleanIndicator:true
EngagementProject.use_project_billing as ProjectBillingIsUsed,
EngagementProject.ProjectProfileCode,
// @Consumption.hidden: true
// @Semantics.booleanIndicator: true
//// _UserInvlmnt.IsMyProject,
// B.IsMyProject,
/* Associations */
@API.element: {
successor: '_PersonWorkAgreement_1',
releaseState: #DEPRECATED
}
@VDM.lifecycle: {
successor: '_PersonWorkAgreement_1',
status: #DEPRECATED
}
_PersonWorkAgreement,
_PersonWorkAgreement_1,
_PersonWorkAgreementDet,
_Customer,
_ControllingArea,
_CompanyCode,
@ObjectModel.association.boundFields.dataMatchesSourceAndTargetTypes: true //CE2111 - Fix Association join condition in analytical model
_CostCenter,
_ProfitCenter,
_EngagementProjFinancialPlan,
_EngagementProjectStage,
_EngagementProjectItem,
_EngagementProjectServiceOrg,
_UserInvlmnt,
@API.element: {
successor: '_PersonWorkAgreement_1',
releaseState: #DEPRECATED
}
@VDM.lifecycle: {
successor: '_PersonWorkAgreement_1',
status: #DEPRECATED
}
_Employment
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"P_ENGAGEMENTPROJECT"
],
"ASSOCIATED":
[
"E_CUSTOMERPROJECT",
"I_COMPANYCODE",
"I_CONTROLLINGAREA",
"I_COSTCENTER",
"I_CUSTOMER",
"I_EMPLOYMENT",
"I_ENGAGEMENTPROJECTITEM",
"I_ENGAGEMENTPROJECTSRVCORG",
"I_ENGAGEMENTPROJECTSTAGE",
"I_ENGAGEMENTPROJFINANCIALPLAN",
"I_ENGMNTPROJWITHUSERINVLMNT",
"I_PERSNWRKAGREEMENTDET",
"I_PERSONWORKAGREEMENT",
"I_PERSONWORKAGREEMENT_1",
"I_PROFITCENTER"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/
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