@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'
Depth:
1
2
3
4
5
All
Reload
C_ProjectBillingRequestTP view_entity