@AccessControl.authorizationCheck: #CHECK
@AccessControl.privilegedAssociations: ['_ProjBillgSlsItmBillgPlnDuDte', '_ProjBillingInProcessDetails']
@VDM.viewType: #CONSUMPTION
@VDM.usage.type: [ #TRANSACTIONAL_PROCESSING_SERVICE ]
//@Metadata.allowExtensions: true
@Search.searchable: true
@ObjectModel: {
semanticKey: [ 'WBSElementExternalID' ],
representativeKey: 'ProjectBillingElementUUID'
}
@ObjectModel.usageType: {
sizeCategory: #XL,
dataClass: #TRANSACTIONAL,
serviceQuality: #C
}
@UI.headerInfo: {
typeName: 'Billing Element',
typeNamePlural: 'Billing Elements',
title: { type: #STANDARD, value: 'WBSElementExternalID' }
}
--@UI.presentationVariant: [{sortOrder: [{by: 'DueBillingDate' , direction: #DESC}], requestAtLeast: [ 'HasDraftEntity', 'IsActiveEntity', 'DraftIsCreatedByMe', 'LastChangedByUser', 'LastChangedByUserDescription', 'LastChangeDateTime', 'InProcessByUser', 'HasActiveEntity' ] }]
@UI.presentationVariant: [{sortOrder: [{by: 'DueBillingDate' , direction: #ASC}], requestAtLeast: [ 'DueBillingDate' ]}] //ASC
@Consumption.dbHints: ['NO_SUBPLAN_SHARING'] -- Performance testing
// @EndUserText.label: 'Details of Billing Element' //for filter grouping name
define root view entity C_ProjectBillingElementTP
provider contract transactional_query
as projection on R_ProjectBillingElementTP
association [1..1] to C_ProjBillgCustomerProjectDets as _ProjBillgCustomerProjectDets on $projection.CustomerProject = _ProjBillgCustomerProjectDets.Project
association [1..1] to C_ProjectBillingCustomerCard as _CustomerContactCard on $projection.Customer = _CustomerContactCard.Customer
association [1..*] to C_ProjBillgSlsItmBillgPlnDuDte as _ProjBillgSlsItmBillgPlnDuDte on $projection.BillingPlan = _ProjBillgSlsItmBillgPlnDuDte.BillingPlan
and _ProjBillgSlsItmBillgPlnDuDte.BillingPlanRelatedBillgStatus = 'A'
association [1..*] to C_ProjBillingInProcessDetails as _ProjBillingInProcessDetails on $projection.ProjectBillingElementUUID = _ProjBillingInProcessDetails.ProjectBillingElementUUID
association [1..*] to C_ProjBillgElmntPartnerDetails as _ProjBillgElmntPartnerDetails on $projection.BillingWBSElementInternalID = _ProjBillgElmntPartnerDetails.WBSElementInternalID
--used only in profit centre hierarchy filtering
association [0..*] to C_HierRuntimeRprstnDplLeafNode as _ProfitCenterHierLeafNode on $projection.ProfitCenter = _ProfitCenterHierLeafNode.UnivHierarchyBusinessEntity
and $projection.ControllingArea = _ProfitCenterHierLeafNode.HierarchyNodeClass
and _ProfitCenterHierLeafNode.ValidityStartDate <= $session.system_date
and _ProfitCenterHierLeafNode.ValidityEndDate >= $session.system_date
and _ProfitCenterHierLeafNode.HierarchyType = '0106'
{
@UI.hidden: true
key ProjectBillingElementUUID,
@Semantics.text: true
@UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ], lineItem: [ { position: 10, importance: #HIGH } ] }
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
@EndUserText.label: 'Billing Element'
@EndUserText.quickInfo: 'Billing Element'
@Consumption.valueHelpDefinition: [{ entity: { name: 'I_BillingWBSBasicDataStdVH', element: 'WBSElementExternalID'}}]
cast( _EnterpriseProjectElement.ProjectElement as ps_posid_edit preserving type ) as WBSElementExternalID,
@EndUserText.label: 'Project Billing Request'
@EndUserText.quickInfo: 'Project Billing Request'
@Consumption.filter.hidden: true
ProjectBillingRequest,
//@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//virtual ProjectBillingRequest : pbr_extid,
@UI.hidden: true
ProjectBillingRequestUUID,
//@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//virtual ProjectBillingRequestUUID : pbr_uuid,
@UI.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual IsActiveEntity : boolean,
@UI.hidden: true
@EndUserText.label: 'Draft Created By Me'
@EndUserText.quickInfo: 'Draft Created By Me'
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual DraftIsCreatedByMe : boolean,
@UI.hidden: true
@EndUserText.label: 'Last Change By'
@EndUserText.quickInfo: 'Last Change By'
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual LastChangedByUser : abap.char( 12 ),
@UI.hidden: true
@EndUserText.label: 'Last Change By Desc'
@EndUserText.quickInfo: 'Last Change By Desc'
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual LastChangedByUserDescription : abap.char( 20 ),
@UI.hidden: true
@EndUserText.label: 'Last Change Time'
@EndUserText.quickInfo: 'Last Change Time'
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual LastChangeDateTime : edms_changed_at,
@UI.hidden: true
@EndUserText.label: 'In Process'
@EndUserText.quickInfo: 'In Process'
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual InProcessByUser : abap.char(12),
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual HasDraftEntity : boolean,
@UI.hidden: true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual HasActiveEntity : boolean,
@EndUserText.label: 'Billing Due Date'
@EndUserText.quickInfo: 'Billing Due Date'
@Consumption.filter.hidden: false
@ObjectModel.filter.enabled: true
@Consumption.filter : {selectionType:#INTERVAL,multipleSelections: false}
@ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
@ObjectModel.sort.enabled: true
@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
@UI: { selectionField: [{ position: 200 }] }
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual BillingPlanBillingDate : abap.dats(8), //Billing date for T&E
//_ProjBillingDueDate.DueBillingDate,
--@UI.hidden: true
--DueBillingDate,
@UI.hidden: true
DueBillingDate, //from billing plan: max past, min future else 99991231
@UI.hidden: true
BillingWBSElementInternalID,
-- { POC ToBill calculation
-- the field is used in the filter logic for BillableRevenueAmtInDocCrcy
//@EndUserText.label: 'POC_To_Bill_Filterable'
//@EndUserText.quickInfo: 'POC_To_Bill_Filterable'
//@ObjectModel.filter.enabled: true
//@ObjectModel.sort.enabled: true
--@UI.hidden: true
--@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
--_PrjBlgElmBllbleRevnAmt.BillableRevenueAmtInDocCrcy as BllbleRevnAmtInDocCrcyFoFltr,
-- } POC ToBill calculation
@UI: { lineItem: [ { position: 110, importance: #HIGH, exclude: true } ] }
@EndUserText.label: 'To Bill'
@EndUserText.quickInfo: 'To Bill'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
@Consumption.filter.hidden: true
//@Consumption.filter.hidden: false
//@ObjectModel.filter.enabled: true
//@ObjectModel.sort.enabled: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
virtual BillableRevenueAmtInDocCrcy : abap.curr( 23 , 2 ),
-- the field is used in the filter logic for IsMyProjectBillingElement
@UI.hidden: true
UserID,
@Consumption.filter.hidden: false
@ObjectModel.filter.enabled: true
@Consumption.filter.selectionType: #SINGLE
@Consumption.filter.multipleSelections: false
@EndUserText.label: 'My Billing Elements'
@EndUserText.quickInfo: 'My Billing Elements'
@UI: { selectionField: [{ position: 210 }] }
@Consumption.filter.defaultValue: 'X'
@ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual IsMyProjectBillingElement : boolean,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
//@UI: { lineItem: [{position: 30, type: #AS_CONTACT, value: '_CustomerContactCard', label: 'Customer' }] , selectionField: [{ position: 10 }] }
@UI: { lineItem: [{position: 30, importance: #HIGH }], selectionField: [{ position: 10 }] }
@EndUserText.label: 'Customer'
@EndUserText.quickInfo: 'Customer'
@Consumption.valueHelpDefinition: [ { entity: { name : 'D_CustomerCVH', element: 'Customer' } } ]
@ObjectModel: { foreignKey.association: '_CustomerContactCard'}
@Consumption: { valueHelp: '_CustomerContactCard' }
@Consumption.semanticObject: 'Customer'
@ObjectModel.text.element: ['CustomerName']
//@UI.hidden: true //custom column will be used on UI
Customer,
@UI.hidden: true
@Consumption.filter.hidden: true
@EndUserText.label: 'Customer'
@EndUserText.quickInfo: 'Customer'
_Customer.CustomerName,
@UI.hidden: true
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
_Customer.OrganizationBPName1 as OrganizationBPName1, //-- text search for Customer
@UI.hidden: true
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
_Customer.OrganizationBPName2 as OrganizationBPName2, //-- text search for Customer
@EndUserText.label: 'Project'
@EndUserText.quickInfo: 'Project'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
@UI: { selectionField: [{ position: 20 }] }
@ObjectModel.text.element: [ 'ProjectDescription' ]
@Consumption.valueHelpDefinition: [{ entity: { name:'C_ProjBillgCustProjVH',element: 'Project' }}]
@ObjectModel: { foreignKey.association: '_ProjBillgCustomerProjectDets'}
@Consumption: { valueHelp: '_ProjBillgCustomerProjectDets' }
@Consumption.semanticObject: 'EngagementProject'
//@Consumption.semanticObject: 'CustomerProject'
//@Consumption.semanticObjectMapping: {element: 'CustomerProject' }
//_EngProjItem1._EngagementProject.EngagementProject as CustomerProject,
//EngagementProject as CustomerProject,
//@Consumption.semanticObjectMapping.additionalBinding: [{element: 'CustomerProject'}, {localElement: 'Project'}]
Project as CustomerProject,
@EndUserText.label: 'Partner Function'
@EndUserText.quickInfo: 'Partner Function'
@UI: { fieldGroup: [ { groupLabel: 'Partners', qualifier: 'PartnerDetailsFilter' } ] }
@Consumption.valueHelpDefinition: [{ entity: { name:'C_PrjBlgElmPartnerFunctionVH', element: 'PartnerFunction' }}]
@Consumption.filter: { defaultValue : '', selectionType : #SINGLE, multipleSelections : false }
@ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
virtual PartnerFunction : parvw_unv, // 2208 Partner Function | Enabling Partner Function filter
@EndUserText.label: 'Personnel Number'
@EndUserText.quickInfo: 'Personnel Number'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1.0}
@UI: { fieldGroup: [ { groupLabel: 'Partners', qualifier: 'PartnerDetailsFilter' } ] }
--@Consumption.valueHelpDefinition: [{ entity: { name: 'I_WorkForcePersonMappings', element: 'WorkforceAssignment' }}]
@Consumption.valueHelpDefinition: [{ entity: { name: 'I_PersWrkAgrmtSrchHelp_1', element: 'PersonWorkAgreement' }}]
@Consumption.filter.defaultValue: '' //, selectionType : #SINGLE, multipleSelections : false }
@ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
virtual PersonnelNumber : pernr_d, // 2208 Partner Function | Enabling Personnel filter
@Consumption.filter.hidden: true
@EndUserText.label: 'Partner'
@EndUserText.quickInfo: 'Partner'
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
virtual AdditionalPartnerName : abap.char( 100 ), // 2208 Partner Function | Adding Partner Name field to list report
@Consumption.filter.hidden: true
@UI.hidden: true
@EndUserText.label: 'Partner Descr'
@EndUserText.quickInfo: 'Partner Descr'
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
virtual AdditionalPartnerDetailText : abap.char( 255 ),
@EndUserText.label: 'Project'
@Semantics.text: true
@Consumption.filter.hidden: true
@UI.hidden: true
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
ProjectDescription,
@UI: { lineItem: [{position: 40, importance: #HIGH }], selectionField: [{ position: 30 }] }
@EndUserText.label: 'Billing Method'
@EndUserText.quickInfo: 'Billing Method'
@Consumption.valueHelpDefinition: [{ entity:{ name:'C_BillingMethodVH',element: 'BillingPlanUsageCategoryName' }}]
_SalesDocItemBillPlan._BillingPlanUsageCategory._Text.BillingPlanUsageCategoryName as BillingPlanUsageCategoryName : localized,
@UI.hidden: true
@Consumption.filter.hidden: true
_SalesDocItemBillPlan.BillingPlanUsageCategory as BillingPlanUsageCategory,
//BillingPlanUsageCategory,
@EndUserText.label: 'Document Currency'
@UI.hidden: true
@Semantics.currencyCode: true
@Consumption.filter.hidden: true
DocumentCurrency,
@UI.hidden: true
@Consumption.filter.hidden: true
TransactionCurrency as TransactionCurrency,
//@UI.hidden: true
@EndUserText.label: 'Billed'
@EndUserText.quickInfo: 'Billed'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
@Consumption.filter.hidden: true
BilledRevenueAmtInDocCrcy,
//@UI.hidden: true
@UI: { lineItem: [ { position: 90, importance: #HIGH } ] }
@EndUserText.label: 'Unbilled'
@EndUserText.quickInfo: 'Unbilled'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
@Consumption.filter.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
virtual UnbilledRevnAmtInDocCrcy : abap.curr( 23, 2 ),
@UI.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.filter.transformedBy: 'ABAP:ZTMP_VIRTUALFIELDS_FILTER'
//@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
virtual ProjBillgElmntEntrIsCancelled : abap.char( 1 ),
//@UI: { lineItem: [ { position: 100, importance: #HIGH } ] }
@UI.hidden: true
@EndUserText.label: 'Billing in Process'
@EndUserText.quickInfo: 'Billing in Process'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
@Consumption.filter.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
virtual BillgReqdRevenueAmtInDocCrcy : abap.curr( 23, 2 ),
//BillgReqdRevenueAmtInDocCrcy,
@UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ], lineItem: [ { position: 50, importance: #HIGH } ] }
@EndUserText.label: 'Profit Center'
@EndUserText.quickInfo: 'Profit Center'
@Consumption.valueHelpDefinition: [{entity: {name: 'C_PrftCtrValHelp', element:'ProfitCenter'}}]
@ObjectModel.text.element : ['ProfitCenterText']
@Consumption.semanticObject: 'ProfitCenter'
WBSElementProfitCenter as ProfitCenter,
@UI.hidden: true
_ProfitCenterName.ProfitCenterName as ProfitCenterText,
@UI: { lineItem: [ { position: 60, importance: #HIGH } ] }
@EndUserText.label: 'Planned Revenue'
@EndUserText.quickInfo: 'Planned Revenue'
@Semantics.amount.currencyCode: 'TransactionCurrency'
@Consumption.filter.hidden: false
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
virtual PlndRevnAmt : abap.curr( 23, 2 ),
//_PrjBlgElmPlndRevnAmt.PlndRevnAmt,
@UI: { lineItem: [ { position: 70, importance: #HIGH } ] }
@EndUserText.label: 'Cap'
@EndUserText.quickInfo: 'Cap'
@Consumption.filter.hidden: true
@Semantics.amount.currencyCode: 'TransactionCurrency'
_SalesOrderItem.CappedNetAmount,
@UI: { lineItem: [ { position: 140, importance: #HIGH } ] }
@EndUserText.label: 'Written Off'
@EndUserText.quickInfo: 'Written Off'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
//@Consumption.filter.hidden: false
@ObjectModel.sort.enabled: true
@ObjectModel.filter.enabled: true
WrittenOffRevenueAmtInDocCrcy,
@Feature: 'SD_PROJ_BILLG_DOWN_PAYMENT'
//@UI: { lineItem: [ { position: 150, importance: #HIGH, exclude: true } ] }
@EndUserText.label: 'Down Payment Requested'
@EndUserText.quickInfo: 'Down Payment Requested'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
@Consumption.filter.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual RequestedDownPaytAmtInDocCrcy : abap.curr( 23, 2 ),
@Feature: 'SD_PROJ_BILLG_DOWN_PAYMENT'
//@UI: { lineItem: [ { position: 160, importance: #HIGH, exclude: true } ] }
@EndUserText.label: 'Down Payment Received'
@EndUserText.quickInfo: 'Down Payment Received'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
@Consumption.filter.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual ReceivedDownPaytAmtInDocCrcy : abap.curr( 23, 2 ),
@EndUserText.label: 'Billing Item Description'
@EndUserText.quickInfo: 'Billing Item Description'
@UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ] }
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
_SalesOrderItem.SalesOrderItemText as WBSElementDescription,
@UI.hidden: true
ServiceOrganizationUnit,
@UI.hidden: true
ResponsibleCostCenter,
@UI.hidden: true
ProfitCenter as CostCenterProfitCenter,
--hierarchical value help for profit centre realization
@UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ] }
@Consumption.valueHelpDefinition: [{ entity:{ name: 'I_ProfitCenterHierarchyVH', element: 'ProfitCenterHierarchy' } }]
@Consumption.filter.selectionType: #SINGLE
@ObjectModel.filter.transformedBy: 'ABAP:CL_FINS_HIER_VH_FLTR_TRANSFORM'
ProfitCenterHierarchy,
@UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ] }
@Consumption.filter.hidden: true
@ObjectModel.filter.transformedBy: 'ABAP:CL_FINS_HIER_VH_FLTR_TRANSFORM'
ProfitCenterHierarchyNode,
//@UI.hidden: true
@EndUserText.label: 'Service Organization'
@EndUserText.quickInfo: 'Service Organization'
@UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ] }
@Consumption.valueHelpDefinition: [
{ entity: { name: 'I_EngmntProjSrvcOrgStdVH',
element: 'EngagementProjectServiceOrg' }
}]
@ObjectModel.text.element : ['EngmtProjectServiceOrgName']
@Consumption.semanticObject: 'ServiceOrganization'
//@UI.textArrangement: #TEXT_ONLY "Commenting to solve UI inconsistency issue
EngagementProjectServiceOrg,
@EndUserText.label: 'Last Billing Date'
@EndUserText.quickInfo: 'Last Billing Date'
@Consumption.filter.selectionType: #INTERVAL
@Consumption.filter.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
virtual BillingDate : abap.dats(8),
@UI.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
virtual BillingPlanItemUsage : abap.char( 1 ),
@EndUserText.label: 'Planned PrePayment'
@EndUserText.quickInfo: 'Planned PrePayment'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
@Consumption.filter.hidden:true
PlndPrepaymentAmtInProjCrcy,
@EndUserText.label: 'Estimated Actuals'
@EndUserText.quickInfo: 'Estimated Actuals'
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
@Consumption.filter.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
virtual NetValueAmountInDocCurrency : abap.curr( 23 , 2 ),
@UI.hidden: true
BillingPlan,
@UI.hidden: true // 2208 Partner Function | expose SalesOrder
SalesOrder,
@UI.hidden: true
SalesOrderItem, // 2208 Partner Function | expose SalesOrderItem
// Adding Admin Fields
@UI.hidden: true
@EndUserText.label: 'Created By User'
@EndUserText.quickInfo: 'Created By User'
ProjBillgElmntCreatedByUser,
@UI.hidden: true
@EndUserText.label: 'Created At Time'
@EndUserText.quickInfo: 'Created At Time'
ProjBillgElmntCreatedAtDteTme,
@UI.hidden: true
@EndUserText.label: 'Last Changed By User'
@EndUserText.quickInfo: 'Last Changed By User'
ProjBillgElmntLastChgdByUser,
@UI.hidden: true
@EndUserText.label: 'Last Changed At Time'
@EndUserText.quickInfo: 'Last Changed At Time'
ProjBillgElmntLastChgdAtDteTme,
@Consumption.filter.selectionType: #SINGLE
@EndUserText.label: 'Planned Prepayments'
@EndUserText.quickInfo: 'Planned Prepayments'
@UI: { selectionField: [{ position: 220 }] }
@Consumption.valueHelpDefinition: [
{ entity: { name: 'C_PrjBlgElmPlndPpaytFilterVH',
element: 'DomainValueLow' }
}]
@Consumption.filter.defaultValue: ''
@ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
//@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual PrjBlgElmPlndPpaytFilter : pbe_prepaymentfilter,
_ProjectBillingDocDetails,
_ProjectBillingElementEntry : redirected to composition child C_ProjectBillingElementEntryTP,
_WBSElement,
@UI.hidden: true
@EndUserText.label: 'Organization Description'
@EndUserText.quickInfo: 'Organization Description'
@Consumption.filter.hidden: true
_ServiceOrganizationText.EngmtProjectServiceOrgName as EngmtProjectServiceOrgName,
_PrjBlgElmEntrForPrepayment,
--used in association
@UI.hidden: true
ControllingArea,
--used in profit center hierarchy filters
_ProfitCenterHierLeafNode,
--@Consumption.filter.hidden: true
--_MyProjectBillingElements,
@Consumption.filter.hidden: true
_CustomerContactCard,
@Consumption.filter.hidden: true
_ProjBillgElmntPartnerDetails,
@Consumption.filter.hidden: true
_ProjBillgCustomerProjectDets,
@Consumption.filter.hidden: true
_ProjBillgSlsItmBillgPlnDuDte,
@Consumption.filter.hidden: true
_ProjBillingInProcessDetails,
@UI.hidden: true
PrjBlgElmPlndPrepaymentIsOvrd,
@UI.hidden: true
@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
virtual ProjBillingReqIsAuthorized : boolean,
@UI.hidden: true
ProjBillingProfile as ProjBillingProfile,
@UI.hidden: true
ProjectBillingCategory as ProjectBillingCategory
}
where
BillingBlockStatus <> 'C'
and BillingBlockReason is initial
and SalesDocumentRjcnReason is initial
and(
ProcessingStatus = '10'
or ProcessingStatus = '40'
)
and SDDocumentRejectionStatus <> 'C'
and OverallBillingBlockStatus <> 'C'
and HeaderBillingBlockReason is initial
and ProjectBillingCategory <> 'ICBL' // Excluding ICO PBEs
//define root view entity C_ProjectBillingElementTP
// provider contract transactional_query
// as projection on R_ProjectBillingElementTP
//
// association [1..1] to C_ProjBillgCustomerProjectDets as _ProjBillgCustomerProjectDets on $projection.CustomerProject = _ProjBillgCustomerProjectDets.Project
//
// association [1..1] to C_ProjectBillingCustomerCard as _CustomerContactCard on $projection.Customer = _CustomerContactCard.Customer
//
// association [1..*] to C_ProjBillgSlsItmBillgPlnDuDte as _ProjBillgSlsItmBillgPlnDuDte on $projection.BillingPlan = _ProjBillgSlsItmBillgPlnDuDte.BillingPlan
// and _ProjBillgSlsItmBillgPlnDuDte.BillingPlanRelatedBillgStatus = 'A'
//
// association [1..*] to C_ProjBillingInProcessDetails as _ProjBillingInProcessDetails on $projection.ProjectBillingElementUUID = _ProjBillingInProcessDetails.ProjectBillingElementUUID
//
// association [1..*] to C_ProjBillgElmntPartnerDetails as _ProjBillgElmntPartnerDetails on $projection.BillingWBSElementInternalID = _ProjBillgElmntPartnerDetails.WBSElementInternalID
//
// --used only in profit centre hierarchy filtering
// association [0..*] to C_HierRuntimeRprstnDplLeafNode as _ProfitCenterHierLeafNode on $projection.ProfitCenter = _ProfitCenterHierLeafNode.UnivHierarchyBusinessEntity
// and $projection.ControllingArea = _ProfitCenterHierLeafNode.HierarchyNodeClass
// and _ProfitCenterHierLeafNode.ValidityStartDate <= $session.system_date
// and _ProfitCenterHierLeafNode.ValidityEndDate >= $session.system_date
// and _ProfitCenterHierLeafNode.HierarchyType = '0106'
// //association[0..*] to I_DraftAdministrativeData as _ProjectBillingElemAdminData on $projection.RootDraftUUID = _ProjectBillingElemAdminData.DraftUUID
//
// // association [0..1] to I_SitnInstceIndicator as _SitnInstceIndicator
// //on _SitnInstceIndicator.SitnInstceAnchorObjectKey = $projection.BillingWBSElementInternalID // the anchor object key
// //and _SitnInstceIndicator.SitnDefAnchorObject = 'I_ProjectBillingElement' // the anchor object type as a single-quoted string
//
//
//{
// @UI.hidden: true
// key ProjectBillingElementUUID,
// @Semantics.text: true
// @UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ], lineItem: [ { position: 10, importance: #HIGH } ] }
// @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
// @EndUserText.label: 'Billing Element'
// @EndUserText.quickInfo: 'Billing Element'
// @Consumption.valueHelpDefinition: [{ entity: { name: 'I_BillingWBSBasicDataStdVH', element: 'WBSElementExternalID'}}]
// // WBSElement as WBSElementExternalID,
// _WBSElement.WBSElementExternalID,
// --cast( _EnterpriseProjectElement.ProjectElement as ps_posid_edit preserving type ) as WBSElementExternalID,
//
// @EndUserText.label: 'Project Billing Request'
// @EndUserText.quickInfo: 'Project Billing Request'
// @Consumption.filter.hidden: true
// ProjectBillingRequest,
// //@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //virtual ProjectBillingRequest : pbr_extid,
//
// @UI.hidden: true
// ProjectBillingRequestUUID,
// //@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //virtual ProjectBillingRequestUUID : pbr_uuid,
//
//
// @UI.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual IsActiveEntity : boolean,
//
// @UI.hidden: true
// @EndUserText.label: 'Draft Created By Me'
// @EndUserText.quickInfo: 'Draft Created By Me'
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual DraftIsCreatedByMe : boolean,
//
// @UI.hidden: true
// @EndUserText.label: 'Last Change By'
// @EndUserText.quickInfo: 'Last Change By'
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual LastChangedByUser : abap.char( 12 ),
//
// @UI.hidden: true
// @EndUserText.label: 'Last Change By Desc'
// @EndUserText.quickInfo: 'Last Change By Desc'
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual LastChangedByUserDescription : abap.char( 20 ),
//
// @UI.hidden: true
// @EndUserText.label: 'Last Change Time'
// @EndUserText.quickInfo: 'Last Change Time'
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual LastChangeDateTime : edms_changed_at,
//
// @UI.hidden: true
// @EndUserText.label: 'In Process'
// @EndUserText.quickInfo: 'In Process'
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual InProcessByUser : abap.char(12),
//
// @UI.hidden: true
// @ObjectModel.virtualElement: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual HasDraftEntity : boolean,
//
// @UI.hidden: true
// @ObjectModel.virtualElement: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual HasActiveEntity : boolean,
//
//
// @EndUserText.label: 'Billing Due Date'
// @EndUserText.quickInfo: 'Billing Due Date'
// @Consumption.filter.hidden: false
// @ObjectModel.filter.enabled: true
// @Consumption.filter : {selectionType:#INTERVAL,multipleSelections: false}
// @ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// @ObjectModel.sort.enabled: true
// @ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// @UI: { selectionField: [{ position: 200 }] }
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual BillingPlanBillingDate : abap.dats(8), //Billing date for T&E
// //_ProjBillingDueDate.DueBillingDate,
// --@UI.hidden: true
// --DueBillingDate,
//
// @UI.hidden: true
// DueBillingDate, //from billing plan: max past, min future else 99991231
//
// @UI.hidden: true
// BillingWBSElementInternalID,
//
// -- { POC ToBill calculation
// -- the field is used in the filter logic for BillableRevenueAmtInDocCrcy
// @EndUserText.label: 'POC_To_Bill_Filterable'
// @EndUserText.quickInfo: 'POC_To_Bill_Filterable'
// @Consumption.filter.hidden: true
//// @ObjectModel.filter.enabled: true
//// @ObjectModel.sort.enabled: true
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// BillableRevenueAmtInDocCrcy as BllbleRevnAmtInDocCrcyFoFltr,
// -- } POC ToBill calculation
//
// @UI: { lineItem: [ { position: 110, importance: #HIGH, exclude: true } ] }
// @EndUserText.label: 'To Bill'
// @EndUserText.quickInfo: 'To Bill'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
//// @Consumption.filter.hidden: true
// @Consumption.filter.hidden: false
// @ObjectModel.filter.enabled: true
// @ObjectModel.sort.enabled: true
// @ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// virtual BillableRevenueAmtInDocCrcy : abap.curr( 23 , 2 ),
//
// -- the field is used in the filter logic for IsMyProjectBillingElement
// @UI.hidden: true
// UserID,
//
// @Consumption.filter.hidden: false
// @ObjectModel.filter.enabled: true
// @Consumption.filter.selectionType: #SINGLE
// @Consumption.filter.multipleSelections: false
// @EndUserText.label: 'My Billing Elements'
// @EndUserText.quickInfo: 'My Billing Elements'
// @UI: { selectionField: [{ position: 210 }] }
// @Consumption.filter.defaultValue: 'X'
// @ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual IsMyProjectBillingElement : boolean,
//
// @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
// //@UI: { lineItem: [{position: 30, type: #AS_CONTACT, value: '_CustomerContactCard', label: 'Customer' }] , selectionField: [{ position: 10 }] }
// @UI: { lineItem: [{position: 30, importance: #HIGH }], selectionField: [{ position: 10 }] }
// @EndUserText.label: 'Customer'
// @EndUserText.quickInfo: 'Customer'
// @Consumption.valueHelpDefinition: [ { entity: { name : 'D_CustomerCVH', element: 'Customer' } } ]
// //@ObjectModel.foreignKey.association: '_Customer'
// @ObjectModel: { foreignKey.association: '_CustomerContactCard'}
// @Consumption: { valueHelp: '_CustomerContactCard' }
// @Consumption.semanticObject: 'Customer'
// @ObjectModel.text.element: ['CustomerName']
// //@UI.hidden: true //custom column will be used on UI
// Customer,
//
// @UI.hidden: true
// @Consumption.filter.hidden: true
// @EndUserText.label: 'Customer'
// @EndUserText.quickInfo: 'Customer'
// _Customer.CustomerName,
//
// @UI.hidden: true
// @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
// _Customer.OrganizationBPName1 as OrganizationBPName1, //-- text search for Customer
//
// @UI.hidden: true
// @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
// _Customer.OrganizationBPName2 as OrganizationBPName2, //-- text search for Customer
//
// @EndUserText.label: 'Project'
// @EndUserText.quickInfo: 'Project'
// @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
// @UI: { selectionField: [{ position: 20 }] }
// @ObjectModel.text.element: [ 'ProjectDescription' ]
// @Consumption.valueHelpDefinition: [{ entity: { name:'C_ProjBillgCustProjVH',element: 'Project' }}]
// @ObjectModel: { foreignKey.association: '_ProjBillgCustomerProjectDets'}
// @Consumption: { valueHelp: '_ProjBillgCustomerProjectDets' }
// @Consumption.semanticObject: 'EngagementProject'
// //@Consumption.semanticObject: 'CustomerProject'
// //@Consumption.semanticObjectMapping: {element: 'CustomerProject' }
// //_EngProjItem1._EngagementProject.EngagementProject as CustomerProject,
// //EngagementProject as CustomerProject,
// //@Consumption.semanticObjectMapping.additionalBinding: [{element: 'CustomerProject'}, {localElement: 'Project'}]
// Project as CustomerProject,
//
// @EndUserText.label: 'Partner Function'
// @EndUserText.quickInfo: 'Partner Function'
// @UI: { fieldGroup: [ { groupLabel: 'Partners', qualifier: 'PartnerDetailsFilter' } ] }
// @Consumption.valueHelpDefinition: [{ entity: { name:'C_PrjBlgElmPartnerFunctionVH', element: 'PartnerFunction' }}]
// @Consumption.filter: { defaultValue : '', selectionType : #SINGLE, multipleSelections : false }
// @ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual PartnerFunction : parvw_unv, // 2208 Partner Function | Enabling Partner Function filter
//
// @EndUserText.label: 'Personnel Number'
// @EndUserText.quickInfo: 'Personnel Number'
// @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1.0}
// @UI: { fieldGroup: [ { groupLabel: 'Partners', qualifier: 'PartnerDetailsFilter' } ] }
// --@Consumption.valueHelpDefinition: [{ entity: { name: 'I_WorkForcePersonMappings', element: 'WorkforceAssignment' }}]
// @Consumption.valueHelpDefinition: [{ entity: { name: 'I_PersWrkAgrmtSrchHelp_1', element: 'PersonWorkAgreement' }}]
// @Consumption.filter.defaultValue: '' //, selectionType : #SINGLE, multipleSelections : false }
// @ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual PersonnelNumber : pernr_d, // 2208 Partner Function | Enabling Personnel filter
//
// @Consumption.filter.hidden: true
// @EndUserText.label: 'Partner'
// @EndUserText.quickInfo: 'Partner'
// @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual AdditionalPartnerName : abap.char( 100 ), // 2208 Partner Function | Adding Partner Name field to list report
//
//
// @Consumption.filter.hidden: true
// @UI.hidden: true
// @EndUserText.label: 'Partner Descr'
// @EndUserText.quickInfo: 'Partner Descr'
// @ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual AdditionalPartnerDetailText : abap.char( 255 ),
//
// @EndUserText.label: 'Project'
// @Semantics.text: true
// @Consumption.filter.hidden: true
// @UI.hidden: true
// @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
// _EnterpriseProject.ProjectDescription,
// --_EnterpriseProjectElement._Project.ProjectDescription,
// //_EngProjItem1._EngagementProject.EngagementProjectName as ProjectDescription,
//
//
// @UI: { lineItem: [{position: 40, importance: #HIGH }], selectionField: [{ position: 30 }] }
// @EndUserText.label: 'Billing Method'
// @EndUserText.quickInfo: 'Billing Method'
// @Consumption.valueHelpDefinition: [{ entity:{ name:'C_BillingMethodVH',element: 'BillingPlanUsageCategoryName' }}]
// _SalesDocItemBillPlan._BillingPlanUsageCategory._Text.BillingPlanUsageCategoryName as BillingPlanUsageCategoryName : localized,
//
// @UI.hidden: true
// @Consumption.filter.hidden: true
// _SalesDocItemBillPlan.BillingPlanUsageCategory as BillingPlanUsageCategory,
// //BillingPlanUsageCategory,
//
// @EndUserText.label: 'Document Currency'
// @UI.hidden: true
// @Semantics.currencyCode: true
// @Consumption.filter.hidden: true
// DocumentCurrency,
//
// @UI.hidden: true
// @Consumption.filter.hidden: true
// TransactionCurrency as TransactionCurrency,
//
// //@UI.hidden: true
// @EndUserText.label: 'Billed'
// @EndUserText.quickInfo: 'Billed'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// @Consumption.filter.hidden: true
// BilledRevenueAmtInDocCrcy,
//
// //@UI.hidden: true
// @UI: { lineItem: [ { position: 90, importance: #HIGH } ] }
// @EndUserText.label: 'Unbilled'
// @EndUserText.quickInfo: 'Unbilled'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// @Consumption.filter.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// virtual UnbilledRevnAmtInDocCrcy : abap.curr( 23, 2 ),
//
// @UI.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.filter.transformedBy: 'ABAP:ZTMP_VIRTUALFIELDS_FILTER'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// virtual ProjBillgElmntEntrIsCancelled : abap.char( 1 ),
//
// //@UI: { lineItem: [ { position: 100, importance: #HIGH } ] }
// @UI.hidden: true
// @EndUserText.label: 'Billing in Process'
// @EndUserText.quickInfo: 'Billing in Process'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// @Consumption.filter.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// virtual BillgReqdRevenueAmtInDocCrcy : abap.curr( 23, 2 ),
// //BillgReqdRevenueAmtInDocCrcy,
//
// @UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ], lineItem: [ { position: 50, importance: #HIGH } ] }
// @EndUserText.label: 'Profit Center'
// @EndUserText.quickInfo: 'Profit Center'
// @Consumption.valueHelpDefinition: [{entity: {name: 'C_PrftCtrValHelp', element:'ProfitCenter'}}]
// @ObjectModel.text.element : ['ProfitCenterText']
// @Consumption.semanticObject: 'ProfitCenter'
// //@ObjectModel.foreignKey.association: '_ProfitCenter'
// //@Consumption.filter.hidden: true
// //@UI.textArrangement: #TEXT_ONLY "Commenting to solve UI inconsistency issue
// //_WBSElement.ProfitCenter,
// WBSElementProfitCenter as ProfitCenter,
//
// @UI.hidden: true
// _ProfitCenterName.ProfitCenterName as ProfitCenterText,
//
// //@UI.hidden: true
// //_ProfitCenterText.ProfitCenterName as ProfitCenterName,
// //@UI.hidden: true
// //_CostCenter._Text[1:Language = $session.system_language].CostCenterName as CostCenterName,
//
// @UI: { lineItem: [ { position: 60, importance: #HIGH } ] }
// @EndUserText.label: 'Planned Revenue'
// @EndUserText.quickInfo: 'Planned Revenue'
// @Semantics.amount.currencyCode: 'TransactionCurrency'
// @Consumption.filter.hidden: false
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// virtual PlndRevnAmt : abap.curr( 23, 2 ),
// //_PrjBlgElmPlndRevnAmt.PlndRevnAmt,
//
// @UI: { lineItem: [ { position: 70, importance: #HIGH } ] }
// @EndUserText.label: 'Cap'
// @EndUserText.quickInfo: 'Cap'
// @Consumption.filter.hidden: true
// @Semantics.amount.currencyCode: 'TransactionCurrency'
// _SalesOrderItem.CappedNetAmount,
//
//
// @UI: { lineItem: [ { position: 140, importance: #HIGH } ] }
// @EndUserText.label: 'Written Off'
// @EndUserText.quickInfo: 'Written Off'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// @Consumption.filter.hidden: true
// WrittenOffRevenueAmtInDocCrcy,
//
// @Feature: 'SD_PROJ_BILLG_DOWN_PAYMENT'
// //@UI: { lineItem: [ { position: 150, importance: #HIGH, exclude: true } ] }
// @EndUserText.label: 'Down Payment Requested'
// @EndUserText.quickInfo: 'Down Payment Requested'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// @Consumption.filter.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual RequestedDownPaytAmtInDocCrcy : abap.curr( 23, 2 ),
//
// @Feature: 'SD_PROJ_BILLG_DOWN_PAYMENT'
// //@UI: { lineItem: [ { position: 160, importance: #HIGH, exclude: true } ] }
// @EndUserText.label: 'Down Payment Received'
// @EndUserText.quickInfo: 'Down Payment Received'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// @Consumption.filter.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual ReceivedDownPaytAmtInDocCrcy : abap.curr( 23, 2 ),
//
//
// @EndUserText.label: 'Billing Item Description'
// @EndUserText.quickInfo: 'Billing Item Description'
// @UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ] }
// @Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.85}
// //_WBSElement.WBSDescription as WBSElementDescription,
// _SalesOrderItem.SalesOrderItemText as WBSElementDescription,
//
// //Introducing another customer name field as customer name is not coming in project popover after introducing contact card
// //@Consumption.filter.hidden: true
// //_EngProjItem1._EngagementProject._Customer.CustomerName as StoreCustomerName,
// //_Customer.CustomerName as StoreCustomerName,
// //CustomerName,
//
// //@UI.hidden: true
// //_EngProjItem1._EngagementProject.ProjectStartDate as PlannedStartDate,
// //PlannedStartDate,
// //ProjectStartDate,
//
//
// //@UI.hidden: true
// //_EngProjItem1._EngagementProject.ProjectEndDate as PlannedEndDate,
// //PlannedEndDate,
// //ProjectEndDate,
//
// @UI.hidden: true
// //_EngProjItem1._EngagementProject.EngagementProjectServiceOrg as ServiceOrganizationUnit,
// _EnterpriseProject.EnterpriseProjectServiceOrg as ServiceOrganizationUnit,
// --_EnterpriseProjectElement._Project.EnterpriseProjectServiceOrg as ServiceOrganizationUnit,
// //EngagementProjectServiceOrg as ServiceOrganizationUnit,
//
// @UI.hidden: true
// //_EngProjItem1._EngagementProject.CostCenter as CostCenter,
// _EnterpriseProject.ResponsibleCostCenter,
// --_EnterpriseProjectElement._Project.ResponsibleCostCenter,
//
//
// @UI.hidden: true
// //_EngProjItem1._EngagementProject.ProfitCenter as CostCenterProfitCenter,
// ProfitCenter as CostCenterProfitCenter,
//
// --hierarchical value help for profit centre realization
// @UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ] }
// @Consumption.valueHelpDefinition: [{ entity:{ name: 'I_ProfitCenterHierarchyVH', element: 'ProfitCenterHierarchy' } }]
// @Consumption.filter.selectionType: #SINGLE
// @ObjectModel.filter.transformedBy: 'ABAP:CL_FINS_HIER_VH_FLTR_TRANSFORM'
// ProfitCenterHierarchy,
//
// @UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ] }
// @Consumption.filter.hidden: true
// @ObjectModel.filter.transformedBy: 'ABAP:CL_FINS_HIER_VH_FLTR_TRANSFORM'
// ProfitCenterHierarchyNode,
//
//
// //@UI.hidden: true
// @EndUserText.label: 'Service Organization'
// @EndUserText.quickInfo: 'Service Organization'
// @UI: { fieldGroup: [ { groupLabel: 'Details of Billing Element', qualifier: 'BillingItemInfo' } ] }
// @Consumption.valueHelpDefinition: [
// { entity: { name: 'I_EngmntProjSrvcOrgStdVH',
// element: 'EngagementProjectServiceOrg' }
// }]
// @ObjectModel.text.element : ['EngmtProjectServiceOrgName']
// @Consumption.semanticObject: 'ServiceOrganization'
// //@UI.textArrangement: #TEXT_ONLY "Commenting to solve UI inconsistency issue
// _EnterpriseProject.EnterpriseProjectServiceOrg as EngagementProjectServiceOrg,
// --_EnterpriseProjectElement._Project.EnterpriseProjectServiceOrg as EngagementProjectServiceOrg,
//
//
// @EndUserText.label: 'Last Billing Date'
// @EndUserText.quickInfo: 'Last Billing Date'
// @Consumption.filter.selectionType: #INTERVAL
// @Consumption.filter.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// virtual BillingDate : abap.dats(8),
//
// @UI.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// virtual BillingPlanItemUsage : abap.char( 1 ),
//
// @EndUserText.label: 'Planned PrePayment'
// @EndUserText.quickInfo: 'Planned PrePayment'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// @Consumption.filter.hidden:true
// //@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// PlndPrepaymentAmtInProjCrcy,
// //virtual PlndPrepaymentAmtInProjCrcy : abap.curr( 23 , 2 ),
//
// //@UI.hidden: true
// @EndUserText.label: 'Estimated Actuals'
// @EndUserText.quickInfo: 'Estimated Actuals'
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// @Consumption.filter.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.sort.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS_SORT'
// virtual NetValueAmountInDocCurrency : abap.curr( 23 , 2 ),
//
//
// @UI.hidden: true
// BillingPlan,
//
// @UI.hidden: true // 2208 Partner Function | expose SalesOrder
// SalesOrder,
//
// @UI.hidden: true
// SalesOrderItem, // 2208 Partner Function | expose SalesOrderItem
//
// //@UI.hidden: true
// //@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// //PlndPrepaymentAmtInProjCrcy,
// //@UI.hidden: true
// //@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// //RcvdPrepaymentAmtInProjCrcy,
// //@UI.hidden: true
// //@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// //ReqdPrepaymentAmtInDocCrcy,
//
// --@UI.hidden: true
// --_SalesOrderItem.ItemBillingBlockReason,
//
// --@UI.hidden: true
// --_SalesOrderItem._SalesOrder.HeaderBillingBlockReason,
//
// // Adding Admin Fields
// @UI.hidden: true
// @EndUserText.label: 'Created By User'
// @EndUserText.quickInfo: 'Created By User'
// ProjBillgElmntCreatedByUser,
//
// @UI.hidden: true
// @EndUserText.label: 'Created At Time'
// @EndUserText.quickInfo: 'Created At Time'
// ProjBillgElmntCreatedAtDteTme,
//
// @UI.hidden: true
// @EndUserText.label: 'Last Changed By User'
// @EndUserText.quickInfo: 'Last Changed By User'
// ProjBillgElmntLastChgdByUser,
//
// @UI.hidden: true
// @EndUserText.label: 'Last Changed At Time'
// @EndUserText.quickInfo: 'Last Changed At Time'
// ProjBillgElmntLastChgdAtDteTme,
//
// @Consumption.filter.selectionType: #SINGLE
// @EndUserText.label: 'Planned Prepayments'
// @EndUserText.quickInfo: 'Planned Prepayments'
// @UI: { selectionField: [{ position: 220 }] }
// @Consumption.valueHelpDefinition: [
// { entity: { name: 'C_PrjBlgElmPlndPpaytFilterVH',
// element: 'DomainValueLow' }
// }]
// @Consumption.filter.defaultValue: ''
// @ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// //@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual PrjBlgElmPlndPpaytFilter : pbe_prepaymentfilter,
//
//
// //@UI.hidden: true
// //_SalesOrder.SalesOrganization,
// //@UI.hidden: true
// //_SalesOrder.DistributionChannel,
// //@UI.hidden: true
// //_SalesOrder.OrganizationDivision,
// //UI.hidden: true
// //_SalesOrder.SoldToParty,
//
// //_SalesOrderItem._SalesOrder.
// //_SalesBillingPlanDueDate,
//
// //@UI.hidden: true
// _ProjectBillingDocDetails,
// // @UI: {lineItem: [ { position: 100, label: 'Number of Situations'} ] }
// //EngagementProjectStage as SitnNumberOfInstances,
// //_CustProjSlsOrdItmBillgPlnItm,
//
// _ProjectBillingElementEntry : redirected to composition child C_ProjectBillingElementEntryTP,
// _WBSElement,
// //@UI.hidden: true
// //Below field cannot be Moved up
// //_EngProjItem1._EngagementProject.EngagementProjectStage as EngagementProjectStage,
// @UI.hidden: true
// @EndUserText.label: 'Organization Description'
// @EndUserText.quickInfo: 'Organization Description'
// @Consumption.filter.hidden: true
// _ServiceOrganizationText.EngmtProjectServiceOrgName as EngmtProjectServiceOrgName,
// //_EngProjItem1._EngagementProject._EngagementProjectServiceOrg._Text.EngmtProjectServiceOrgName as EngmtProjectServiceOrgName :localized,
// _PrjBlgElmEntrForPrepayment,
// //@UI.hidden:true
// //_EngProjItem1._EngagementProject.ControllingArea as ControllingArea,
// //@UI.hidden: true
//
// --used in association
// @UI.hidden: true
// ControllingArea,
//
// --used in profit center hierarchy filters
// _ProfitCenterHierLeafNode,
//
// --@Consumption.filter.hidden: true
// --_MyProjectBillingElements,
// @Consumption.filter.hidden: true
// _CustomerContactCard,
//
// @Consumption.filter.hidden: true
// _ProjBillgElmntPartnerDetails,
//
// @Consumption.filter.hidden: true
// _ProjBillgCustomerProjectDets,
//
// @Consumption.filter.hidden: true
// _ProjBillgSlsItmBillgPlnDuDte,
//
// @Consumption.filter.hidden: true
// _ProjBillingInProcessDetails,
//
// @UI.hidden: true
// PrjBlgElmPlndPrepaymentIsOvrd,
//
// //@UI.hidden: true
// //_BusinessPartner.BPCustMultiAddrIsActive as BPCustMultiAddrIsActive,
//
// //@UI.hidden: true
// //@ObjectModel.virtualElementCalculatedBy:'ABAP:CL_BP_MULTI_ADDR_BF_CALC_EXIT'
// //virtual BPCustMultiAddrIsActive : abap_boolean,
//
// //@Consumption.filter.hidden: false
// //@ObjectModel.filter.enabled: true
// //@Consumption.filter.selectionType: #SINGLE
// //@Consumption.filter.multipleSelections: false
// //@EndUserText.label: 'Planned Prepayments'
// //@EndUserText.quickInfo: 'Planned Prepayments'
// //@UI: { selectionField: [{ position: 220 }] }
// //@ObjectModel.filter.transformedBy: 'ABAP:CL_PBE_VIRTUALFIELDS'
// //PlndPrepaymentAmtInProjCrcy,
// --Is used on UI for Project Search help
// //@UI.hidden: true
// //_WBSElement._ResponsibleCostCenter[1:ValidityEndDate >= $projection.projectstartdate and ValidityStartDate <= $projection.projectstartdate]._Text[1:Language = $session.system_language].CostCenterName,
// //_CostCenter._Text[1:Language = $session.system_language].CostCenterName
// //_CostCenterText.CostCenterName
//
// @UI.hidden: true
// @ObjectModel.virtualElementCalculatedBy:'ABAP:CL_PBE_VIRTUALFIELDS'
// virtual ProjBillingReqIsAuthorized : boolean,
//
// @UI.hidden: true
// ProjBillingProfile as ProjBillingProfile,
// @UI.hidden: true
// ProjectBillingCategory as ProjectBillingCategory
//
// //@Consumption.filter.hidden: true
// //_SalesItemCompletePartner,
// //@Consumption.filter.hidden: true
// //_NonStdPartner
//}
//where
// BillingBlockStatus <> 'C'
// and BillingBlockReason is initial
// and SalesDocumentRjcnReason is initial
//
//
// and(
// ProcessingStatus = '10'
// or ProcessingStatus = '40'
// )
//
// and SDDocumentRejectionStatus <> 'C'
// and OverallBillingBlockStatus <> 'C'
// and HeaderBillingBlockReason is initial
//
// and ProjectBillingCategory <> 'ICBL' // Excluding ICO PBEs
//// and EngagementProjectStage = '10'
//// and BillingPlanUsageCategory != ' '
//// and ( BillingPlanUsageCategory = '1' or BillingPlanUsageCategory = '2' or BillingPlanUsageCategory = '3' or BillingPlanUsageCategory = '4' )
////where EngagementProjectStage = 'P003'
////where _ProjectBillingElementEntry.OriginalTotalQuantity > 0