I_ProjectByExternalID

DDL: I_PROJECTBYEXTERNALID SQL: IPROJBYEXTKEY Type: view BASIC Package: VDM_PS_ST

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. It is exposed through 1 OData service (UI_PRELIMBILLINGDOCUMENT_F6990). Part of development package VDM_PS_ST.

Data Sources (1)

SourceAliasJoin Type
proj proj from

Associations (6)

CardinalityTargetAliasCondition
[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)

NameValueLevelField
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

OData Services (1)

ServiceBindingVersionContractRelease
UI_PRELIMBILLINGDOCUMENT_F6990 UI_PRELIMBILLINGDOCUMENT_F6990 V4 C1 NOT_RELEASED

Fields (20)

KeyFieldSource TableSource FieldDescription
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
}