P_RASchedDistinctItem

DDL: P_RASCHEDDISTINCTITEM SQL: PRASCHEDDSTCTITM Type: view COMPOSITE

P_RASchedDistinctItem is a Composite CDS View in SAP S/4HANA. It reads from 2 data sources (I_RAPerformanceObligation, P_RASchedAllocatedAmtPerPerd) and exposes 54 fields with key fields PerformanceObligation, FiscalYear, FiscalPeriod, RevenueAccountingContract.

Data Sources (2)

SourceAliasJoin Type
I_RAPerformanceObligation RAPerformanceObligation inner
P_RASchedAllocatedAmtPerPerd RevAcctgAllocatedAmtPerPerd from

Annotations (7)

NameValueLevelField
AbapCatalog.sqlViewName PRASCHEDDSTCTITM view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
ClientHandling.algorithm #SESSION_VARIABLE view
AccessControl.authorizationCheck #NOT_REQUIRED view
VDM.viewType #COMPOSITE view
VDM.private true view

Fields (54)

KeyFieldSource TableSource FieldDescription
KEY PerformanceObligation P_RASchedAllocatedAmtPerPerd PerformanceObligation
KEY FiscalYear P_RASchedAllocatedAmtPerPerd FiscalYear
KEY FiscalPeriod P_RASchedAllocatedAmtPerPerd FiscalPeriod
KEY RevenueAccountingContract P_RASchedAllocatedAmtPerPerd RevenueAccountingContract
RAHigherLevelPerfOblgn I_RAPerformanceObligation RAHigherLevelPerfOblgn
FiscalYearPeriod
CompanyCode I_RAPerformanceObligation CompanyCode
PerformanceObligationClass I_RAPerformanceObligation PerformanceObligationClass
PerformanceObligationStartDate I_RAPerformanceObligation PerformanceObligationStartDate
PerformanceObligationEndDate I_RAPerformanceObligation PerformanceObligationEndDate
PerfObligationDeferralMethod I_RAPerformanceObligation PerfObligationDeferralMethod
PerfOblgnStartDateType I_RAPerformanceObligation PerfOblgnStartDateType
PerfOblgnIsFullyFulfilled I_RAPerformanceObligation PerfOblgnIsFullyFulfilled
PerfOblgnIsFinallyInvoiced I_RAPerformanceObligation PerfOblgnIsFinallyInvoiced
PerfOblgnEventType I_RAPerformanceObligation PerfOblgnEventType
PerfOblgnFulfillmentType I_RAPerformanceObligation PerfOblgnFulfillmentType
Customer I_RAPerformanceObligation Customer
RAPerfOblgnDistinctType I_RAPerformanceObligation RAPerfOblgnDistinctType
SalesDocumentCurrency I_RAPerformanceObligation SalesDocumentCurrency
PerfOblgnEffectiveQuantityUnit I_RAPerformanceObligation PerfOblgnEffectiveQuantityUnit
PerfOblgnContractualQtyUnit I_RAPerformanceObligation PerfOblgnContractualQtyUnit
RatioUnit
PerUnitSSPriceInSlsDocCrcy I_RAPerformanceObligation PerUnitSSPriceInSlsDocCrcy
SSPriceInSalesDocCrcy I_RAPerformanceObligation SSPriceInSalesDocCrcy
PerfOblgnContractualQuantity I_RAPerformanceObligation PerfOblgnContractualQuantity
AllocatedPriceInSalesDocCrcy
ContractualPrcInSlsDocCrcy
CumltvEffectiveAmtInSlsDocCrcy
TolEffectiveCostPerPerd P_RASchedAllocatedAmtPerPerd TolEffectiveCostPerPerd
PerPerdInvoicedAmtInSlsDocCrcy
DeltaRecognizedAmtInSlsDocCrcy
RecgdCatchUpAmtInSlsDocCrcy
PostedRevnInSlsDocCrcy
DeltaRecgdCostInSlsDocCrcy
PostedCostInSlsDocCrcy
UpToCurPeriodFulfilledQty
PerfOblgnEffectiveQuantity
PerfOblgnPerPeriodFulfilledQty
PerfOblgnDeltaInvoicedQuantity
RevnAcctgSenderComponent
RevnAcctgOperationalDocument
RAOperationalDocumentItem
RANumberOfOperationalDocument
TotalEffectiveAmtInSlsDocCrcy P_RASchedAllocatedAmtPerPerd TotalEffectiveAmtInSlsDocCrcy
TolRecognizedAmtPerPerd P_RASchedAllocatedAmtPerPerd TolRecognizedAmtPerPerd
TolRecgdAmtCatchupPerPerd P_RASchedAllocatedAmtPerPerd TolRecgdAmtCatchupPerPerd
_PerfOblgnStartDateType I_RAPerformanceObligation _PerfOblgnStartDateType
_PerfObligationEventType I_RAPerformanceObligation _PerfObligationEventType
_FulfillmentType I_RAPerformanceObligation _FulfillmentType
_Customer I_RAPerformanceObligation _Customer
_PerfOblgnDistinctType I_RAPerformanceObligation _PerfOblgnDistinctType
_Currency I_RAPerformanceObligation _Currency
_PerfOblgnContractualQtyUnit I_RAPerformanceObligation _PerfOblgnContractualQtyUnit
_PerfOblgnEffectiveQtyUnit I_RAPerformanceObligation _PerfOblgnEffectiveQtyUnit
@AbapCatalog.sqlViewName: 'PRASCHEDDSTCTITM'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey:true
@ClientHandling.algorithm: #SESSION_VARIABLE
@AccessControl.authorizationCheck: #NOT_REQUIRED
@VDM.viewType: #COMPOSITE
@VDM.private: true

//@EndUserText.label: 'Revenue Schedule: Distinct/Compound POB'

define view P_RASchedDistinctItem
//Cumulative Amount

as select from P_RASchedAllocatedAmtPerPerd as RevAcctgAllocatedAmtPerPerd
//POB

inner join I_RAPerformanceObligation as RAPerformanceObligation
  on RAPerformanceObligation.PerformanceObligation = RevAcctgAllocatedAmtPerPerd.PerformanceObligation
  and RAPerformanceObligation.RevenueAccountingContract = RevAcctgAllocatedAmtPerPerd.RevenueAccountingContract
//Delta Amount

left outer to one join P_RASchedPerfOblgnAmtPerd as RAPerfOblgnTotalAmtPerPeriod
  on RevAcctgAllocatedAmtPerPerd.PerformanceObligation = RAPerfOblgnTotalAmtPerPeriod.PerformanceObligation
  and RevAcctgAllocatedAmtPerPerd.FiscalYear = RAPerfOblgnTotalAmtPerPeriod.FiscalYear
  and RevAcctgAllocatedAmtPerPerd.FiscalPeriod = RAPerfOblgnTotalAmtPerPeriod.FiscalPeriod
  and RevAcctgAllocatedAmtPerPerd.RevenueAccountingContract = RAPerfOblgnTotalAmtPerPeriod.RevenueAccountingContract
//Cumulative Quantity  

left outer to one join P_RASchedCumltvPerfOblgnQtyPer as RACumFulfilledQtyPerPerd
  on RevAcctgAllocatedAmtPerPerd.PerformanceObligation = RACumFulfilledQtyPerPerd.PerformanceObligation
  and RevAcctgAllocatedAmtPerPerd.FiscalYear = RACumFulfilledQtyPerPerd.FiscalYear 
  and RevAcctgAllocatedAmtPerPerd.FiscalPeriod = RACumFulfilledQtyPerPerd.FiscalPeriod      
  and RevAcctgAllocatedAmtPerPerd.RevenueAccountingContract = RACumFulfilledQtyPerPerd.RevenueAccountingContract    
//Delta Quantity  

left outer to one join P_RASchedPerfOblgnQtyPerd as RAInvcAndFulfilledQtyPerPerd  
  on RAInvcAndFulfilledQtyPerPerd.PerformanceObligation = RevAcctgAllocatedAmtPerPerd.PerformanceObligation
  and RAInvcAndFulfilledQtyPerPerd.FiscalYear = RevAcctgAllocatedAmtPerPerd.FiscalYear  
  and RAInvcAndFulfilledQtyPerPerd.FiscalPeriod = RevAcctgAllocatedAmtPerPerd.FiscalPeriod  
  and RAInvcAndFulfilledQtyPerPerd.RevenueAccountingContract = RevAcctgAllocatedAmtPerPerd.RevenueAccountingContract  
//Posted Amount

left outer to one join P_RASchedPerfOblgnPostdAmtPerd as RAPerfOblgnPostedRevnPerPerd  
  on RevAcctgAllocatedAmtPerPerd.PerformanceObligation = RAPerfOblgnPostedRevnPerPerd.PerformanceObligation
  and RevAcctgAllocatedAmtPerPerd.FiscalYear = RAPerfOblgnPostedRevnPerPerd.FiscalYear   
  and RevAcctgAllocatedAmtPerPerd.FiscalPeriod = RAPerfOblgnPostedRevnPerPerd.FiscalPeriod
  and RevAcctgAllocatedAmtPerPerd.RevenueAccountingContract = RAPerfOblgnPostedRevnPerPerd.RevenueAccountingContract    
  
{
/*======Key===============================================*/  
  key RevAcctgAllocatedAmtPerPerd.PerformanceObligation,
  key RevAcctgAllocatedAmtPerPerd.FiscalYear,
  key RevAcctgAllocatedAmtPerPerd.FiscalPeriod,
  key RevAcctgAllocatedAmtPerPerd.RevenueAccountingContract,  
  
/*======Associated Key====================================*/  
  RAPerformanceObligation.RAHigherLevelPerfOblgn,
  
  cast( concat(RevAcctgAllocatedAmtPerPerd.FiscalYear,RevAcctgAllocatedAmtPerPerd.FiscalPeriod) as fis_jahrper_conv )  as FiscalYearPeriod,
  cast(
    concat(RevAcctgAllocatedAmtPerPerd.FiscalPeriod,concat('.',RevAcctgAllocatedAmtPerPerd.FiscalYear)) 
    as fis_fiscalyearperiod_c) as FiscalYearPeriodCompoundText,
  
/*======POB Data==========================================*/
  RAPerformanceObligation.CompanyCode,
  RAPerformanceObligation.PerformanceObligationClass,
  RAPerformanceObligation.PerformanceObligationStartDate,
  RAPerformanceObligation.PerformanceObligationEndDate,
  RAPerformanceObligation.PerfObligationDeferralMethod,
  RAPerformanceObligation.PerfOblgnStartDateType,
  RAPerformanceObligation.PerfOblgnIsFullyFulfilled,
  RAPerformanceObligation.PerfOblgnIsFinallyInvoiced,
  RAPerformanceObligation.PerfOblgnEventType,
  RAPerformanceObligation.PerfOblgnFulfillmentType,
  RAPerformanceObligation.Customer,
  
//  @ObjectModel.foreignKey.association: 'RAPerformanceObligation._PerfOblgnDistinctType'

  RAPerformanceObligation.RAPerfOblgnDistinctType,

//UoM  

  @Semantics.currencyCode: true
  RAPerformanceObligation.SalesDocumentCurrency, 
  @Semantics.unitOfMeasure: true
  RAPerformanceObligation.PerfOblgnEffectiveQuantityUnit,    
  @Semantics.unitOfMeasure: true
  RAPerformanceObligation.PerfOblgnContractualQtyUnit,  
  @Semantics.unitOfMeasure: true      
  cast('%' as farr_quantity_unit ) as RatioUnit,   
  
//Price and Quantity  

  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  RAPerformanceObligation.PerUnitSSPriceInSlsDocCrcy,
  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  RAPerformanceObligation.SSPriceInSalesDocCrcy,    
  @Semantics.quantity.unitOfMeasure: 'PerfOblgnContractualQtyUnit'
  RAPerformanceObligation.PerfOblgnContractualQuantity,
  
/*======Cumulative Amount==========================================*/  
  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RevAcctgAllocatedAmtPerPerd.TotalEffectiveAmtInSlsDocCrcy as farr_allocated_amt) as AllocatedPriceInSalesDocCrcy,
  
  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RevAcctgAllocatedAmtPerPerd.TotalDocAmtContractual as farr_price preserving type) as ContractualPrcInSlsDocCrcy,  

  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RevAcctgAllocatedAmtPerPerd.TotalDocAmtAllocatedEffect as farr_corr_amt preserving type) as CumltvEffectiveAmtInSlsDocCrcy,
   
  @Semantics. amount.currencyCode : 'SalesDocumentCurrency'
  cast(RevAcctgAllocatedAmtPerPerd.TotalEffectiveAmtInSlsDocCrcy 
    - RevAcctgAllocatedAmtPerPerd.TolRecgdAmtCatchupPerPerd 
    - RevAcctgAllocatedAmtPerPerd.TolRecognizedAmtPerPerd 
    as farr_open_revenue) as RAOpenRevnInSlsDocCrcy,  
  
  //total cost

  RevAcctgAllocatedAmtPerPerd.TolEffectiveCostPerPerd,
  
  //Open Cost

  @Semantics. amount.currencyCode : 'SalesDocumentCurrency'
  cast(RevAcctgAllocatedAmtPerPerd.TolEffectiveCostPerPerd 
    - RevAcctgAllocatedAmtPerPerd.TolRecognizedCostPerPerd 
    as farr_open_cost) as RAOpenCostInSlsDocCrcy,  
  
/*======Delta Amount==========================================*/  
  //Delta Invoiced Amount

  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RAPerfOblgnTotalAmtPerPeriod.DeltaInvoicedAmtPerPerd as farr_cds_invoiced_amount preserving type) as PerPerdInvoicedAmtInSlsDocCrcy,
  //Delta Recognized Amount

  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RAPerfOblgnTotalAmtPerPeriod.DeltaRecognizedAmtPerPerd + RAPerfOblgnTotalAmtPerPeriod.DeltaRecgdAmtCatchupPerPerd as farr_recog_amt) as DeltaRecognizedAmtInSlsDocCrcy,
  //Delta Catch Up Amount

  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RAPerfOblgnTotalAmtPerPeriod.DeltaRecgdAmtCatchupPerPerd as farr_cds_rev_catchup_amt preserving type) as RecgdCatchUpAmtInSlsDocCrcy,
  //Delta Posted Amount

  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RAPerfOblgnPostedRevnPerPerd.TotalPostgAmtInSlsDocCrcy*-1 as farr_post_price) as PostedRevnInSlsDocCrcy,
  //Delta Recognized Cost

  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RAPerfOblgnTotalAmtPerPeriod.DeltaRecognizedCostPerPerd as farr_recog_cost) as DeltaRecgdCostInSlsDocCrcy,
  //Delta Posted Cost

  @Semantics.amount.currencyCode : 'SalesDocumentCurrency'
  cast(RAPerfOblgnPostedRevnPerPerd.TotalPostgCostInSlsDocCrcy as farr_post_cost) as PostedCostInSlsDocCrcy,

/*======Cumulative Quantity==========================================*/      
  //Cumulative Fulfilled Quantity

  @Semantics.quantity.unitOfMeasure: 'PerfOblgnEffectiveQuantityUnit'
  cast(RACumFulfilledQtyPerPerd.PerfOblgnCumltvFulfilledQty as farr_fulfilled_qty_to_cur_perd) as UpToCurPeriodFulfilledQty,

  //Cumulative Effective Quantity  

  @Semantics.quantity.unitOfMeasure: 'PerfOblgnEffectiveQuantityUnit'
  cast(RACumFulfilledQtyPerPerd.PerfOblgnCumltvEffectiveQty as farr_cds_effective_quantity) as PerfOblgnEffectiveQuantity,

/*======Delta Quantity==========================================*/
  //Delta Fulfilled Quantity

  @Semantics.quantity.unitOfMeasure: 'PerfOblgnEffectiveQuantityUnit'
  cast(RAInvcAndFulfilledQtyPerPerd.DeltaPerfOblgnFulfilledQty as farr_cds_fulfilled_quantity) as PerfOblgnPerPeriodFulfilledQty,
  
  //Delta Invoiced Quantity

  @Semantics.quantity.unitOfMeasure: 'PerfOblgnContractualQtyUnit'
  cast(RAInvcAndFulfilledQtyPerPerd.PerfOblgnDeltaInvoicedQuantity  as farr_cds_invoiced_quantity) as PerfOblgnDeltaInvoicedQuantity,
  
/*======Calculated Fields==========================================*/  
  //Revenue Fulfilled Progress = Recognized Revenue / Total Revenue

  @Semantics.quantity.unitOfMeasure: 'RatioUnit'
  cast(case RevAcctgAllocatedAmtPerPerd.TotalEffectiveAmtInSlsDocCrcy
    when 0 then 100
    else 100*round(division(RevAcctgAllocatedAmtPerPerd.TolRecognizedAmtPerPerd + RevAcctgAllocatedAmtPerPerd.TolRecgdAmtCatchupPerPerd, RevAcctgAllocatedAmtPerPerd.TotalEffectiveAmtInSlsDocCrcy, 6), 4)
  end as farr_fulfilled_rev_progress) as RecognizedRevnUpToCurPerdPct,

  //FulfilledQtyUpToCurPerdRatio = Cumulative Fulfilled Quantity / Effective Quantity

  @Semantics.quantity.unitOfMeasure: 'RatioUnit'
  cast(
    case RACumFulfilledQtyPerPerd.PerfOblgnCumltvEffectiveQty
    when 0 then 0
    else 100*round(division(RACumFulfilledQtyPerPerd.PerfOblgnCumltvFulfilledQty, RACumFulfilledQtyPerPerd.PerfOblgnCumltvEffectiveQty, 6), 4)
  end as farr_fulfilled_qty_progress) as FulfilledQtyUpToCurPerdRatio,
    
/*======DPC Fields==========================================*/  
  cast('' as farr_cds_rai_srcco) as RevnAcctgSenderComponent,
  cast('' as farr_operational_doc) as RevnAcctgOperationalDocument,
  cast('' as farr_item_id) as RAOperationalDocumentItem,
  cast(0 as farr_num_of_oprational_doc) as RANumberOfOperationalDocument,
  
/*======Additional Fields for Consumer==========================================*/  
  RevAcctgAllocatedAmtPerPerd.TotalEffectiveAmtInSlsDocCrcy,
  RevAcctgAllocatedAmtPerPerd.TolRecognizedAmtPerPerd,
  RevAcctgAllocatedAmtPerPerd.TolRecgdAmtCatchupPerPerd,
  
/*======Associated View=====================================*/  
//  RAPerformanceObligation._RevenueAccountingContract, 

  RAPerformanceObligation._PerfOblgnStartDateType,
  RAPerformanceObligation._PerfObligationEventType,
  RAPerformanceObligation._FulfillmentType,
  RAPerformanceObligation._Customer,  
  RAPerformanceObligation._PerfOblgnDistinctType,
  RAPerformanceObligation._Currency,  
  RAPerformanceObligation._PerfOblgnContractualQtyUnit,
  RAPerformanceObligation._PerfOblgnEffectiveQtyUnit
}
where RAPerformanceObligation.RAPerfOblgnDistinctType = 'D'   //Distinct

and RAPerformanceObligation.PerfOblgnIsSoftDeleted is initial


/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_RAPERFORMANCEOBLIGATION",
"P_RASCHEDALLOCATEDAMTPERPERD",
"P_RASCHEDCUMLTVPERFOBLGNQTYPER",
"P_RASCHEDPERFOBLGNAMTPERD",
"P_RASCHEDPERFOBLGNPOSTDAMTPERD",
"P_RASCHEDPERFOBLGNQTYPERD"
],
"ASSOCIATED":
[
"I_CURRENCY",
"I_CUSTOMER",
"I_RAPERFOBLGNDISTINCTTYPE",
"I_RAPERFOBLGNFLFMTTYPE",
"I_RAPERFOBLGNSTARTDATETYPE",
"I_RAPERFOBLIGATIONEVENTTYPE",
"I_UNITOFMEASURE"
],
"BASE":
[
"I_RAPERFORMANCEOBLIGATION"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/