P_ProjBillingInProcessDetails

DDL: P_PROJBILLINGINPROCESSDETAILS Type: view_entity TRANSACTIONAL

P view for Billing in Process details

P_ProjBillingInProcessDetails is a Transactional CDS View that provides data about "P view for Billing in Process details" in SAP S/4HANA. It reads from 4 data sources (I_ProjBillgReqApprvlStatusText, I_ProjBillgReqObjectLink, I_ProjectBillingRequest, I_ProjectBillingRequestItem) and exposes 8 fields with key fields ProjectBillingElementUUID, ProjectBillingRequest, BillingDocumentRequest. It has 1 association to related views.

Data Sources (4)

SourceAliasJoin Type
I_ProjBillgReqApprvlStatusText _ProjBillgReqApprvlStatusText inner
I_ProjBillgReqObjectLink _ProjBillgReqObjectLink from
I_ProjectBillingRequest _ProjectBillingRequest inner
I_ProjectBillingRequestItem _ProjectBillingRequestItem inner

Associations (1)

CardinalityTargetAliasCondition
[0..1] I_SalesDocItemBillingPlanItem _BillingPlanItem _PrjBlgElmEntrBillgPlnLink.BillingPlan = _BillingPlanItem.BillingPlan and _PrjBlgElmEntrBillgPlnLink.BillingPlanItem = _BillingPlanItem.BillingPlanItem

Annotations (7)

NameValueLevelField
AccessControl.authorizationCheck #NOT_REQUIRED view
EndUserText.label P view for Billing in Process details view
VDM.private true view
VDM.viewType #TRANSACTIONAL view
ObjectModel.usageType.serviceQuality #A view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #TRANSACTIONAL view

Fields (8)

KeyFieldSource TableSource FieldDescription
KEY ProjectBillingElementUUID I_ProjBillgReqObjectLink ReferencedObjectUUID
KEY ProjectBillingRequest I_ProjectBillingRequest ProjectBillingRequest
KEY BillingDocumentRequest _ProjectBillingElementEntrFlw BillingDocument
ProjBillgReqApprovalStatus I_ProjectBillingRequest ProjBillgReqApprovalStatus
ProjBillgReqApprovalStatusText I_ProjBillgReqApprvlStatusText ProjBillgReqApprovalStatusText
PrjBlgElmEntrDocBillgSts _ProjectBillingElementEntrFlw DocumentBillingStatus
PrjBlgElmEntrDocBillgStsText _PrjBlgElmEntrDocBillgStsTxt PrjBlgElmEntrDocBillgStsText
DocumentCurrency I_ProjectBillingRequestItem DocumentCurrency
@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