C_ProjectBillingRequestTP

DDL: C_PROJECTBILLINGREQUESTTP Type: view_entity CONSUMPTION

Details of Project Billing Request

C_ProjectBillingRequestTP is a Consumption CDS View that provides data about "Details of Project Billing Request" in SAP S/4HANA. It reads from 1 data source (R_ProjectBillingRequestTP) and exposes 41 fields with key field ProjectBillingRequestUUID. It has 1 association to related views. It is exposed through 1 OData service (PROJECTBILLINGREQUEST_SD).

Data Sources (1)

SourceAliasJoin Type
R_ProjectBillingRequestTP R_ProjectBillingRequestTP projection

Associations (1)

CardinalityTargetAliasCondition
[1..1] C_ProjectBillingCustomerCard _CustomerContactCard $projection.Customer = _CustomerContactCard.Customer

Annotations (11)

NameValueLevelField
AccessControl.authorizationCheck #CHECK view
VDM.viewType #CONSUMPTION view
Search.searchable true view
ObjectModel.representativeKey ProjectBillingRequestUUID view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.usageType.serviceQuality #C view
UI.headerInfo.typeName Project Billing Request view
UI.headerInfo.typeNamePlural Project Billing Requests view
UI.headerInfo.title.label Manage Project Billing Requests view
EndUserText.label Details of Project Billing Request view

OData Services (1)

ServiceBindingVersionContractRelease
PROJECTBILLINGREQUEST_SD UI_PROJBILLGREQUEST_SB_V2 V2 C1 NOT_RELEASED

Fields (41)

KeyFieldSource TableSource FieldDescription
KEY ProjectBillingRequestUUID ProjectBillingRequestUUID Item ID
ProjectInternalID ProjectInternalID Project ID
ProjectBillingRequestStatus ProjectBillingRequestStatus
ProjBillgReqApprovalStatus ProjBillgReqApprovalStatus
ProjectBillingRequestType ProjectBillingRequestType
SalesDocument SalesDocument Sales Document
ProjectBillingCategory ProjectBillingCategory
ProjBillgReqLastChgdBy ProjBillgReqLastChgdBy
ProjBillgReqLastChgdAtDteTme ProjBillgReqLastChgdAtDteTme
ProjBillgReqCreatedBy ProjBillgReqCreatedBy
ProjBillgReqCreatedAtDteTme ProjBillgReqCreatedAtDteTme
_ProjectBillingRequestItem _ProjectBillingRequestItem
DocumentCurrency DocumentCurrency Document Currency
ProjectBillingRequest ProjectBillingRequest Project Billing Request
char30 Billing Element
char60 Billing Method
CustomerProject Project Project
char30 Profit Center
dats8 Billing Due Date
char1
string
curr232 Billed
curr232 Estimated Actuals
curr232 To Bill
curr232 To Write Off
curr232 To Postpone
curr232 Cap
Customer _CustomerToBusinessPartner Customer Customer
CustomerName Customer
char2
ProjectStartDate ProjectStartDate
ProjectEndDate ProjectEndDate
ProfitCenter ProfitCenter
ControllingArea ControllingArea
curr232 Amount/Cost to Postpone
curr232 Amount/Cost to Write Off
curr232 Amount/Cost to Bill
char300
_ProjectBillingRequestStatus _ProjectBillingRequestStatus
_CustomerContactCard _CustomerContactCard
_EnterpriseProject _EnterpriseProject
@AccessControl.authorizationCheck: #CHECK
@VDM.viewType: #CONSUMPTION
@VDM.usage.type: [ #TRANSACTIONAL_PROCESSING_SERVICE ]

@Search.searchable: true
@ObjectModel: {
   semanticKey:       [ 'ProjectBillingRequestUUID' ],
   representativeKey: 'ProjectBillingRequestUUID'
}

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

@UI.headerInfo: {
  typeName:       'Project Billing Request',
  typeNamePlural: 'Project Billing Requests',
  title:          { label: 'Manage Project Billing Requests' }
}
@EndUserText.label: 'Details of Project Billing Request'

@UI.presentationVariant: [{ requestAtLeast: ['ProjBillingDocRequestListText'] }]

@Consumption.dbHints: ['NO_SUBPLAN_SHARING'] -- Performance testing

define root view entity C_ProjectBillingRequestTP
  provider contract transactional_query
  as projection on R_ProjectBillingRequestTP as _ProjectBillingRequestTP
  association [1..1] to C_ProjectBillingCustomerCard as _CustomerContactCard on $projection.Customer = _CustomerContactCard.Customer
{
          @UI.hidden: true
          @EndUserText.label: 'Item ID'
          @EndUserText.quickInfo: 'Item ID'
  key     ProjectBillingRequestUUID,

          @UI.hidden: true
          @EndUserText.label: 'Project ID'
          @EndUserText.quickInfo: 'Project ID'
          ProjectInternalID,

          @UI.hidden: true
          ProjectBillingRequestStatus,

          @UI.hidden: true
          ProjBillgReqApprovalStatus,

          @UI.hidden: true
          ProjectBillingRequestType,

          @UI.hidden: true
          @EndUserText.label: 'Sales Document'
          @EndUserText.quickInfo: 'Sales Document'
          SalesDocument,

          @UI.hidden: true
          ProjectBillingCategory,

          @UI.hidden: true
          ProjBillgReqLastChgdBy,

          @UI.hidden: true
          ProjBillgReqLastChgdAtDteTme,

          @UI.hidden: true
          ProjBillgReqCreatedBy,

          @UI.hidden: true
          ProjBillgReqCreatedAtDteTme,

          @UI.hidden: true
          _ProjectBillingRequestItem,

          @EndUserText.label: 'Document Currency'
          @EndUserText.quickInfo: 'Document Currency'
          //_EnterpriseProject.Currency                       as DocumentCurrency,  -- For Performance ATC

          DocumentCurrency,

          @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85 }
          @EndUserText.label: 'Project Billing Request'
          @EndUserText.quickInfo: 'Project Billing Request'
          ProjectBillingRequest, //Draft ID


          @EndUserText.label: 'Billing Element'
          @EndUserText.quickInfo: 'Billing Element'
          @UI: { lineItem: [ { position: 40, importance: #HIGH } ] }
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual WBSElementExternalID           : abap.char( 30 ),

          @EndUserText.label: 'Billing Method'
          @EndUserText.quickInfo: 'Billing Method'
          @UI: { lineItem: [ { position: 50, importance: #HIGH } ] }
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual BillingPlanUsageCategoryName   : abap.char( 60 ),

          @EndUserText.label: 'Project'
          @EndUserText.quickInfo: 'Project'
          @UI: { lineItem: [ { position: 10, importance: #HIGH } ] }
          //_EnterpriseProject.Project                        as CustomerProject,  -- For Performance ATC

          Project                                             as CustomerProject,


          @EndUserText.label: 'Profit Center'
          @EndUserText.quickInfo: 'Profit Center'
          @UI: { lineItem: [ { position: 30, importance: #HIGH } ] }
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual ProfitCenterName               : abap.char( 30 ),

          @UI: { lineItem: [{ position: 60, importance: #HIGH }] }
          @UI.hidden: true
          @Consumption.filter.hidden: true
          @EndUserText.label: 'Billing Due Date'
          @EndUserText.quickInfo: 'Billing Due Date'
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual BillingPlanBillingDate         : abap.dats( 8 ),

          @UI.hidden: true
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual UtilitiesBillingReason         : abap.char( 1 ),

          @UI.hidden: true
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual ProjectBillgRequestMessageText : abap.string,

          @UI: { lineItem: [{ position: 90, importance: #HIGH }] }
          @EndUserText.label: 'Billed'
          @EndUserText.quickInfo: 'Billed'  //Net Billed

          @Semantics.amount.currencyCode: 'DocumentCurrency'
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual BilledRevenueAmtInDocCrcy      : abap.curr( 23 , 2 ),

          @EndUserText.label: 'Estimated Actuals'
          @EndUserText.quickInfo: 'Estimated Actuals'
          @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
          @Consumption.filter.hidden: true
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual NetValueAmountInDocCurrency    : abap.curr( 23 , 2 ),

          @EndUserText.label: 'To Bill'
          @EndUserText.quickInfo: 'To Bill'
          @UI: { lineItem: [{ position: 110, importance: #HIGH }] }
          @Semantics.amount.currencyCode: 'DocumentCurrency'
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual BillableRevenueAmtInDocCrcy    : abap.curr( 23 , 2 ),

          @EndUserText.label: 'To Write Off'
          @EndUserText.quickInfo: 'To Write Off'
          @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual WrittenOffRevenueAmtInDocCrcy  : abap.curr( 23 , 2 ),

          @EndUserText.label: 'To Postpone'
          @EndUserText.quickInfo: 'To Postpone'
          @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual PostponedRevenueAmtInDocCrcy   : abap.curr( 23 , 2 ),

          @UI: { lineItem: [{ position: 80, importance: #HIGH }]  }
          @EndUserText.label: 'Cap'
          @EndUserText.quickInfo: 'Cap'
          @Semantics.amount.currencyCode: 'DocumentCurrency'
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual CappedNetAmount                : abap.curr( 23 , 2 ),

          @EndUserText.label: 'Customer'
          @EndUserText.quickInfo: 'Customer'
          @UI: { lineItem: [ { position: 20, importance: #HIGH } ]  }
          //@ObjectModel.text.element: ['CustomerName']

          @ObjectModel: { foreignKey.association: '_CustomerContactCard' }
          @UI.textArrangement: #TEXT_ONLY
          _CustomerToBusinessPartner.Customer               as Customer, 

          @UI.hidden: true
          @Consumption.filter.hidden: true
          @EndUserText.label: 'Customer'
          @EndUserText.quickInfo: 'Customer'
          _CustomerToBusinessPartner._Customer.CustomerName as CustomerName,

          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
          @UI.hidden: true
  virtual BillingPlanUsageCategory       : abap.char( 2 ),

          // Project Popover on ObjectPage

          @UI.hidden: true
          // _EnterpriseProject.ProjectStartDate               as ProjectStartDate,  -- For Performance ATC

          ProjectStartDate,

          @UI.hidden: true
          // _EnterpriseProject.ProjectEndDate                 as ProjectEndDate, -- For Performance ATC

          ProjectEndDate,

          @UI.hidden: true
          // _EnterpriseProject.ProfitCenter, -- For Performance ATC

          ProfitCenter,

          @UI.hidden: true
          // _EnterpriseProject.ControllingArea, -- For Performance ATC

          ControllingArea,

          @EndUserText.label: 'Amount/Cost to Postpone'
          @EndUserText.quickInfo: 'Amount/Cost to Postpone'
          @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual ToBePostponedAmtInProjectCrcy  : abap.curr( 23 , 2 ),

          @EndUserText.label: 'Amount/Cost to Write Off'
          @EndUserText.quickInfo: 'Amount/Cost to Write Off'
          @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual ToBeWrittenOffAmtInProjectCrcy : abap.curr( 23 , 2 ),

          @EndUserText.label: 'Amount/Cost to Bill'
          @EndUserText.quickInfo: 'Amount/Cost to Bill'
          @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual ToBeBilledAmtInProjCurrency    : abap.curr( 23 , 2 ),

          @UI.hidden: true
          @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual ProjBillingDocRequestListText  : abap.char( 300 ),


          @Consumption.filter.hidden: true
          @UI.hidden: true
          _ProjectBillingRequestStatus,
          
          _CustomerContactCard,
          _EnterpriseProject,

          _ProjectBillingReqItemTP : redirected to composition child C_ProjectBillingRequestItemTP

}

where
  ProjectBillingCategory <> 'ICBL'