P_MaterialPriceVariance

DDL: P_MATERIALPRICEVARIANCE SQL: PMMMATLPRCVAR Type: view CONSUMPTION

Material Price Variance

P_MaterialPriceVariance is a Consumption CDS View that provides data about "Material Price Variance" in SAP S/4HANA. It reads from 8 data sources and exposes 221 fields with key fields PurchasingDocument, PurchasingDocumentItem, ChangeDocument, MaterialDocumentYear, MaterialDocumentItem.

Data Sources (8)

SourceAliasJoin Type
I_MaterialPlant MaterialPlant inner
I_Material MatMaster inner
P_InfoRecordPriceVariance1 P_InfoRecordPriceVariance1 union_all
P_InvoicePriceVariance P_InvoicePriceVariance union_all
P_MatlMovingAvgPrice P_MatlMovingAvgPrice union_all
P_PurchaseOrderPriceVariance P_PurchaseOrderPriceVariance union_all
P_PurContractPriceVariance2 P_PurContractPriceVariance2 from
I_ProductPlant ProductPlant inner

Parameters (4)

NameTypeDefault
P_DisplayCurrency displaycurrency
P_Material matnr
P_StartDate vdm_validitystart
P_EndDate vdm_validityend

Annotations (7)

NameValueLevelField
AbapCatalog.sqlViewName PMMMATLPRCVAR view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #CHECK view
VDM.viewType #CONSUMPTION view
VDM.private true view
AccessControl.personalData.blocking #NOT_REQUIRED view
EndUserText.label Material Price Variance view

Fields (221)

KeyFieldSource TableSource FieldDescription
KEY PurchasingDocument
KEY PurchasingDocumentItem
KEY ChangeDocument ChangeDocument
KEY MaterialDocumentYear
KEY MaterialDocumentItem
KEY PurchasingInfoRecordCategory
KEY PurchasingGroup PurchasingGroup
FormattedDocumentKey
PurchaseContract
PurchaseContractItem
PurchaseOrder
PurchaseOrderItem
Invoice
PurchasingInfoRecord
InvoiceDate
CreationDate CreationDate
DocumentChangeDate DocumentChangeDate
PurchasingOrganization PurchasingOrganization
Supplier Supplier
Material Material
MaterialGroup MaterialGroup
CompanyCode CompanyCode
Plant Plant
DocNumber PurchaseContract
PurchasingDocumentType
DocumentCurrency Currency
DisplayCurrency
PurchaseOrderQuantityUnit
OrderQuantity
OrderQuantityUnit OrderQuantityUnit
TargetQuantity TargetQuantity
TargetAmount
InvoiceAmtInDisplayCurrency
PurOrdNetAmountInDisplayCrcy
NetPriceAmount
NetPriceQuantity
OrderPriceUnit OrderPriceUnit
QuantityInBaseUnit
BOMHasHeaderInfoRecord
NumberOfContractChanges NumberOfChanges
NumberOfPriceChanges
NumberOfPurchaseOrders
P_DisplayCurrency
P_Material
P_StartDate
KEY PurchasingDocumentItem
KEY ChangeDocument
KEY MaterialDocumentYear MaterialDocumentYear
KEY MaterialDocumentItem
KEY PurchasingInfoRecordCategory
KEY PurchasingGroup PurchasingGroup
FormattedDocumentKey Invoice
PurchaseContract
PurchaseContractItem
PurchaseOrder
PurchaseOrderItem
Invoice
PurchasingInfoRecord
InvoiceDate InvoiceDate
CreationDate
DocumentChangeDate
PurchasingOrganization PurchasingOrganization
Supplier Supplier
Material Material
MaterialGroup MaterialGroup
CompanyCode CompanyCode
Plant Plant
DocNumber DocNumber
PurchasingDocumentType
DocumentCurrency Currency
DisplayCurrency DisplayCurrency
PurchaseOrderQuantityUnit PurchaseOrderQuantityUnit
OrderQuantity
OrderQuantityUnit
TargetQuantity
ReleaseOrderItemNetAmount
TargetAmount
InvoiceAmtInDisplayCurrency
PurOrdNetAmountInDisplayCrcy
NetPriceAmount
NetPriceQuantity
OrderPriceUnit OrderPriceUnit
QuantityInBaseUnit
BOMHasHeaderInfoRecord
NumberOfContractChanges
NumberOfPriceChanges
NumberOfPurchaseOrders
P_DisplayCurrency
P_Material
P_StartDate
KEY PurchasingDocumentItem
KEY ChangeDocument
KEY MaterialDocumentYear
KEY MaterialDocumentItem
KEY PurchasingInfoRecordCategory
KEY PurchasingGroup PurchasingGroup
FormattedDocumentKey
PurchaseContract
PurchaseContractItem
PurchaseOrder
PurchaseOrderItem PurchaseOrderItem
Invoice
PurchasingInfoRecord
InvoiceDate
CreationDate PurchaseOrderDate
DocumentChangeDate
PurchasingOrganization PurchasingOrganization
Supplier Supplier
Material Material
MaterialGroup MaterialGroup
CompanyCode CompanyCode
Plant Plant
DocNumber DocNumber
PurchasingDocumentType
DocumentCurrency DocumentCurrency
DisplayCurrency DisplayCurrency
PurchaseOrderQuantityUnit PurchaseOrderQuantityUnit
OrderQuantity OrderQuantity
OrderQuantityUnit
TargetQuantity
TargetAmount
InvoiceAmtInDisplayCurrency
PurOrdNetAmountInDisplayCrcy PurOrdNetAmountInDisplayCrcy
NetPriceAmount
NetPriceQuantity
OrderPriceUnit OrderPriceUnit
QuantityInBaseUnit
BOMHasHeaderInfoRecord
NumberOfContractChanges
NumberOfPriceChanges
NumberOfPurchaseOrders
P_DisplayCurrency
P_Material
P_StartDate
KEY PurchasingDocumentItem
KEY ChangeDocument ChangeDocument
KEY MaterialDocumentYear
KEY MaterialDocumentItem
KEY PurchasingInfoRecordCategory PurchasingInfoRecordCategory
KEY PurchasingGroup PurchasingGroup
FormattedDocumentKey PurchasingInfoRecord
PurchaseContract
PurchaseContractItem
PurchaseOrder
PurchaseOrderItem
Invoice
PurchasingInfoRecord
InvoiceDate
CreationDate CreationDate
DocumentChangeDate DocumentChangeDate
PurchasingOrganization PurchasingOrganization
Supplier Supplier
Material Material
MaterialGroup MaterialGroup
CompanyCode CompanyCode
Plant Plant
DocNumber PurchasingInfoRecord
PurchasingDocumentType
DocumentCurrency DocumentCurrency
DisplayCurrency
PurchaseOrderQuantityUnit
OrderQuantity
OrderQuantityUnit
TargetQuantity
ReleaseOrderItemNetAmount
TargetAmount
InvoiceAmtInDisplayCurrency
PurOrdNetAmountInDisplayCrcy
NetPriceAmount
NetPriceQuantity
OrderPriceUnit PurchaseOrderPriceUnit
QuantityInBaseUnit QuantityInBaseUnit
BOMHasHeaderInfoRecord BOMHasHeaderInfoRecord
NumberOfContractChanges
NumberOfPriceChanges NumberOfPriceChanges
NumberOfPurchaseOrders
P_Material
P_StartDate
KEY PurchasingDocumentItem
KEY ChangeDocument
KEY MaterialDocumentYear
KEY MaterialDocumentItem
KEY PurchasingInfoRecordCategory
PurchasingGroup I_ProductPlant PurchasingGroup
FormattedDocumentKey MovingAvg Material
PurchaseContract
PurchaseContractItem
PurchaseOrder
PurchaseOrderItem
Invoice
PurchasingInfoRecord
InvoiceDate
CreationDate CreationDate
DocumentChangeDate CreationDate
PurchasingOrganization
Supplier
Material MovingAvg Material
MaterialGroup
CompanyCode CompanyCode
Plant I_MaterialPlant Plant
DocNumber
PurchasingDocumentType
DocumentCurrency
DisplayCurrency
PurchaseOrderQuantityUnit
OrderQuantity
OrderQuantityUnit
TargetQuantity
ReleaseOrderItemNetAmount
TargetAmount
InvoiceAmtInDisplayCurrency
PurOrdNetAmountInDisplayCrcy
NetUnitPriceAmount
NetPriceQuantity
OrderPriceUnit I_Material MaterialBaseUnit
QuantityInBaseUnit
BOMHasHeaderInfoRecord
NumberOfContractChanges
NumberOfPriceChanges
NumberOfPurchaseOrders
InvoiceQuantity
@AbapCatalog.sqlViewName: 'PMMMATLPRCVAR'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@VDM.viewType : #CONSUMPTION
@VDM.private: true
@AccessControl.personalData.blocking: #NOT_REQUIRED
@EndUserText.label: 'Material Price Variance'
@AbapCatalog.viewEnhancementCategory: [#PROJECTION_LIST,#UNION] // Added for extensibility


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

  as select from P_PurContractPriceVariance2 (  P_DisplayCurrency : $parameters.P_DisplayCurrency,
                                                P_Material : $parameters.P_Material , P_StartDate: $parameters.P_StartDate,
                                                         P_EndDate: $parameters.P_EndDate )
{

  key cast( PurchaseContract as mm_a_purchasing_document )                   as PurchasingDocument,
  key cast( PurchaseContractItem as ebelp )                                  as PurchasingDocumentItem,
  key ChangeDocument,

  key cast('' as gjahr )                                                     as MaterialDocumentYear,
  key cast('' as mm_a_material_doc_item )                                    as MaterialDocumentItem,
  key cast('' as esokz )                                                     as PurchasingInfoRecordCategory,
  key PurchasingGroup,
      concat( PurchaseContract, concat( '/' , PurchaseContractItem) )        as FormattedDocumentKey,
      cast(PurchaseContract as vdm_purchasecontract )                        as PurchaseContract,
      cast(PurchaseContractItem as vdm_purchasecontractitem)                 as PurchaseContractItem,

      cast('' as vdm_purchaseorder)                                          as PurchaseOrder,
      cast('' as vdm_purchaseorderitem )                                     as PurchaseOrderItem,

      cast('' as fikz_reginv_invoice )                                       as Invoice,

      cast( cast( '' as abap.char(10)) as mm_a_info_record preserving type ) as PurchasingInfoRecord,

      cast('' as budat )                                                     as InvoiceDate,
      CreationDate,
      DocumentChangeDate,

      PurchasingOrganization,

      Supplier,

      Material,

      MaterialGroup,

      CompanyCode,

      Plant,

      PurchaseContract                                                       as DocNumber,
      //    @Semantics.text: true

      cast( '01' as mm_pur_ana_de_doctype )                                  as PurchasingDocumentType,

      Currency                                                               as DocumentCurrency,
      @Semantics.currencyCode: true
      :P_DisplayCurrency                                                     as DisplayCurrency,

      cast('' as bstme)                                                      as PurchaseOrderQuantityUnit,
      cast(0 as bstmg)                                                       as OrderQuantity,

      OrderQuantityUnit,
      TargetQuantity,
      cast( case when TotalNumberOfChanges > 0
                  then division( ReleaseOrderItemNetAmount , TotalNumberOfChanges, 3 )
                 else ReleaseOrderItemNetAmount
      end as mm_a_release_order_net_amount )                                 as ReleaseOrderItemNetAmount,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast( PurchaseContractTargetAmount as mm_a_target_amount )             as TargetAmount,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as mm_pur_ana_de_invoice_amount)                                as InvoiceAmtInDisplayCurrency,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as purchase_order_net_amount)                                   as PurOrdNetAmountInDisplayCrcy,

      @DefaultAggregation:#AVG
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      fltp_to_dec( ContractNetPriceAmount as mm_pur_ana_mat_avg_price )      as NetPriceAmount,

      @DefaultAggregation:#AVG
      @Semantics.amount.currencyCode: 'DisplayCurrency'

      cast(
           case
           when NetPriceQuantity = 0
           then 0
           else
                division( fltp_to_dec( ContractNetPriceAmount as mm_pur_ana_mat_net_unit_price ) , NetPriceQuantity , 5 )
           end
                as mm_pur_ana_mat_net_unit_price )                           as NetUnitPriceAmount,

      cast( NetPriceQuantity as abap.quan( 13, 3 ) )                         as NetPriceQuantity,
      OrderPriceUnit,
      cast(0 as abap.quan(13,3) )                                            as QuantityInBaseUnit,
      cast('' as abap.char(1)) as BOMHasHeaderInfoRecord,
      NumberOfChanges                                                        as NumberOfContractChanges,
      cast( 0 as abap.int4)                                                  as NumberOfPriceChanges,

      @DefaultAggregation: #SUM
      cast(0 as mm_a_numberofpurchaseorders )                                as NumberOfPurchaseOrders,
      cast(0 as menge_d)                                                     as InvoiceQuantity
      //cast (0 as verpr) as MaterialMovingAvgPrice

}
union all select from P_InvoicePriceVariance ( P_DisplayCurrency : $parameters.P_DisplayCurrency,
                                               P_Material : $parameters.P_Material, P_StartDate: $parameters.P_StartDate,
                                                         P_EndDate: $parameters.P_EndDate )

{
  key cast( Invoice as mm_a_purchasing_document )                           as PurchasingDocument,
  key cast( '' as ebelp)                                                    as PurchasingDocumentItem,
  key ''                                                                    as ChangeDocument,

  key MaterialDocumentYear,
  key cast( MaterialDocumentItem as mm_a_material_doc_item )                as MaterialDocumentItem,

  key cast('' as esokz )                                                    as PurchasingInfoRecordCategory,
  key PurchasingGroup,

      Invoice                                                               as FormattedDocumentKey,

      cast('' as vdm_purchasecontract)                                      as PurchaseContract,
      cast('' as vdm_purchasecontractitem )                                 as PurchaseContractItem,

      cast('' as vdm_purchaseorder)                                         as PurchaseOrder,
      cast('' as vdm_purchaseorderitem )                                    as PurchaseOrderItem,

      cast(Invoice as fikz_reginv_invoice)                                  as Invoice,

      cast(cast( '' as abap.char(10)) as mm_a_info_record preserving type ) as PurchasingInfoRecord,

      InvoiceDate,
      cast( InvoiceDate as budat )                                          as CreationDate,
      cast( InvoiceDate as budat )                                          as DocumentChangeDate,

      PurchasingOrganization,

      Supplier,

      Material,

      MaterialGroup,

      CompanyCode,

      Plant,

      DocNumber,
      //@Semantics.text: true

      cast( '03' as mm_pur_ana_de_doctype )                                 as PurchasingDocumentType,

      Currency                                                              as DocumentCurrency,
      @Semantics.currencyCode: true
      DisplayCurrency,

      PurchaseOrderQuantityUnit,
      cast(0 as bstmg)                                                      as OrderQuantity,

      cast( '' as bstme )                                                   as OrderQuantityUnit,
      cast( 0 as ktmng )                                                    as TargetQuantity,
      cast( 0 as mm_a_release_order_net_amount )                            as ReleaseOrderItemNetAmount,
      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as mm_a_target_amount)                                         as TargetAmount,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast( InvoiceAmtInDisplayCurrency as mm_pur_ana_de_invoice_amount)    as InvoiceAmtInDisplayCurrency,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as purchase_order_net_amount)                                  as PurOrdNetAmountInDisplayCrcy,

      @Semantics.amount.currencyCode: 'DisplayCurrency'
      @DefaultAggregation:#AVG
      cast( NetPriceAmount as mm_pur_ana_mat_avg_price    )                 as NetPriceAmount,

      @DefaultAggregation:#AVG
      @Semantics.amount.currencyCode: 'DisplayCurrency'

      cast( division( InvoiceAmtInDisplayCurrency,
                 QtyInPurchaseOrderPriceUnit,
                 3
       ) as mm_pur_ana_mat_net_unit_price    )

                                                                            as NetUnitPriceAmount,

      cast( QtyInPurchaseOrderPriceUnit as abap.quan( 13, 3 ) )             as NetPriceQuantity,
      OrderPriceUnit,
      cast(0 as abap.quan(13,3) )                                           as QuantityInBaseUnit,
      cast('' as abap.char(1)) as BOMHasHeaderInfoRecord,
      cast(0 as abap.int4)                                                  as NumberOfContractChanges,
      cast( 0 as abap.int4)                                                 as NumberOfPriceChanges,
      @DefaultAggregation: #SUM
      cast(0 as mm_a_numberofpurchaseorders )                               as NumberOfPurchaseOrders,
      Quantity                                                              as InvoiceQuantity
      //cast (0 as verpr) as MaterialMovingAvgPrice


}

union all select from P_PurchaseOrderPriceVariance (  P_DisplayCurrency : $parameters.P_DisplayCurrency,
                                                      P_Material : $parameters.P_Material, P_StartDate: $parameters.P_StartDate,
                                                         P_EndDate: $parameters.P_EndDate           )

{

  key cast( PurchaseOrder as mm_a_purchasing_document )                     as PurchasingDocument,
  key cast( PurchaseOrderItem as ebelp )                                    as PurchasingDocumentItem,
  key ''                                                                    as ChangeDocument,

  key cast('' as gjahr )                                                    as MaterialDocumentYear,
  key cast('' as mm_a_material_doc_item )                                   as MaterialDocumentItem,
  key cast('' as esokz )                                                    as PurchasingInfoRecordCategory,

  key PurchasingGroup,

      concat( PurchaseOrder, concat( '/' , PurchaseOrderItem) )             as FormattedDocumentKey,

      cast('' as vdm_purchasecontract)                                      as PurchaseContract,
      cast('' as vdm_purchasecontractitem )                                 as PurchaseContractItem,

      cast(PurchaseOrder as vdm_purchaseorder)                              as PurchaseOrder,
      PurchaseOrderItem,


      cast('' as fikz_reginv_invoice )                                      as Invoice,


      cast(cast( '' as abap.char(10)) as mm_a_info_record preserving type ) as PurchasingInfoRecord,

      cast('' as budat )                                                    as InvoiceDate,
      PurchaseOrderDate                                                     as CreationDate,
      cast(PurchaseOrderDate as budat )                                     as DocumentChangeDate,

      PurchasingOrganization,

      Supplier,

      Material,

      MaterialGroup,

      CompanyCode,

      Plant,

      DocNumber,
      //@Semantics.text: true

      cast( '04' as mm_pur_ana_de_doctype )                                 as PurchasingDocumentType,

      DocumentCurrency,
      @Semantics.currencyCode: true
      DisplayCurrency,

      PurchaseOrderQuantityUnit,
      OrderQuantity,

      cast( '' as bstme )                                                   as OrderQuantityUnit,
      cast( 0 as ktmng )                                                    as TargetQuantity,

      cast( case when PurchaseContract = '' and PurchasingInfoRecord = ''
                  then PurOrdNetAmountInDisplayCrcy
                 else 0 end
       as mm_a_release_order_net_amount )                                   as ReleaseOrderItemNetAmount,
      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as mm_a_target_amount)                                         as TargetAmount,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as mm_pur_ana_de_invoice_amount)                               as InvoiceAmtInDisplayCurrency,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      PurOrdNetAmountInDisplayCrcy,

      @Semantics.amount.currencyCode: 'DisplayCurrency'
      @DefaultAggregation:#AVG
      cast( NetPriceAmount as mm_pur_ana_mat_avg_price )                    as NetPriceAmount,

      @DefaultAggregation:#AVG
      @Semantics.amount.currencyCode: 'DisplayCurrency'

      cast( case
            when NetPriceQuantity = 0
                 then 0
                 else
                   division( NetPriceAmount,
                 NetPriceQuantity, 5 )
                 end as mm_pur_ana_mat_net_unit_price )                     as NetUnitPriceAmount,

      cast( NetPriceQuantity as abap.quan( 13, 3 ) )                        as NetPriceQuantity,
      OrderPriceUnit,
      cast(0 as abap.quan(13,3) )                                           as QuantityInBaseUnit,
       cast('' as abap.char(1)) as BOMHasHeaderInfoRecord,
      cast(0 as abap.int4)                                                  as NumberOfContractChanges,
      cast( 0 as abap.int4)                                                 as NumberOfPriceChanges,
      @DefaultAggregation: #SUM
      cast(1 as mm_a_numberofpurchaseorders )                               as NumberOfPurchaseOrders,
      cast(0 as menge_d)                                                    as InvoiceQuantity
      //cast (0 as verpr) as MaterialMovingAvgPrice


}

union all select from P_InfoRecordPriceVariance1 (  P_DisplayCurrency : $parameters.P_DisplayCurrency,
                                                    P_Material : $parameters.P_Material, P_StartDate: $parameters.P_StartDate,
                                                         P_EndDate: $parameters.P_EndDate )

{
  key cast( PurchasingInfoRecord as mm_a_purchasing_document )         as PurchasingDocument,
  key cast( '' as ebelp )                                              as PurchasingDocumentItem,
  key ChangeDocument,

  key cast('' as gjahr )                                               as MaterialDocumentYear,
  key cast('' as mm_a_material_doc_item )                              as MaterialDocumentItem,
  key PurchasingInfoRecordCategory,

  key PurchasingGroup,

      PurchasingInfoRecord                                             as FormattedDocumentKey,

      cast('' as vdm_purchasecontract)                                 as PurchaseContract,
      cast('' as vdm_purchasecontractitem )                            as PurchaseContractItem,

      cast('' as vdm_purchaseorder)                                    as PurchaseOrder,
      cast('' as vdm_purchaseorderitem )                               as PurchaseOrderItem,

      cast('' as fikz_reginv_invoice )                                 as Invoice,

      cast( PurchasingInfoRecord as mm_a_info_record preserving type ) as PurchasingInfoRecord,

      cast('' as budat )                                               as InvoiceDate,
      CreationDate,
      DocumentChangeDate,

      PurchasingOrganization,

      Supplier,

      Material,

      MaterialGroup,

      CompanyCode,

      Plant,

      PurchasingInfoRecord                                             as DocNumber,
      cast( '02' as mm_pur_ana_de_doctype )                            as PurchasingDocumentType,

      DocumentCurrency,
      @Semantics.currencyCode: true
      :P_DisplayCurrency                                               as DisplayCurrency,

      cast('' as bstme)                                                as PurchaseOrderQuantityUnit,
      cast(0 as bstmg)                                                 as OrderQuantity,

      cast( '' as bstme )                                              as OrderQuantityUnit,
      cast( 0 as ktmng )                                               as TargetQuantity,
      //      cast( case when TotalNumberOfChanges > 0

      //                  then  division( ReleaseOrderItemNetAmount, TotalNumberOfChanges, 3 )

      //                else ReleaseOrderItemNetAmount end  as mm_a_release_order_net_amount ) as ReleaseOrderItemNetAmount,

      cast( 0 as mm_a_release_order_net_amount )                       as ReleaseOrderItemNetAmount,
      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as mm_a_target_amount)                                    as TargetAmount,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as mm_pur_ana_de_invoice_amount)                          as InvoiceAmtInDisplayCurrency,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as purchase_order_net_amount)                             as PurOrdNetAmountInDisplayCrcy,

      @Semantics.amount.currencyCode: 'DisplayCurrency'
      @DefaultAggregation:#AVG
      cast(NetPrice as mm_pur_ana_mat_avg_price )                      as NetPriceAmount,

      @DefaultAggregation:#AVG
      @Semantics.amount.currencyCode: 'DisplayCurrency'

      cast(
            case
            when MaterialPriceUnitQty = 0
            then 0
            else
                division( NetPrice, MaterialPriceUnitQty, 5 )
            end   as mm_pur_ana_mat_net_unit_price )                   as NetUnitPriceAmount,

      cast( MaterialPriceUnitQty as abap.quan( 13, 3 ) )               as NetPriceQuantity,
      PurchaseOrderPriceUnit                                           as OrderPriceUnit,
      QuantityInBaseUnit,
      
      BOMHasHeaderInfoRecord,
      cast(0 as abap.int4)                                             as NumberOfContractChanges,
      NumberOfPriceChanges,
      @DefaultAggregation: #SUM
      cast(0 as mm_a_numberofpurchaseorders )                          as NumberOfPurchaseOrders,
      cast(0 as menge_d)                                               as InvoiceQuantity
      // cast (0 as verpr) as MaterialMovingAvgPrice


}

union all select from P_MatlMovingAvgPrice ( P_Material : $parameters.P_Material , P_StartDate: $parameters.P_StartDate,
                                                         P_EndDate: $parameters.P_EndDate ) as MovingAvg
  inner join          I_ProductPlant                                                        as ProductPlant  on  MovingAvg.ValuationArea = ProductPlant.Plant
                                                                                                             and ProductPlant.Product    = MovingAvg.Material
  inner join          I_MaterialPlant                                                       as MaterialPlant on  MovingAvg.Material      = MaterialPlant.Material
                                                                                                             and MovingAvg.ValuationArea = MaterialPlant.Plant
  inner join          I_Material                                                            as MatMaster     on MatMaster.Material = MaterialPlant.Material


{
  key cast( '' as mm_a_purchasing_document )                                as PurchasingDocument,
  key cast( '' as ebelp )                                                   as PurchasingDocumentItem,
  key ''                                                                    as ChangeDocument,

  key cast('' as gjahr )                                                    as MaterialDocumentYear,
  key cast('' as mm_a_material_doc_item )                                   as MaterialDocumentItem,
  key cast('' as esokz )                                                    as PurchasingInfoRecordCategory,

      ProductPlant.PurchasingGroup                                          as PurchasingGroup,

      MovingAvg.Material                                                    as FormattedDocumentKey,

      cast('' as vdm_purchasecontract)                                      as PurchaseContract,
      cast('' as vdm_purchasecontractitem )                                 as PurchaseContractItem,

      cast('' as vdm_purchaseorder)                                         as PurchaseOrder,
      cast('' as vdm_purchaseorderitem )                                    as PurchaseOrderItem,

      cast('' as fikz_reginv_invoice )                                      as Invoice,
      cast(cast( '' as abap.char(10)) as mm_a_info_record preserving type ) as PurchasingInfoRecord,


      cast('' as budat )                                                    as InvoiceDate,
      CreationDate,
      CreationDate                                                          as DocumentChangeDate,

      cast ('' as ekorg)                                                    as PurchasingOrganization,

      cast ('' as elifn)                                                    as Supplier,

      MovingAvg.Material,

      cast ('' as matkl)                                                    as MaterialGroup,

      CompanyCode,

      //      ValuationArea as Plant,

      MaterialPlant.Plant                                                   as Plant,

      cast('00' as mm_a_doctype )                                           as DocNumber,
      cast( '00' as mm_pur_ana_de_doctype )                                 as PurchasingDocumentType,

      cast( :P_DisplayCurrency as displaycurrency )                         as DocumentCurrency,
      @Semantics.currencyCode: true
      :P_DisplayCurrency                                                    as DisplayCurrency,

      cast('' as bstme)                                                     as PurchaseOrderQuantityUnit,
      cast(0 as bstmg)                                                      as OrderQuantity,

      cast( '' as bstme )                                                   as OrderQuantityUnit,
      cast( 0 as ktmng )                                                    as TargetQuantity,
      cast( 0 as mm_a_release_order_net_amount )                            as ReleaseOrderItemNetAmount,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as mm_a_target_amount)                                         as TargetAmount,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as mm_pur_ana_de_invoice_amount)                               as InvoiceAmtInDisplayCurrency,

      @DefaultAggregation:#SUM
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast(0 as purchase_order_net_amount)                                  as PurOrdNetAmountInDisplayCrcy,

      @Semantics.amount.currencyCode: 'DisplayCurrency'
      @DefaultAggregation:#AVG
      currency_conversion( amount => MovingPrice,
                source_currency => Currency,
                target_currency => $parameters.P_DisplayCurrency,
                exchange_rate_date => CreationDate,
                exchange_rate_type => 'M',
                error_handling => 'SET_TO_NULL' )                           as NetPriceAmount,

      @DefaultAggregation:#AVG
      @Semantics.amount.currencyCode: 'DisplayCurrency'
      cast( 0 as mm_pur_ana_mat_net_unit_price )                            as NetUnitPriceAmount,


      cast( MaterialPriceUnitQty as abap.quan( 13, 3 ) )                    as NetPriceQuantity,
      //      cast('' as bbprm)

      MatMaster.MaterialBaseUnit                                            as OrderPriceUnit,
      cast(0 as abap.quan(13,3) )                                           as QuantityInBaseUnit,
       cast('' as abap.char(1)) as BOMHasHeaderInfoRecord,
      cast(0 as abap.int4)                                                  as NumberOfContractChanges,
      cast( 0 as abap.int4)                                                 as NumberOfPriceChanges,
      @DefaultAggregation: #SUM
      cast(0 as mm_a_numberofpurchaseorders )                               as NumberOfPurchaseOrders,
      cast(0 as menge_d)                                                    as InvoiceQuantity


}