@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'P view for Billing in Process details'
@VDM.private: true
@VDM.viewType: #TRANSACTIONAL
@ObjectModel.usageType: {
serviceQuality: #A,
sizeCategory: #L,
dataClass: #TRANSACTIONAL
}
define view entity P_ProjBillingInProcessDetails
as select from I_ProjBillgReqObjectLink as _ProjBillgReqObjectLink
// left outer to one join P_ProjBillgReqDetails as _PbrDetails on _ProjBillgReqObjectLink.ProjectBillingRequestUUID = _PbrDetails.ProjectBillingRequestUUID
//
//
// left outer to one join P_PrjBlgBdrDetails as _PrjBlgBdrDetails on _PrjBlgBdrDetails.ProjectBillingRequest = _PbrDetails.ProjectBillingRequest
// and _PrjBlgBdrDetails.ProjectBillingElementUUID = _ProjBillgReqObjectLink.ReferencedObjectUUID
inner join I_ProjectBillingRequest as _ProjectBillingRequest on _ProjBillgReqObjectLink.ProjectBillingRequestUUID = _ProjectBillingRequest.ProjectBillingRequestUUID
inner join I_ProjectBillingRequestItem as _ProjectBillingRequestItem on _ProjectBillingRequestItem.ProjectBillingRequestUUID = _ProjectBillingRequest.ProjectBillingRequestUUID
// and _ProjBillgReqObjectLink.ReferencedObjectUUID = _ProjectBillingRequestItem.ProjectBillingElementUUID
inner join I_ProjBillgReqApprvlStatusText as _ProjBillgReqApprvlStatusText on _ProjBillgReqApprvlStatusText.Language = $session.system_language
and _ProjBillgReqApprvlStatusText.ProjBillgReqApprovalStatus = _ProjectBillingRequest.ProjBillgReqApprovalStatus
//Start of changes by Muthu - Commented association views are moved down to the P_PrjBlgBdrDetails view
// left outer to one join P_PrjBlgBdrDetails as _PrjBlgBdrDetails on _PrjBlgBdrDetails.ProjectBillingRequest = _ProjectBillingRequest.ProjectBillingRequest
// and _PrjBlgBdrDetails.ProjectBillingElementUUID = _ProjBillgReqObjectLink.ReferencedObjectUUID
left outer to one join I_ProjectBillingElementEntrFlw as _ProjectBillingElementEntrFlw on _ProjectBillingElementEntrFlw.ProjBillgElmntEntrItmUUID = _ProjectBillingRequestItem.ProjBillgElmntEntrItmUUID
and _ProjectBillingElementEntrFlw.ProjectBillingRequest = _ProjectBillingRequest.ProjectBillingRequest
// and _ProjectBillingElementEntrFlw.DocumentBillingStatus = 'A'
// and _ProjectBillingElementEntrFlw.BillingDocument is not initial
left outer to one join I_BillingDocumentItem as _BillingDocumentItem on _ProjectBillingElementEntrFlw.BillingDocument = _BillingDocumentItem.ReferenceSDDocument
and _ProjectBillingElementEntrFlw.BillingDocumentItem = _BillingDocumentItem.ReferenceSDDocumentItem
and _ProjectBillingElementEntrFlw.DocumentBillingStatus = 'C'
left outer to one join bseg on _BillingDocumentItem.BillingDocument = bseg.vbeln
left outer to one join I_PrjBlgElmEntrDocBillgStsTxt as _PrjBlgElmEntrDocBillgStsTxt on _PrjBlgElmEntrDocBillgStsTxt.Language = $session.system_language
and _PrjBlgElmEntrDocBillgStsTxt.DocumentBillingStatus = _ProjectBillingElementEntrFlw.DocumentBillingStatus
//End of changes by Muthu
left outer to one join I_PrjBlgElmEntrBillgPlnLink as _PrjBlgElmEntrBillgPlnLink on _ProjectBillingRequestItem.ProjBillgElmntEntrItmUUID = _PrjBlgElmEntrBillgPlnLink.ProjBillgElmntEntrItmUUID
association [0..1] to I_SalesDocItemBillingPlanItem as _BillingPlanItem on _PrjBlgElmEntrBillgPlnLink.BillingPlan = _BillingPlanItem.BillingPlan
and _PrjBlgElmEntrBillgPlnLink.BillingPlanItem = _BillingPlanItem.BillingPlanItem
{
// key _ProjBillgReqObjectLink.ReferencedObjectUUID as ProjectBillingElementUUID,
//
// key _PbrDetails.ProjectBillingRequest as ProjectBillingRequest,
//
// key _PrjBlgBdrDetails.BillingDocument as BillingDocumentRequest,
//
//
// _PbrDetails.ProjBillgReqApprovalStatus as ProjBillgReqApprovalStatus,
//
// _PbrDetails.ProjBillgReqApprovalStatusText as ProjBillgReqApprovalStatusText,
//
// _PrjBlgBdrDetails.DocumentBillingStatus as PrjBlgElmEntrDocBillgSts,
//
// _PrjBlgBdrDetails.PrjBlgElmEntrDocBillgStsText as PrjBlgElmEntrDocBillgStsText,
//
// // _PbrDetails.BillingPlanItemUsage as BillingPlanItemUsage,
//
// _PbrDetails.DocumentCurrency as DocumentCurrency,
//
// @Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
// case
// when _PbrDetails.ProjectBillingRequestStatus = 'P'
// then sum(_PbrDetails.NetAmount)
// when _PbrDetails.ProjectBillingRequestStatus = 'B' or _PbrDetails.ProjectBillingRequestStatus = 'I' or _PbrDetails.ProjectBillingRequestStatus = 'R'
// then _PrjBlgBdrDetails.NetAmount
// end as BillgReqdRevenueAmtInDocCrcy
key _ProjBillgReqObjectLink.ReferencedObjectUUID as ProjectBillingElementUUID,
key _ProjectBillingRequest.ProjectBillingRequest as ProjectBillingRequest,
key _ProjectBillingElementEntrFlw.BillingDocument as BillingDocumentRequest,
_ProjectBillingRequest.ProjBillgReqApprovalStatus as ProjBillgReqApprovalStatus,
_ProjBillgReqApprvlStatusText.ProjBillgReqApprovalStatusText as ProjBillgReqApprovalStatusText,
_ProjectBillingElementEntrFlw.DocumentBillingStatus as PrjBlgElmEntrDocBillgSts,
_PrjBlgElmEntrDocBillgStsTxt.PrjBlgElmEntrDocBillgStsText as PrjBlgElmEntrDocBillgStsText,
case
when _BillingPlanItem.BillingPlanItemUsage is initial or _BillingPlanItem.BillingPlanItemUsage is null
then ''
else
_BillingPlanItem.BillingPlanItemUsage
end as BillingPlanItemUsage,
_ProjectBillingRequestItem.DocumentCurrency as DocumentCurrency,
@Semantics: { amount : {currencyCode: 'DocumentCurrency'} }
case
// PBR in process : Service posting, not downpayment and wrtnoff
when _ProjectBillingRequest.ProjectBillingRequestStatus ='P' and _ProjectBillingRequestItem.OpenQuantity is not initial
and (_ProjectBillingRequestItem.ToBeWrittenOffQuantity is not initial or _ProjectBillingRequestItem.ToBeWrittenOffAmtInTransCrcy is not initial)
and (_BillingPlanItem.BillingPlanItemUsage is null or _BillingPlanItem.BillingPlanItemUsage <> '4')
then cast (cast(sum(_ProjectBillingRequestItem.OpenRevenueAmtInDocCrcy) as abap.fltp) -
cast(sum(_ProjectBillingRequestItem.OpenRevenueAmtInDocCrcy) as abap.fltp) / cast(sum(_ProjectBillingRequestItem.OpenQuantity) as abap.fltp) *
cast(sum(_ProjectBillingRequestItem.ToBePostponedQuantity) as abap.fltp) as abap.curr(23,2))
// PBR in process : Service posting, not downpayment and not wrtnoff
when _ProjectBillingRequest.ProjectBillingRequestStatus ='P' and _ProjectBillingRequestItem.OpenQuantity is not initial
and (_ProjectBillingRequestItem.ToBeWrittenOffQuantity is initial and _ProjectBillingRequestItem.ToBeWrittenOffAmtInTransCrcy is initial)
and (_BillingPlanItem.BillingPlanItemUsage is null or _BillingPlanItem.BillingPlanItemUsage <> '4')
then sum(_ProjectBillingRequestItem.BillableRevenueAmtInDocCrcy)
// PBR in process : Exp case and not downpayment
when _ProjectBillingRequest.ProjectBillingRequestStatus ='P' and _ProjectBillingRequestItem.OpenQuantity is initial
and (_BillingPlanItem.BillingPlanItemUsage is null or _BillingPlanItem.BillingPlanItemUsage <> '4')
then sum(_ProjectBillingRequestItem.OpenRevenueAmtInDocCrcy) - sum(_ProjectBillingRequestItem.ToBePostponedAmtInProjectCrcy)
// PBR in process : Downpayment
when _ProjectBillingRequest.ProjectBillingRequestStatus ='P' and _BillingPlanItem.BillingPlanItemUsage = '4'
then sum(_ProjectBillingRequestItem.BillableRevenueAmtInDocCrcy)
// BDR created
when _ProjectBillingRequest.ProjectBillingRequestStatus ='B' or _ProjectBillingRequest.ProjectBillingRequestStatus ='I' or _ProjectBillingRequest.ProjectBillingRequestStatus ='R'
then sum(_ProjectBillingElementEntrFlw.BillgReqdRevenueAmtInDocCrcy) //_PrjBlgBdrDetails.NetAmount // Testing by Muthu
end as BillgReqdRevenueAmtInDocCrcy
}
where
_ProjectBillingRequest.ProjectBillingRequestStatus = 'P'
or(
(
_ProjectBillingRequest.ProjectBillingRequestStatus = 'B'
or _ProjectBillingRequest.ProjectBillingRequestStatus = 'I'
or _ProjectBillingRequest.ProjectBillingRequestStatus = 'R'
)
and _ProjectBillingElementEntrFlw.BillingDocument is not initial
and
(
(
_ProjectBillingElementEntrFlw.BillingDocumentType = 'PDPR'
and(
_ProjectBillingElementEntrFlw.DocumentBillingStatus = 'A'
or _ProjectBillingElementEntrFlw.DocumentBillingStatus = 'C'
and(
bseg.augbl is initial
or bseg.augbl is null
)
)
)
or(
_ProjectBillingElementEntrFlw.BillingDocumentType <> 'PDPR'
and _ProjectBillingElementEntrFlw.DocumentBillingStatus = 'A'
)
)
)
group by
_ProjBillgReqObjectLink.ReferencedObjectUUID,
_ProjectBillingRequest.ProjectBillingRequest,
_ProjectBillingRequestItem.DocumentCurrency,
_ProjectBillingRequest.ProjectBillingRequestStatus,
_ProjectBillingRequestItem.ToBeWrittenOffAmtInTransCrcy,
_ProjectBillingRequestItem.ToBeWrittenOffQuantity,
_ProjectBillingRequestItem.OpenQuantity,
_BillingPlanItem.BillingPlanItemUsage,
_ProjectBillingRequest.ProjBillgReqApprovalStatus,
_ProjBillgReqApprvlStatusText.ProjBillgReqApprovalStatusText,
_ProjectBillingElementEntrFlw.BillingDocument,
_ProjectBillingElementEntrFlw.DocumentBillingStatus,
_PrjBlgElmEntrDocBillgStsTxt.PrjBlgElmEntrDocBillgStsText
// _PrjBlgBdrDetails.NetAmount,
// _PbrDetails.ProjectBillingRequest,
// _PbrDetails.ProjBillgReqApprovalStatus,
// _PbrDetails.ProjBillgReqApprovalStatusText,
// _PbrDetails.DocumentCurrency,
// _PbrDetails.ProjectBillingRequestStatus,
// _PrjBlgBdrDetails.DocumentBillingStatus,
// _PrjBlgBdrDetails.PrjBlgElmEntrDocBillgStsText,
// _PrjBlgBdrDetails.BillingDocument