I_ProjectBillingElement

DDL: I_PROJECTBILLINGELEMENT Type: view_entity BASIC Package: VDM_PROJECTBILLINGELEMENT

Project Billing Element

I_ProjectBillingElement is a Basic CDS View that provides data about "Project Billing Element" in SAP S/4HANA. It reads from 1 data source (projbillgelmnt) and exposes 26 fields with key field ProjectBillingElementUUID. It has 9 associations to related views. Part of development package VDM_PROJECTBILLINGELEMENT.

Data Sources (1)

SourceAliasJoin Type
projbillgelmnt ProjectBillingElement from

Associations (9)

CardinalityTargetAliasCondition
[0..*] I_ProjectBillingElementEntry _ProjectBillingElementEntry $projection.ProjectBillingElementUUID = _ProjectBillingElementEntry.ProjectBillingElementUUID
[0..1] I_WBSElementBasicData _WBSElement $projection.BillingWBSElementInternalID = _WBSElement.WBSElementInternalID
[0..1] I_ProjBillgElmObjectLink _ProjBillgElmObjectLink $projection.ProjectBillingElementUUID = _ProjBillgElmObjectLink.ProjectBillingElementUUID
[1..1] I_Currency _Currency $projection.DocumentCurrency = _Currency.Currency
[1..*] I_CurrencyText _CurrencyText $projection.DocumentCurrency = _CurrencyText.Currency
[0..1] I_ProjectBillingCategory _ProjectBillingCategory $projection.ProjectBillingCategory = _ProjectBillingCategory.ProjectBillingCategory
[1..*] I_ProjectBillingCategoryText _ProjectBillingCategoryText $projection.ProjectBillingCategory = _ProjectBillingCategoryText.ProjectBillingCategory
[0..1] I_SalesDocument _SalesDocument $projection.SalesDocument = _SalesDocument.SalesDocument
[0..1] I_EnterpriseProjectElement _EnterpriseProjectElement $projection.ProjectElementUUID = _EnterpriseProjectElement.ProjectElementUUID

Annotations (12)

NameValueLevelField
EndUserText.label Project Billing Element view
VDM.lifecycle.contract.type #PUBLIC_LOCAL_API view
VDM.viewType #BASIC view
AccessControl.authorizationCheck #CHECK view
Analytics.dataExtraction.enabled true view
ObjectModel.modelingPattern #ANALYTICAL_DIMENSION view
ObjectModel.usageType.sizeCategory #M view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.usageType.serviceQuality #A view
ObjectModel.representativeKey ProjectBillingElementUUID view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.sapObjectNodeType.name ProjectBillingElement view

Fields (26)

KeyFieldSource TableSource FieldDescription
KEY ProjectBillingElementUUID projbillgelmnt projectbillingelementuuid
BillingWBSElementInternalID projbillgelmnt billingwbselementinternalid
DocumentCurrency projbillgelmnt documentcurrency
BilledRevenueAmtInDocCrcy projbillgelmnt billedrevenueamtindoccrcy
WrittenOffRevenueAmtInDocCrcy projbillgelmnt writtenoffrevenueamtindoccrcy
ProjBillingProfile projbillgelmnt projbillingprofile
ProjectBillingCategory projbillgelmnt projectbillingcategory
ProjBillgElmntCreatedByUser projbillgelmnt projbillgelmntcreatedbyuser
ProjBillgElmntCreatedAtDteTme projbillgelmnt projbillgelmntcreatedatdtetme
ProjBillgElmntLastChgdByUser projbillgelmnt projbillgelmntlastchgdbyuser
ProjBillgElmntLastChgdAtDteTme projbillgelmnt projbillgelmntlastchgdatdtetme
SalesDocument projbillgelmnt salesdocument
SalesDocumentItem projbillgelmnt salesdocumentitem
BillingPlan projbillgelmnt billingplan
ProjectUUID projbillgelmnt projectuuid
ProjectElementUUID projbillgelmnt projectelementuuid
PrjBlgElmObjLnkUUID _ProjBillgElmObjectLink PrjBlgElmObjLnkUUID
_SalesDocument _SalesDocument
_ProjectBillingElementEntry _ProjectBillingElementEntry
_WBSElement _WBSElement
_ProjBillgElmObjectLink _ProjBillgElmObjectLink
_Currency _Currency
_CurrencyText _CurrencyText
_ProjectBillingCategory _ProjectBillingCategory
_ProjectBillingCategoryText _ProjectBillingCategoryText
_EnterpriseProjectElement _EnterpriseProjectElement
@EndUserText.label: 'Project Billing Element'
@VDM.lifecycle.contract.type: #PUBLIC_LOCAL_API
@VDM.viewType: #BASIC
@AccessControl.authorizationCheck: #CHECK
//@Analytics.dataExtraction.enabled: true

//@Analytics.dataExtraction.delta.changeDataCapture.automatic: true

@Analytics: {
    dataExtraction: {
        enabled: true,
        delta.changeDataCapture: {
            mapping:[
                {
                    table: 'projbillgelmnt', role: #MAIN,
                    viewElement: ['ProjectBillingElementUUID'],
                    tableElement: ['projectbillingelementuuid']
                },
                {
                    table: 'prjblgelmobjlnk', role: #LEFT_OUTER_TO_ONE_JOIN,
                    viewElement: ['PrjBlgElmObjLnkUUID'],
                    tableElement: ['prjblgelmobjlnkuuid']
                }
            ]
        }
    }
 }

@ObjectModel: {
    modelingPattern: #ANALYTICAL_DIMENSION,
    supportedCapabilities: [ #SQL_DATA_SOURCE, #CDS_MODELING_DATA_SOURCE, #CDS_MODELING_ASSOCIATION_TARGET, #ANALYTICAL_DIMENSION, #EXTRACTION_DATA_SOURCE, #UI_PROVIDER_PROJECTION_SOURCE ],
    usageType: {
        sizeCategory: #M,
        dataClass:  #TRANSACTIONAL,
        serviceQuality: #A
    },
    representativeKey: 'ProjectBillingElementUUID'
}
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.sapObjectNodeType.name: 'ProjectBillingElement'


define view entity I_ProjectBillingElement
  as select from projbillgelmnt as ProjectBillingElement
  association [0..*] to I_ProjectBillingElementEntry as _ProjectBillingElementEntry on $projection.ProjectBillingElementUUID = _ProjectBillingElementEntry.ProjectBillingElementUUID

  association [0..1] to I_WBSElementBasicData        as _WBSElement                 on $projection.BillingWBSElementInternalID = _WBSElement.WBSElementInternalID

  association [0..1] to I_ProjBillgElmObjectLink     as _ProjBillgElmObjectLink     on $projection.ProjectBillingElementUUID = _ProjBillgElmObjectLink.ProjectBillingElementUUID

  association [1..1] to I_Currency                   as _Currency                   on $projection.DocumentCurrency = _Currency.Currency

  association [1..*] to I_CurrencyText               as _CurrencyText               on $projection.DocumentCurrency = _CurrencyText.Currency

  association [0..1] to I_ProjectBillingCategory     as _ProjectBillingCategory     on $projection.ProjectBillingCategory = _ProjectBillingCategory.ProjectBillingCategory

  association [1..*] to I_ProjectBillingCategoryText as _ProjectBillingCategoryText on $projection.ProjectBillingCategory = _ProjectBillingCategoryText.ProjectBillingCategory

  association [0..1] to I_SalesDocument              as _SalesDocument              on $projection.SalesDocument = _SalesDocument.SalesDocument

  association [0..1] to I_EnterpriseProjectElement   as _EnterpriseProjectElement   on $projection.ProjectElementUUID = _EnterpriseProjectElement.ProjectElementUUID
{
  key ProjectBillingElement.projectbillingelementuuid      as ProjectBillingElementUUID,
      ProjectBillingElement.billingwbselementinternalid    as BillingWBSElementInternalID,
      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_CurrencyStdVH',
                     element: 'Currency' }
        }]
      @ObjectModel.foreignKey.association: '_Currency'
      ProjectBillingElement.documentcurrency               as DocumentCurrency,
      @Semantics.amount.currencyCode: 'DocumentCurrency'
      ProjectBillingElement.billedrevenueamtindoccrcy      as BilledRevenueAmtInDocCrcy,
      @Semantics.amount.currencyCode: 'DocumentCurrency'
      ProjectBillingElement.writtenoffrevenueamtindoccrcy  as WrittenOffRevenueAmtInDocCrcy,
      ProjectBillingElement.projbillingprofile             as ProjBillingProfile,
      @Consumption.valueHelpDefinition: [
        { entity:  { name:    'I_ProjectBillingCategory',
                     element: 'ProjectBillingCategory' }
        }]
      @ObjectModel.foreignKey.association: '_ProjectBillingCategory'
      ProjectBillingElement.projectbillingcategory         as ProjectBillingCategory,
      @Semantics.user.createdBy: true
      ProjectBillingElement.projbillgelmntcreatedbyuser    as ProjBillgElmntCreatedByUser,
      @Semantics.systemDateTime.createdAt: true
      ProjectBillingElement.projbillgelmntcreatedatdtetme  as ProjBillgElmntCreatedAtDteTme,
      @Semantics.user.lastChangedBy: true
      ProjectBillingElement.projbillgelmntlastchgdbyuser   as ProjBillgElmntLastChgdByUser,
      @Semantics.systemDateTime.lastChangedAt: true
      ProjectBillingElement.projbillgelmntlastchgdatdtetme as ProjBillgElmntLastChgdAtDteTme,

      ProjectBillingElement.salesdocument                  as SalesDocument,
      ProjectBillingElement.salesdocumentitem              as SalesDocumentItem,
      ProjectBillingElement.billingplan                    as BillingPlan,

      ProjectBillingElement.projectuuid                    as ProjectUUID,
      ProjectBillingElement.projectelementuuid             as ProjectElementUUID,

      _ProjBillgElmObjectLink.PrjBlgElmObjLnkUUID, //for the delta extraction

      // _ProjBillgElmObjectLink.SalesDocument,

      //Added for reversing incompatible change

      _SalesDocument,
      //End of Added for reversing incompatible change

      //Associations

      _ProjectBillingElementEntry,
      _WBSElement,
      // _ProjBillgElmObjectLink._SalesDocument,

      _ProjBillgElmObjectLink,
      _Currency,
      @Consumption.hidden: true
      _CurrencyText,
      _ProjectBillingCategory,
      @Consumption.hidden: true
      _ProjectBillingCategoryText,
      _EnterpriseProjectElement
}