C_ProjectBillingRequestTP_2

DDL: C_PROJECTBILLINGREQUESTTP_2 Type: view_entity CONSUMPTION Package: ODATA_PROJBILLINGREQUEST_LIST

Details of Project Billing Request

C_ProjectBillingRequestTP_2 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 39 fields with key field ProjectBillingRequestUUID. It has 2 associations to related views. It is exposed through 1 OData service (UI_PROJECTBILLINGREQUEST). Part of development package ODATA_PROJBILLINGREQUEST_LIST.

Data Sources (1)

SourceAliasJoin Type
R_ProjectBillingRequestTP R_ProjectBillingRequestTP projection

Associations (2)

CardinalityTargetAliasCondition
[0..*] C_ProjBillgElmntForPrjBlgReq _ProjBillgElmntForPrjBlgReq $projection.ProjectBillingRequestUUID = _ProjBillgElmntForPrjBlgReq.ProjectBillingRequestUUID
[0..*] C_WrittenOffPrjBlgElmEntrDets _WrittenOffPrjBlgElmEntrDets $projection.ProjectBillingRequestUUID = _WrittenOffPrjBlgElmEntrDets.ProjectBillingRequestUUID

Annotations (12)

NameValueLevelField
AccessControl.authorizationCheck #MANDATORY view
AccessControl.personalData.blocking #NOT_REQUIRED 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
UI_PROJECTBILLINGREQUEST UI_PROJECTBILLINGREQUEST V4 C1 NOT_RELEASED

Fields (39)

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
DocumentCurrency DocumentCurrency Document Currency
ProjectBillingRequest ProjectBillingRequest Project Billing Request
Project Project Project
Customer _CustomerToBusinessPartner Customer Customer
CustomerName Customer
char24 Billing Element
char60 Billing Method
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
curr232 Amount/Cost to Postpone
curr232 Amount/Cost to Write Off
curr232 Amount/Cost to Bill
string Total Quantities
_ProjectBillingRequestItem _ProjectBillingRequestItem
_ProjectBillingRequestStatus _ProjectBillingRequestStatus
_EnterpriseProject _EnterpriseProject
_SalesDocument _SalesDocument
_ProjectBillingCategory _ProjectBillingCategory
_ProjBillgElmntForPrjBlgReq _ProjBillgElmntForPrjBlgReq
_WrittenOffPrjBlgElmEntrDets _WrittenOffPrjBlgElmEntrDets
@AccessControl.authorizationCheck: #MANDATORY
@AccessControl.personalData.blocking: #NOT_REQUIRED
@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'

@Consumption.dbHints: ['NO_SUBPLAN_SHARING', 'NO_USE_HEX_PLAN'] -- Performance testing
//@Consumption.dbHints: ['USE_HEX_PLAN']


define root view entity C_ProjectBillingRequestTP_2
  provider contract transactional_query
  as projection on R_ProjectBillingRequestTP as _ProjectBillingRequestTP
  
  association [0..*] to C_ProjBillgElmntForPrjBlgReq as _ProjBillgElmntForPrjBlgReq on  $projection.ProjectBillingRequestUUID = _ProjBillgElmntForPrjBlgReq.ProjectBillingRequestUUID
  association [0..*] to C_WrittenOffPrjBlgElmEntrDets  as _WrittenOffPrjBlgElmEntrDets on  $projection.ProjectBillingRequestUUID = _WrittenOffPrjBlgElmEntrDets.ProjectBillingRequestUUID

{
          @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,

          @EndUserText.label: 'Document Currency'
          @EndUserText.quickInfo: 'Document Currency'
          DocumentCurrency,

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


          @EndUserText.label: 'Project'
          @EndUserText.quickInfo: 'Project'
          @UI: { lineItem: [ { position: 10, importance: #HIGH } ] }
          Project                                           as Project,

          @EndUserText.label: 'Customer'
          @EndUserText.quickInfo: 'Customer'
          @UI: { lineItem: [ { position: 20, importance: #HIGH } ]  }
          @ObjectModel.text.element: ['CustomerName']
          @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,

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

          @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: '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: '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 ),

          @Feature: 'PROJ_BILLG_SUM_QUAN_INF'
          @UI.hidden:true
          @EndUserText.label: 'Total Quantities'
          @EndUserText.quickInfo: 'Total Quantities'
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual UICT_OpenQuantity              : abap.string, //ProjBillgReqTotalQuantityText


          @UI.hidden:true
          @Semantics.booleanIndicator: true
          @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
  virtual UICT_OnAccountItemsAreIncluded : abap_boolean,

          //Associations

          @UI.hidden: true
          _ProjectBillingRequestItem,

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

          _EnterpriseProject,
          _SalesDocument,
          _ProjectBillingCategory,
          _ProjBillgElmntForPrjBlgReq,
          _WrittenOffPrjBlgElmEntrDets,
          
          _ProjectBillingReqItemTP : redirected to composition child C_ProjectBillingRequestItmTP_2

}

where
  ProjectBillingCategory <> 'ICBL'