P_PurchaseOrderPriceVariance

DDL: P_PURCHASEORDERPRICEVARIANCE SQL: PMMPOPRICEVAR Type: view CONSUMPTION Package: ODATA_MM_ANALYTICS

Purchase Order Price Variance

P_PurchaseOrderPriceVariance is a Consumption CDS View that provides data about "Purchase Order Price Variance" in SAP S/4HANA. It reads from 3 data sources (I_CalendarDate, I_PurchaseOrder, I_PurchaseOrderItem) and exposes 37 fields with key fields PurchaseOrder, PurchaseOrderItem. It has 1 association to related views. Part of development package ODATA_MM_ANALYTICS.

Data Sources (3)

SourceAliasJoin Type
I_CalendarDate CalendarDate left_outer
I_PurchaseOrder PurchaseOrder inner
I_PurchaseOrderItem PurchaseOrderItem from

Parameters (4)

NameTypeDefault
P_DisplayCurrency displaycurrency
P_Material matnr
P_StartDate vdm_validitystart
P_EndDate vdm_validityend

Associations (1)

CardinalityTargetAliasCondition
[0..1] I_BR_Domain _DocText $projection.DocNumber = _DocText.DomainValue and _DocText.Name = 'MM_A_DOCTYPE' and _DocText.Language = $session.system_language

Annotations (6)

NameValueLevelField
AbapCatalog.sqlViewName PMMPOPRICEVAR view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #CHECK view
VDM.viewType #CONSUMPTION view
VDM.private true view
AccessControl.personalData.blocking #NOT_REQUIRED view

Fields (37)

KeyFieldSource TableSource FieldDescription
KEY PurchaseOrder I_PurchaseOrder PurchaseOrder
KEY PurchaseOrderItem
PurchaseOrderType I_PurchaseOrder PurchaseOrderType
Supplier I_PurchaseOrder Supplier
PurchasingOrganization I_PurchaseOrder PurchasingOrganization
PurchasingGroup I_PurchaseOrder PurchasingGroup
CompanyCode I_PurchaseOrder CompanyCode
PurchaseOrderDate I_PurchaseOrder PurchaseOrderDate
MaterialGroup I_PurchaseOrderItem MaterialGroup
Material I_PurchaseOrderItem Material
Plant I_PurchaseOrderItem Plant
PurchaseContract I_PurchaseOrderItem PurchaseContract
PurchasingInfoRecord I_PurchaseOrderItem PurchasingInfoRecord
DocNumber
PurchaseOrderQuantityUnit I_PurchaseOrderItem PurchaseOrderQuantityUnit
OrderQuantity I_PurchaseOrderItem OrderQuantity
DocumentCurrency I_PurchaseOrderItem DocumentCurrency
DisplayCurrency
NetAmount NetAmount
OrderQuantityendasQuantityInBaseUnit
NetPriceQuantity I_PurchaseOrderItem NetPriceQuantity
OrderPriceUnit OrderPriceUnit
_Plant _Plant
_PurchasingGroup _PurchasingGroup
_PurchasingOrganization _PurchasingOrganization
_Supplier _Supplier
_CompanyCode I_PurchaseOrder _CompanyCode
_Material _Material
_MaterialGroup _MaterialGroup
CalendarYear CalendarYear
CalendarQuarter CalendarQuarter
CalendarMonth CalendarMonth
CalendarWeek CalendarWeek
YearQuarter YearQuarter
YearMonth YearMonth
YearWeek YearWeek
_DocText _DocText
@AbapCatalog.sqlViewName: 'PMMPOPRICEVAR'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@VDM.viewType : #CONSUMPTION
@VDM.private: true
@AccessControl.personalData.blocking: #NOT_REQUIRED
define view P_PurchaseOrderPriceVariance 

  with parameters
    P_DisplayCurrency           : displaycurrency,
    P_Material                  : matnr,
    P_StartDate       : vdm_validitystart,
    P_EndDate         : vdm_validityend
    

    
  as select from I_PurchaseOrderItem         as PurchaseOrderItem
  
  inner join      I_PurchaseOrder            as PurchaseOrder     on PurchaseOrder.PurchaseOrder = PurchaseOrderItem.PurchaseOrder
  
  left outer join I_CalendarDate             as CalendarDate on PurchaseOrderDate = CalendarDate.CalendarDate
  
  association [0..1] to I_BR_Domain  as _DocText   on $projection.DocNumber               = _DocText.DomainValue
                                                           and _DocText.Name              = 'MM_A_DOCTYPE'
                                                           and _DocText.Language          = $session.system_language
  
    
{
   key PurchaseOrder.PurchaseOrder,
   key cast( PurchaseOrderItem.PurchaseOrderItem as vdm_purchaseorderitem )         as  PurchaseOrderItem,
 
      PurchaseOrder.PurchaseOrderType,
      
      /* Supplier */
      PurchaseOrder.Supplier,
      
      /* Org Data */
      PurchaseOrder.PurchasingOrganization,
      PurchaseOrder.PurchasingGroup,
      PurchaseOrder.CompanyCode,

      PurchaseOrder.PurchaseOrderDate,
      
      /* Item Data */
      PurchaseOrderItem.MaterialGroup,
      PurchaseOrderItem.Material,
      PurchaseOrderItem.Plant,
      PurchaseOrderItem.PurchaseContract,
      PurchaseOrderItem.PurchasingInfoRecord,
      
      cast('3' as mm_a_doctype ) as DocNumber,
      
      PurchaseOrderItem.PurchaseOrderQuantityUnit,
      PurchaseOrderItem.OrderQuantity,

      PurchaseOrderItem.DocumentCurrency,
      cast( :P_DisplayCurrency as displaycurrency )                                as  DisplayCurrency,
  //    NetPriceAmount,

      
      cast( case when PurchaseOrderItem.DocumentCurrency != '' or PurchaseOrderDate != ''
                  then  cast( currency_conversion(
                                         amount             => NetPriceAmount,
                                         source_currency    => PurchaseOrderItem.DocumentCurrency,
                                         target_currency    => :P_DisplayCurrency,
                                         exchange_rate_date => PurchaseOrderDate,
                                         exchange_rate_type => 'M',
                                         error_handling => 'FAIL_ON_ERROR'
                                      ) as purchase_order_net_amount ) 
        
                  else        0
               end                                    as mm_pur_ana_mat_avg_price ) as  NetPriceAmount,
      NetAmount,  
//      cast( case when PurchaseOrderItem.DocumentCurrency != '' or PurchaseOrder.PurchaseOrderDate != ''

//                  then  cast( currency_conversion(

//                                         amount             => NetPriceAmount,

//                                         source_currency    => PurchaseOrderItem.DocumentCurrency,

//                                         target_currency    => :P_DisplayCurrency,

//                                         exchange_rate_date => PurchaseOrder.PurchaseOrderDate,

//                                         exchange_rate_type => 'M',

//                                         error_handling => 'FAIL_ON_ERROR'

//                                      ) as purchase_order_net_amount ) 

//        

//                  else        0

//               end as purchase_order_net_amount )                                    as  NetPriceAmount,  

//               

      cast(currency_conversion(
                         amount             => NetAmount,
                         source_currency    => PurchaseOrderItem.DocumentCurrency,
                         target_currency    => :P_DisplayCurrency,
                         exchange_rate_date => PurchaseOrder.PurchaseOrderDate,
                         exchange_rate_type => 'M',
                         error_handling => 'FAIL_ON_ERROR'
                       )
      as purchase_order_net_amount )                                           as  PurOrdNetAmountInDisplayCrcy,
      
      case
           when OrdPriceUnitToOrderUnitDnmntr = 0
                then 0 
                else DIVISION(OrderPriceUnitToOrderUnitNmrtr, OrdPriceUnitToOrderUnitDnmntr, 1 ) * PurchaseOrderItem.OrderQuantity
                end
        as QuantityInBaseUnit,
        
       PurchaseOrderItem.NetPriceQuantity,
       OrderPriceUnit,
      
      _Plant,
      _PurchasingGroup,
      _PurchasingOrganization,
      _Supplier,
      PurchaseOrder._CompanyCode,
      _Material,
      _MaterialGroup,

      /* Dates */
      CalendarYear,
      CalendarQuarter,
      CalendarMonth,
      CalendarWeek,
      YearQuarter,
      YearMonth,
      YearWeek,
      _DocText


}
where PurchaseOrderItem._PurchaseOrder.PurchasingDocumentDeletionCode = ''
  and PurchaseOrderItem._PurchaseOrder.ReleaseIsNotCompleted          = ''
  and PurchaseOrderItem._PurchaseOrder.PurchasingCompletenessStatus   = ''
  and PurchaseOrderItem.PurchasingDocumentDeletionCode                = ''
  and Material = $parameters.P_Material
  and PurchaseOrderDate between $parameters.P_StartDate and $parameters.P_EndDate
  and not ( PurchaseOrderItem.IsStatisticalItem = 'X' and PurchaseOrderItem.Material= '' )