General presentation
Objective of the application
Manufacturing VC query (QV_BW_QRY_CPCOPC04_0001) is one of the components to calculate the FL-ICM (Forward-Looking Integrated Contribution Margin).
The Variable Cost (VC) of a product, used to calculate the ICM, is the sum of Raw Materials + Packaging + Tolling + Utilities costs.
We bring these detailed costs from SAP from the BOM (Bill of Material).
The BOM brings, for a given Finished Product/Plant/Month, the detailed list of components with the corresponding quantities and costs.
In the query, we calculate the FL Variable Cost for projected months, using the forecasted prices for Raw Material and Energy (input by the users in IP workbooks). If no forecast is found, then we extrapolate last Actual price to the future months.
Tool Leader + IT leader of the application:
Usage information
History
Roles & Access
Roles and access
List of application role + menu role and explanation if we have several applications role with specials rules.
| Role Code | Role Description | Explanation |
|---|---|---|
| ZR_RCS_CA_M83 | Forward Looking ICM - Manufacturing | Role Menu |
| ZBI_RCS_CO_A09 | Forward Looking ICM - Manufacturing | Authorization objects |
Authorization variables
List of authorization variables mandatory for the application.
| Authorization variables | Object |
|---|---|
| V_CPFCTR1_2_0006 | CPFCTR1_2 |
| V_C_PLANT_0012 | C_PLANT |
| V_C_AUTHMA_0001 | C_PLANT__C_AUTHMA |
Dataflow overview
Composite Provider CPCOPC04 (FL ICM - Manufacturing Unit Cost) contains 2 DSOs:
- ABCOPC06 - WP1
- ABCOP06B - PF1
BOM data flow
First step to calculate Manufacturing Cost is to load the BOM.
WP1 flow
WP1 data flow is a technical replication of the old BOM query used by Novecare (QV_BW_QRY_CPCSPR02_0001). You can find more info below
BW RTR - NoveCare - Replacement of pVelocity For Raw Material Cost and Forecast details
We select all finished products sold in the past 24 months (DTS_PU_RM01) and do the BOM explosion, level by level in a BW routine (via lookup in ODS_PCP1).
PF1 flow
PF1 data flow is totally new for Pricing Project and loads data from table ZCO_PRICE_RM in PF1. The BW flow is more straight-forward because the logic of the BOM explosion resides in PF1 and there is not much transformation of data on BW side (only transposition from columns to rows). On the other hand, we don't have all the level of detail as in WP1.
The BOM data from both ERPs is then harmonized in CV_FMCO_BOM to be consumed by the Manufacturing Cost CVs.
ABCOPC05 is an intermediate DSO, used only for WP1 data, for the correct aggregation of Key Figures, as we remove some characteristics (level and intermediate product) to send to Manufacturing Cost CV.
Currency conversion (from local currency to EUR, using exchange rate type CAR3) also takes place when loading into ABCOPC05.
There are 2 different BOM queries (not used directly in Pricing dashboard, but can be used to check the BOM data with all the available granularity)
- QV_BW_QRY_CPCOBOM1_0001 - for WP1
- QV_BW_QRY_CPCOBOM2_0001 - for PF1
You can find the dimensions of each query here:
Granularity of the BOM
From WP1, each record in the BOM is an individual component, which is either a Raw Material (C_BOMCPT) or an Activity Type (0ACTTYPE).
From PF1, we don't have the same granularity. Only the critical raw materials are detailed (with quantity and price). This is what we call SIMPLE version.
Then we have some "buckets" that aggregate the costs as follows:
- OTHER_RM - Sum of the costs of the non-critical raw materials
- OTHER_PK - Sum of the cost of Packaging Materials
- OTHER_UTI - Sum of the cost of Utilities
- OTHER_TOLL - Sum of the cost of Tolling
Raw Material Forecast Integration (Novecare)
DSO ABCOPC01 stores Raw Material forecast prices (saved by the users in the workbook).
Then this DSO is integrated in CV_FMCO_MAN_COST_RCS with the following logic:
CC_TYPE = 1 (Forecast) ==> Value Component 009 (Raw Material Forecast)
CC_TYPE = 2 (Actual) ==> Value Component 004 (Raw Material Actual)
"Buy & Sell" products (Novecare)
These are products that the GBU buy and re-sell, and they have no BOM in SAP.
They are identified in Critical Raw Material Master Data C_FLRMAT, with “Critical flag” (C_FLRMATF) = “B” (No BOM)
We create a "virtual" BOM in BW assigning the same material code as both Finished Product and Raw Material, with the whole quantity of the lot size (1000 KG).
This is done with 2 different Transformations into ABCOPC06 (WP1 only):
- TRSF: ABCOPC01 -> ABCOPC06
Here we get from ABCOPC01 the forecast prices for Buy & Sell products.
- TRSF: ODS_PCP9 -> ABCOPC06
Here we get the actual price from P&L. query QVSBS_QRY_MVCOPA06_0001 (technically we take data directly from ODS_PCP9 field C_MVR_CP).
We adjust the price to a lot size of 1000 KG and also convert the price to EUR using CAR3 exchange rate.
Also in this transformation, we extrapolate Actual price for the future 12 months, in case no forecast exists in ABCOPC01.
"Make or Buy" products (SpP)
The relevant raw materials for "Make or Buy" process are marked in Critical Raw Material Master Data C_FLRMAT, with “Critical flag” (C_FLRMATF) = “I” for internal and “E” for external.
In ABCOPC17 we find the adjusted ratio (K_ADJRAT) to be applied into the raw material forecast prices. This ratio is stored by quarter.
In CV_FMCO_MAN_COST we read data from ABCOPC17 joining with CALMONTH to extrapolate the months in each quarter and copy the adjusted ratio in each month.
The adjusted ratio is applied to the forecast price to get an adjusted price (CC_ADJ_PRI) to calculate the adjusted cost (CC_ADJ_COST).
Then in TRSF: DTS_CV_FMCO_BOM_FORECAST -> ABCOP06B we take the adjusted cost in case an adjusted price exists.
The adjusted price can be seen in Manufacturing query but it's hidden by default.
You can find FL-ICM overall architecture here:
Functional and Technical rules on Workbench + Reporting
Rules & Explanations
Novecare (in WP1) works with Standard Cost.
Beginning of month M, we have the cost for month M.
Specialty Polymers (in PF1) works with Actual Cost.
Beginning of month M, we have the cost for month M-1 (last closed month).
In order to have a common view, for a unique Running Period, this is the way we generate data in Manufacturing Cost query.
Note that for Novecare (WP1), there is a month lag in the Forecast price for the projected months (for example, April Forecast is calculated with the price from March).
2 different calculation views were created as we can only filter a single period to read BOM data, so in each CV, Run Period is calculated differently:
CV_FMCO_MAN_COST_RCS (WP1)
RUNPER is equal to FISCPER from DTP (used to extract BOM)
CV_FMCO_MAN_COST (PF1)
RUNPER = FISCPER from DTP +1
For example: to generate RUNPER 03/2022
DTP from WP1 with FISCPER = 03/2022 (to extract BOM data from 03/2022)
CV will generate RUNPER 03/2022.
DTP from PF1 with FISCPER = 02/2022 (to extract BOM data from 02/2022)
CV will generate RUNPER 03/2022.
Dependencies with other applications
Data loadings
Info providers and objects loaded
Process chain PC_COPC_10 scheduled monthly on CD7 (calendar day 7)
Loading frequency
Monthly on Day 7
Average performance
| Key Figure | Estimation |
|---|---|
| ~ Average Process Chain Runtime | |
| ~ Average nb of rows loaded per load | |
| ~ Total nb of rows loaded (if full) | |
| ~ Average Runtime for 10k lines |
Record Keeping
Reporting
Main queries
Manufacturing Unit Cost query : QV_BW_QRY_CPCOPC04_0001
Main functionalities
It combines BOM (Bill of Material) data for Actuals + Raw Material Forecast.
Global properties
Variables
Definitions
Variable Name | Info-object | Selection Type | Required | Description/Explanation |
|---|---|---|---|---|
| 0I_CALMO | 0CALMONTH | Interval | No | Calendar Year/Month |
| V_C_PLANT_0012 | C_PLANT | Authorization with Input | No | Plant |
| V_CPFCTR1_2_0006 | CPFCTR1_2 | Authorization with Input | No | Global business Unit |
| V_C_MATNR2_0001 | C_MATNR2 | Select Option | No | Raw Material |
| V_C_AUTHMA_0001 | C_AUTHMA | Authorization | No | Authorization Scope |
| V_0CALMONTH_0062 | C_RUNPER | Interval | No | Run Period |








