C_PriceVarianceQuery

DDL: C_PRICEVARIANCEQUERY SQL: CMMSEBYPRICEQRY Type: view CONSUMPTION Package: ODATA_MM_ANALYTICS

Price Variance

C_PriceVarianceQuery is a Consumption CDS View that provides data about "Price Variance" in SAP S/4HANA. It reads from 1 data source (C_PriceVarianceCube) and exposes 44 fields with key field PurchaseOrderItem. It is used in 5 Fiori applications: Supplier Evaluation by Quantity (Version 2), Supplier Evaluation by Price (Version 2), Supplier Evaluation by Time (Version 2), .... Part of development package ODATA_MM_ANALYTICS.

Data Sources (1)

SourceAliasJoin Type
C_PriceVarianceCube C_PriceVarianceCube from

Parameters (4)

NameTypeDefault
P_DisplayCurrency displaycurrency
P_StartDate vdm_validitystart
P_EndDate vdm_validityend
P_DateFunction datefunctionid

Annotations (16)

NameValueLevelField
AbapCatalog.sqlViewName CMMSEBYPRICEQRY view
EndUserText.label Price Variance view
AbapCatalog.compiler.compareFilter true view
AccessControl.authorizationCheck #PRIVILEGED_ONLY view
AccessControl.personalData.blocking #NOT_REQUIRED view
VDM.viewType #CONSUMPTION view
OData.publish true view
Analytics.settings.maxProcessingEffort #MEDIUM view
ClientHandling.algorithm #SESSION_VARIABLE view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #L view
Analytics.query true view
AbapCatalog.preserveKey true view
ObjectModel.modelingPattern #ANALYTICAL_QUERY view
Metadata.ignorePropagatedAnnotations true view

Fiori Apps (5)

App IDApp NameTypeDescription
F1661A Supplier Evaluation by Quantity (Version 2) Analytical With the Supplier Evaluation by Quantity app, you can determine the quantity variance, which is based on the variance between the ordered quantity and delivered quantity of items. Both the excess and less delivered quantities are considered.
F1663A Supplier Evaluation by Price (Version 2) Analytical With the Supplier Evaluation by Price app, you can determine the score of a given supplier in an organization based on the variance in the price of ordered items and delivered items. The score is calculated over a period of one year and is based on the difference in the purchase order amount and invoice amount. Both the excess and less price are considered as variance.
F1664A Supplier Evaluation by Time (Version 2) Analytical You can use this app to determine the score of a given supplier in an organisation based on the difference in time between the ordered date of items and delivered date of items. The score is calculated over a period of 365 days. Both the late and earlier deliveries of items are considered as variance.
F2309A Supplier Evaluation by Quality (Version 2) Analytical With the Supplier Evaluation by Quality app, you can determine the scores for given suppliers based on the inspection lot.
F3295A Supplier Evaluation By Quality (for Quality Notification) (Version 2) Analytical

Supplier Evaluation by Quantity (Version 2)

Business Role: Strategic Buyer

With the Supplier Evaluation by Quantity app, you can determine the quantity variance, which is based on the variance between the ordered quantity and delivered quantity of items. Both the excess and less delivered quantities are considered. The role Strategic Buyer (SAP_BR_BUYER) is required to access the app. The score is determined over a period of 365 days. The KPI is displayed in the following views: •By Supplier•By Purchasing Group•By Purchasing Organization•By Material Group•Document•Trend

Supplier Evaluation by Price (Version 2)

Business Role: Strategic Buyer

This new app is a replacement for the app , which is planned to be deprecated with SAP S/4HANA Cloud 2102. We recommend that you start using this new app instead of the old app Supplier Evaluation by Quality (Deprecated). SAP Fiori ID for this app is F3295A. You can now view number of purchase orders and number of purchase order items with this app.

Supplier Evaluation by Time (Version 2)

Business Role: Strategic Buyer

You can use this app to determine the score of a given supplier in an organization based on the difference in time between the ordered date of items and delivered date of items. The score is calculated over a period of 365 days. Both the late and earlier deliveries of items are considered as variance. The role Strategic Buyer (SAP_BR_BUYER) is required to access the role. The KPI is displayed in the following views: •By Supplier•By Purchasing Group•By Purchasing Organization•By Material Group•Document•Trend

Supplier Evaluation by Quality (Version 2)

Business Role: Strategic Buyer

This app determines the score of a supplier in an organization based on the weighted average of the quantity, price, and time variances. The score is calculated over a period of 365 days. It combines scores from the weighted hard facts available from the different criteria (price, time, and quantity), and the soft facts available from questionnaire results. The role Strategic Buyer (SAP_BR_BUYER) is required to access the app.

Supplier Evaluation By Quality (for Quality Notification) (Version 2)

Business Role: Strategic Buyer

With this app you can evaluate suppliers based on score that is calculated on the basis of quality complaints received. You can identify the suppliers with less received complaint notifications and thus with higher quality evaluation score. This helps you to determine the suppliers with the best performance and reliability. This app can also help you to decide which supplier to select if the purchasing conditions such as quality and price of material, quotation and delivery time are the same.

Fields (44)

KeyFieldSource TableSource FieldDescription
resultElementDateFunctionStartDate
resultElementDateFunctionEndDate
P_DisplayCurrency
P_StartDate
P_EndDatekeyPurchaseOrder Purchasing Document
KEY PurchaseOrderItem PurchaseOrderItem Purchasing Document Item
PurgDocMigrtnIsCmpltdForAnlyts PurgDocMigrtnIsCmpltdForAnlyts
SuplrEvalRelevantDocCategory SuplrEvalRelevantDocCategory
PurchaseOrderDate PurchaseOrderDate
CalendarYear CalendarYear
CalendarQuarter CalendarQuarter
CalendarMonth CalendarMonth
CalendarWeek CalendarWeek
PurchasingOrganization PurchasingOrganization
PurchasingGroup PurchasingGroup
CompanyCode CompanyCode
Supplier Supplier
SupplierCountry SupplierCountry
Region Region
Plant Plant
Material Material
MaterialGroup MaterialGroup
PurchasingCategory PurchasingCategory
PurgCatName PurgCatName
PurchasingDocumentCategory PurchasingDocumentCategory Purchasing Document Category
PurchasingDocumentCategoryName
Currency Currency
PurchaseOrderQuantityUnit PurchaseOrderQuantityUnit
OrderPriceUnit OrderPriceUnit
DisplayCurrency DisplayCurrency
PriceVarianceInPct PriceVarianceInPct
PriceVarianceAmount PriceVarianceAmount
PurchaseOrderNetPriceAmount PurchaseOrderNetPriceAmount
InvoicePrice InvoicePrice
PriceVarianceScore PriceVarianceScore
NumberOfPurchaseOrders NumberOfPurchaseOrders
NumberOfPurchaseOrderItems NumberOfPurchaseOrderItems
SuplrEvalPriceVarcInPercent Variance %
SuplrEvalPriceVarianceAmt Price Variance Amount
AmountPerPurchaseOrderPrcUnit PO Price Per OPU
PerInvoicePrcUnitAmount Invc Price Per OPU
DeliveredQuantity DeliveredQuantity Delivered Quantity
OrderedQuantity OrderedQuantity
PriceVarianceScoreValue Variance Score
@AbapCatalog.sqlViewName: 'CMMSEBYPRICEQRY'
@EndUserText.label: 'Price Variance'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #PRIVILEGED_ONLY
@AccessControl.personalData.blocking: #NOT_REQUIRED
@VDM.viewType: #CONSUMPTION
@OData.publish: true
@Analytics.settings.maxProcessingEffort:#MEDIUM
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory:  #L
@Analytics.query: true
@AbapCatalog.preserveKey:true
@ObjectModel.supportedCapabilities: [ #ANALYTICAL_QUERY]
@ObjectModel.modelingPattern: #ANALYTICAL_QUERY
@Metadata.ignorePropagatedAnnotations:true
define view C_PriceVarianceQuery
  with parameters
    @Consumption.defaultValue: 'EUR'
    P_DisplayCurrency : displaycurrency,

     @Consumption.derivation: { lookupEntity: 'I_SglGregorianCalDateFunction', 
    resultElement: 'DateFunctionStartDate', binding: [ {
      targetParameter: 'P_DateFunction', type: #PARAMETER, value : 'P_DateFunction' } ] 
    } 
    @Consumption.hidden: true
    P_StartDate: vdm_validitystart,
    
    @Consumption.derivation: { lookupEntity: 'I_SglGregorianCalDateFunction', 
    resultElement: 'DateFunctionEndDate', binding: [ {
      targetParameter: 'P_DateFunction', type: #PARAMETER, value : 'P_DateFunction' } ] 
    } 
    @Consumption.hidden: true    
    P_EndDate         : vdm_validityend,

    @Consumption.defaultValue: 'PREVIOUSYEARTODATE'
    @Consumption.valueHelpDefinition: [{
      entity: {
        name:'C_GregorianCalDateFuncVH',
        element:'DateFunction'
      }
    }]
    P_DateFunction    : datefunctionid
  as select from C_PriceVarianceCube( P_DisplayCurrency : $parameters.P_DisplayCurrency,
                                    P_StartDate : $parameters.P_StartDate,
                                    P_EndDate : $parameters.P_EndDate )
{

  @EndUserText.label: 'Purchasing Document'
  @EndUserText.quickInfo: 'Purchasing Document'
  key PurchaseOrder,
  
  @EndUserText.label: 'Purchasing Document Item'
  @EndUserText.quickInfo: 'Purchasing Document Item'
  key PurchaseOrderItem,
  
     @Consumption: {
                      filter: {                    
                                mandatory: false,
                                hidden: true,
                                selectionType: #SINGLE,
                                multipleSelections: false
                              },                  
                      derivation: {
                                    lookupEntity: 'F_ProcmtAnalyticsDataSelMeth',
                                    resultElement: 'PurgDocMigrtnIsCmpltdForAnlyts'
                                  }
                    }
     
      
      @UI.hidden: true
      PurgDocMigrtnIsCmpltdForAnlyts,
      
            @Consumption: {
                 filter: {                   
                           mandatory: false,
                           hidden: true,
                           selectionType: #SINGLE,
                           multipleSelections: false
                         },
                 derivation: {
                               lookupEntity: 'F_SuplrEvalDocCatConfign',
                               resultElement: 'SuplrEvalRelevantDocCategory'
                             }
               }
      @Environment.sql.passValue: true
      @UI.hidden: true
      SuplrEvalRelevantDocCategory,
      
         
  
      @UI.hidden: true
      PurchaseOrderDate,
      CalendarYear,
      CalendarQuarter,
      CalendarMonth,
      CalendarWeek,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      PurchasingOrganization,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      PurchasingGroup,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      CompanyCode,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      Supplier,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      SupplierCountry,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      Region,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      Plant,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      Material,
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      MaterialGroup,
     @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      PurchasingCategory,
      PurgCatName,
      
      @EndUserText.label: 'Purchasing Document Category'
      @AnalyticsDetails.query.display: #KEY_TEXT
      @AnalyticsDetails.query.axis: #FREE
      @Analytics.internalName:#LOCAL
      PurchasingDocumentCategory,
      @Semantics.text: true
      _PurchasingDocumentCatName._Text[1: Language = $session.system_language].PurchasingDocumentCategoryName as PurchasingDocumentCategoryName ,
       
      Currency,
      PurchaseOrderQuantityUnit,
      OrderPriceUnit,
      @UI.hidden: true
      DisplayCurrency,
      @DefaultAggregation: #SUM
      @Consumption.hidden: true
      PriceVarianceInPct,
      @DefaultAggregation: #SUM
      @Consumption.hidden: true
      PriceVarianceAmount,
      @DefaultAggregation: #SUM
      @Consumption.hidden: true
      PurchaseOrderNetPriceAmount,
      @DefaultAggregation: #SUM
      @Consumption.hidden: true
      InvoicePrice,
      @DefaultAggregation: #SUM
      @Consumption.hidden: true
      PriceVarianceScore,
       @DefaultAggregation: #SUM
      NumberOfPurchaseOrders,
      @DefaultAggregation: #SUM
      NumberOfPurchaseOrderItems,
      @DefaultAggregation: #FORMULA
      @EndUserText.label: ' Variance %'
      @AnalyticsDetails.query.formula :' $projection.PriceVarianceInPct /  $projection.NumberOfPurchaseOrderItems'
      cast( 1 as mm_ana_price_var_pct)       as SuplrEvalPriceVarcInPercent,
      @DefaultAggregation: #FORMULA
      @EndUserText.label: ' Price Variance Amount'
      @AnalyticsDetails.query.formula :' $projection.PriceVarianceAmount /  $projection.NumberOfPurchaseOrderItems'
      cast( 1 as abap.curr(13,3) )     as SuplrEvalPriceVarianceAmt,
      @DefaultAggregation: #FORMULA
      @EndUserText.label: 'PO Price Per OPU'
      @AnalyticsDetails.query.formula :' $projection.PurchaseOrderNetPriceAmount /  $projection.NumberOfPurchaseOrderItems'
      cast( 1 as abap.curr(13,3) )     as AmountPerPurchaseOrderPrcUnit,
      @DefaultAggregation: #FORMULA
      @EndUserText.label: 'Invc Price Per OPU'
      @EndUserText.quickInfo: 'Invoice Price Per OPU'
      @AnalyticsDetails.query.formula :' $projection.InvoicePrice /  $projection.NumberOfPurchaseOrderItems'
      cast( 1 as abap.curr(13,3) )     as PerInvoicePrcUnitAmount,
      @DefaultAggregation: #SUM
      @EndUserText.label: 'Delivered Quantity'
      DeliveredQuantity,
      @DefaultAggregation: #SUM
      OrderedQuantity,
      @DefaultAggregation: #FORMULA
      @EndUserText.label: 'Variance Score'
      @AnalyticsDetails.query.formula :' $projection.PriceVarianceScore /  $projection.NumberOfPurchaseOrderItems'
      cast( 1 as mm_a_variance_score ) as PriceVarianceScoreValue
      

}