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