I_ProjectByExternalID
Project by formatted external ID
I_ProjectByExternalID is a Basic CDS View (Dimension) that provides data about "Project by formatted external ID" in SAP S/4HANA. It reads from 1 data source (proj) and exposes 20 fields with key field ProjectExternalID. It has 6 associations to related views.
Data Sources (1)
| Source | Alias | Join Type |
|---|---|---|
| proj | proj | from |
Associations (6)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_WBSElementBasicData | _RootWBSElement | $projection.ProjectInternalID = _RootWBSElement.ProjectInternalID and $projection.ProjectExternalID = _RootWBSElement.WBSElementExternalID |
| [0..*] | I_WBSElementBasicData | _WBSElement | $projection.ProjectInternalID = _WBSElement.ProjectInternalID |
| [0..1] | I_CompanyCode | _CompanyCode | $projection.CompanyCode = _CompanyCode.CompanyCode |
| [0..1] | I_ControllingArea | _ControllingArea | $projection.ControllingArea = _ControllingArea.ControllingArea |
| [0..*] | I_ProfitCenter | _ProfitCenter | $projection.ControllingArea = _ProfitCenter.ControllingArea and $projection.ProfitCenter = _ProfitCenter.ProfitCenter |
| [0..1] | I_AvailabilityCtrlProfile | _AvailabilityCtrlProfile | $projection.AvailabilityControlProfile = _AvailabilityCtrlProfile.AvailabilityControlProfile |
Annotations (14)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | IPROJBYEXTKEY | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| Analytics.dataCategory | #DIMENSION | view | |
| Metadata.allowExtensions | true | view | |
| Metadata.ignorePropagatedAnnotations | true | view | |
| EndUserText.label | Project by formatted external ID | view | |
| VDM.viewType | #BASIC | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| ObjectModel.compositionRoot | true | view | |
| ObjectModel.representativeKey | ProjectExternalID | view | |
| ObjectModel.usageType.serviceQuality | #B | view | |
| ObjectModel.usageType.sizeCategory | #L | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view |
Fields (20)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ProjectExternalID | proj | pspid_edit | |
| ProjectInternalID | ||||
| ProjectProfileCode | proj | profl | ||
| CompanyCode | ||||
| ControllingArea | ||||
| FunctionalArea | ||||
| ProfitCenter | proj | prctr | ||
| ProjectObject | proj | objnr | ||
| PlannedStartDate | proj | plfaz | ||
| PlannedEndDate | proj | plsez | ||
| AvailabilityControlProfile | proj | avc_profile | ||
| AvailabilityControlIsActive | proj | avc_active | ||
| JntIntrstBillgClass | proj | jibcl | ||
| JntIntrstBillgSubClass | proj | jibsa | ||
| Plant | proj | werks | ||
| _WBSElement | _WBSElement | |||
| _CompanyCode | _CompanyCode | |||
| _ControllingArea | _ControllingArea | |||
| _ProfitCenter | _ProfitCenter | |||
| _RootWBSElement | _RootWBSElement |
@AbapCatalog.sqlViewName: 'IPROJBYEXTKEY'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@Analytics: { dataCategory: #DIMENSION }
@Metadata.allowExtensions:true
@Metadata.ignorePropagatedAnnotations:true
@EndUserText.label: 'Project by formatted external ID'
@VDM.viewType: #BASIC
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel: {
compositionRoot: true,
//Keys
representativeKey: 'ProjectExternalID',
//semanticKey: [ 'Project' ],
usageType: {
serviceQuality: #B,
sizeCategory : #L,
dataClass: #TRANSACTIONAL
},
supportedCapabilities: [ #ANALYTICAL_DIMENSION ]
}
define view I_ProjectByExternalID as select from proj
association [0..1] to I_WBSElementBasicData as _RootWBSElement on $projection.ProjectInternalID = _RootWBSElement.ProjectInternalID
and $projection.ProjectExternalID = _RootWBSElement.WBSElementExternalID
association [0..*] to I_WBSElementBasicData as _WBSElement on $projection.ProjectInternalID = _WBSElement.ProjectInternalID
association [0..1] to I_CompanyCode as _CompanyCode on $projection.CompanyCode = _CompanyCode.CompanyCode
association [0..1] to I_ControllingArea as _ControllingArea on $projection.ControllingArea = _ControllingArea.ControllingArea
//association [0..1] to I_FunctionalArea as _FunctionalArea on $projection.FunctionalArea = _FunctionalArea.FunctionalArea
association [0..*] to I_ProfitCenter as _ProfitCenter on $projection.ControllingArea = _ProfitCenter.ControllingArea
and $projection.ProfitCenter = _ProfitCenter.ProfitCenter
//and $projection.PlannedStartDate <= _ProfitCenter.ValidityEndDate
//and $projection.PlannedStartDate >= _ProfitCenter.ValidityStartDate
association [0..1] to I_AvailabilityCtrlProfile as _AvailabilityCtrlProfile on $projection.AvailabilityControlProfile = _AvailabilityCtrlProfile.AvailabilityControlProfile
{
@ObjectModel.text.element: 'ProjectDescription'
key proj.pspid_edit as ProjectExternalID,
cast ( proj.pspnr as ps_s4_proj_pspnr preserving type ) as ProjectInternalID,
@Semantics.text: true
cast ( proj.post1 as ps_s4_proj_post1_v1 preserving type )as ProjectDescription,
proj.profl as ProjectProfileCode,
//Organisational fields
@ObjectModel.foreignKey.association: '_CompanyCode'
cast ( proj.vbukr as bukrs preserving type ) as CompanyCode,
@ObjectModel.foreignKey.association: '_ControllingArea'
cast ( proj.vkokr as kokrs preserving type ) as ControllingArea,
//@ObjectModel.foreignKey.association: '_FunctionalArea'
cast ( proj.func_area as fkber preserving type ) as FunctionalArea,
@ObjectModel.foreignKey.association: '_ProfitCenter'
proj.prctr as ProfitCenter,
//Dimensions
proj.objnr as ProjectObject,
//Dates
@Semantics.calendar.dayOfMonth: true
proj.plfaz as PlannedStartDate,
@Semantics.calendar.dayOfMonth: true
proj.plsez as PlannedEndDate,
proj.avc_profile as AvailabilityControlProfile,
proj.avc_active as AvailabilityControlIsActive,
proj.jibcl as JntIntrstBillgClass,
proj.jibsa as JntIntrstBillgSubClass,
@Consumption.hidden: true
proj.werks as Plant,
//Associations
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
_WBSElement,
_CompanyCode,
_ControllingArea,
//_FunctionalArea,
@Consumption.filter.businessDate.at : true
_ProfitCenter,
@Consumption.hidden: true
_RootWBSElement
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"PROJ"
],
"ASSOCIATED":
[
"I_AVAILABILITYCTRLPROFILE",
"I_COMPANYCODE",
"I_CONTROLLINGAREA",
"I_PROFITCENTER",
"I_WBSELEMENTBASICDATA"
],
"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