P_MaterialPriceVariance
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)
| Source | Alias | Join 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)
| Name | Type | Default |
|---|---|---|
| P_DisplayCurrency | displaycurrency | |
| P_Material | matnr | |
| P_StartDate | vdm_validitystart | |
| P_EndDate | vdm_validityend |
Annotations (7)
| Name | Value | Level | Field |
|---|---|---|---|
| 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)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| 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
}
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA