The new wiki link for this data flow is here:
Please update the doc there and no longer here.
The application provides for a given month, the average sale prices observed during the X previous months.
Data is both :
.List of contacts
The aim of the application is to calculate and provide to transfer pricing team the monthly average sale price by BFC Company Code, Material, Revenue Type.
To be completed
This project was developed in September 2019 by Ludovic Depoix with BW technical support of Cyril Bianco.
A new OFFSET parameters has been added to the data flow in June 2022 by Ludovic Depoix with BW technical support of Charles Benier.
| Role Code | Role Description | Explanation |
|---|---|---|
ZR_RCS_CA_M67 | Transfert Price Historical Sales | Menu Role |
ZR_*_CA_P05 | GBU perimeter roles | Role Analysis authorizations |
ZBI_RCS_CO_A25 | TP – Transfert Price Historical Sales - End User role | Application Role |
List of authorization objects mandatory for the application.
| Authorization object | Explanation |
|---|---|
CPFCTR1_2 | BFC Global Business Unit |
C_AUTHMA | Authorization Scope |
See also file maintained by Authorization team :
Reporting documentation drive folder:
Exemple of dataflow overview :

Retrieved data are coming from PF1 and WP1 COPA module.
Retrieved data is dependent from standard and advanced DSO (COPA Business Layer) loaded by others applications.

implemented by another project
DBCOPA30 - COPA - Solvay Legacy
ABCOPA01 - CDSA – Solstice
ABCOPA04 - CDSA – Not Solstice
Implemented by the Transfer Price project
APCOTP01 - Transfer price - Entity third party Except




Business Rule : If trading partner (C_PCOMPAN) not empty and consolidation method different from 90 sold and BFC Company of the Trading partner (C_COMPANY__0COMPANY) not found in exception table (/!\ Posting date in Valid From and Valid To of exclusion table => Related Party
Else => Third Party
Business Rule : We will compare :
- the recipient country (ship to customer country) C_SHIPID_0COUNTRY
- And the country of the selling company (company code country):C_PCOMPRS__0COUNTRY (= C_COMPCDE__0COUNTRY)
- Abroad-export :both countries are different and one of them at least is outside E.U.
- Abroad-EU : both countries are different and inside E.U.
- Domestic (same country)
The third distinction is only for chinese companies
If the company code is not a chinese company ( C_PCOMPRS__0COUNTRY or C_COMPCDE__0COUNTRY <> CN) = > domestic included duties
If the company code (C_COMPRS) is a chinese company ; to split the domestic line by "included customs duties" or "duty free", based on:
- the invoicing currency (0DOC_CURRCY) <> Local company currency(C_COMPRS_0CURRENCY ) => domestic duty free
- the invoicing currency = local company currency (CNY), the legal entity is SSP CHANGSHU (5991) and the customer is related party => domestic duty free
- other cases => domestic included duties
The global filter has been used in order to manage some parameters :
| Global Filter Stream (Application) | "Global Filter Rule" | "Global Filter" | Global Filter Active | Global Filter Description | Global Filter Hight Value | Global Filter Low Value | Global Filter Option | Global Filter Sign |
| TP_SP | MATNR_WX1 | 1 | Y | Exclude MATNR2 Z710 | Z710 | EQ | E | |
| TP_SP | MATNR_WX1 | 2 | Y | Exclude MATNR2 ZDIE | ZDIE | EQ | E | |
| TP_SP | MATNR_WX1 | 3 | Y | Exclude MATNR2 ZNLA | ZNLA | EQ | E | |
| TP_SP | MATNR_WX1 | 4 | Y | Exclude MATNR2 ZUNB | ZUNB | EQ | E | |
| TP_SP | MATNR_XF1 | 1 | Y | Exclude MATNR2 Z710 | Z710 | EQ | E | |
| TP_SP | MATNR_XF1 | 2 | Y | Exclude MATNR2 ZR09 | ZR09 | EQ | E | |
| TP_SP | MATNR_XF1 | 3 | Y | Exclude MATNR2 Z709 | Z709 | EQ | E | |
| TP_SP | EXTRPERIOD | 1 | Y | Recovery Extract Period | 201904 | EQ | I | |
| TP_SP | CALCNBPER | 1 | Y | Nb of Calculation period | 3 | EQ | I | |
| TP_SP | OFFSET | 1 | Y | Nb of month OFFSET | 3 | EQ | I |
CALCNBPER (4) & OFFSET (2) parameters example

Transactional data extractors
As shown in the architecture schema, the Sale Price application is based on an hybrid achitecture HANA Calculation feeding a BW composite provider.
The the composite provider is used for bith extraction and reporting purpose.

This calculation view provide all contries belonging to EU, including Monaco which in not considered as a EU member in ECC T005 table.
this is done through the folling filter expression :


This caclulation view provides the scope of MATERIAL that have to be taken into account, after application of the exclusion MATL_TYPE managed through the global filter table.
| Global Filter Stream (Application) | "Global Filter Rule" | "Global Filter" | Global Filter Active | Global Filter Description | Global Filter Hight Value | Global Filter Low Value | Global Filter Option | Global Filter Sign |
| TP_SP | MATNR_WX1 | 1 | Y | Exclude MATNR2 Z710 | Z710 | EQ | E | |
| TP_SP | MATNR_WX1 | 2 | Y | Exclude MATNR2 ZDIE | ZDIE | EQ | E | |
| TP_SP | MATNR_WX1 | 3 | Y | Exclude MATNR2 ZNLA | ZNLA | EQ | E | |
| TP_SP | MATNR_WX1 | 4 | Y | Exclude MATNR2 ZUNB | ZUNB | EQ | E | |
| TP_SP | MATNR_XF1 | 1 | Y | Exclude MATNR2 Z710 | Z710 | EQ | E | |
| TP_SP | MATNR_XF1 | 2 | Y | Exclude MATNR2 ZR09 | ZR09 | EQ | E | |
| TP_SP | MATNR_XF1 | 3 | Y | Exclude MATNR2 Z709 | Z709 | EQ | E |
The restriction is done through the following filter expression

Where IP_TP_C_GLBFILT_RULE is an input parameter populated by the master view which embeds the current view either :
CV_FMCO_CO_TP_COPA_RHODIA
CV_FMCO_CO_TP_COPA_SOLVAY
The parameter is populated by a constant in the calculation view input parameter mapping.

this Calculation views takes in charge


where Input parameters are driven either by DTP or Query exit variables and related BADIs


this Calculation views takes in charge


where Input parameters are driven either by DTP or Query exit variables and related BADIs



This calculation view

This calculation view takes in charge all the UNIT CONVERSION logic using joins with T006 and UOMCMAT2 DSO.

This view
the customizing is done in the semantic layer using semantic functions




This view insure the pushdown HANA of the aggregation at the level requested by the reporting layer.

Only 2 data flows which take in charge through Open Hub of the extract of 2 Sale price's files likely to be copied respectively in WP1 and PF1.

The DTP extract data in full mode with some restriction
The file location is /exploit/BW/TP/
fsl_tpdata_from_bw_to_erp.csv
fsl_tpdata_from_bw_to_rcs.csv
20/06/2023 : PO2 project .
In SAP Transfer Price process will be split in ECO and SCO and will take place at SPIN OFF ECO/SCO (not D1)
4 new Open hub has been added to produce the new files (1 ECO , 1 SCO per SAP system)

The structure of the files has been modified compared to SOLVAY one : Authorization object has been added.
Morever , we apply a filter on the Authorization scope (C_COMPCDE__C_AUTHMA) when files are generated (filter in the DTP)
The file location is also /exploit/BW/TP/
fsl_tpdata_from_bw_to_erp_eco.csv
fsl_tpdata_from_bw_to_erp_sco.csv
fsl_tpdata_from_bw_to_rcs_eco.csv
fsl_tpdata_from_bw_to_rcs_sco.csv
The loading is scheduled by PC PC_FMCO_TP_01 on 3rd working day each month at 5:30

MATERIAL : must be different the Initial
SOURCE SYSTEM :
INPUT PARAMETERS IPCALMONFROM & IPCALMONTO :
PC_FCMO_TP_MD : Controlling - TP - Master data

PC_FCMO_TP_01 : Controlling - TP - Sale Price Extracts
This process chain extracts launch the extract through Open Hub.

20/06/2023 : PO2 project : Generation of the 4 new files will be added in Process chain before PO2 Spin Off
The Process chain is likely to be triggered once a month after the closing date (~2nd working day of each month acoording to FR calendar )
In WB1 which was a referesh of WBP, and so with volumes likely to be equivalent to those obeserved in production in 2019S1 :

The 2 mains used query are :
| BW_QRY_CPCOTP01_0003 | Controlling - TP - Sale Price – Reporting |
| BW_QRY_CPCOTP01_0004 | Controlling - TP - Sale Price – Reporting detail |
| BW_WBK_COTP_0001 | Controlling - Sales Price - Synthesis |
The query BW_QRY_CPCOTP01_0003 has been embedded in the BW_WBK_COTP_0001, in order to both :


A query jump has been customized from the Synthesis Query to the delailed one, in order to allow the user to get the detail at the Item COPA document level for a specific record of the synthesis.

Of course, the number of retrieved records and overall results are in aligned with the synthesis source record

By init/recovery procedure we mean manage the reference period which drives the extraction of the 2 files in process chain : PC_FCMO_TP_01 .
The common parameter that have to be managed is located in the C_GLBFILT master data attributes
For the following key
| Global Filter Stream (Application) | "Global Filter Rule" | "Global Filter" |
| TP_SP | EXTRPERIOD | 1 |
You have to set :
| Global Filter Stream (Application) | "Global Filter Rule" | "Global Filter" | Global Filter Active | Global Filter Description | Global Filter Hight Value | Global Filter Low Value | Global Filter Option | Global Filter Sign |
| TP_SP | EXTRPERIOD | 1 | Y | Recovery Extract Period | 201904 | EQ | I |
Once the recovery process is over, do not forget to inactive the parameter for the recurring process which takes into account the current month.
You have to set :
| Global Filter Stream (Application) | "Global Filter Rule" | "Global Filter" | Global Filter Active | Global Filter Description | Global Filter Hight Value | Global Filter Low Value | Global Filter Option | Global Filter Sign |
| TP_SP | EXTRPERIOD | 1 | N | Recovery Extract Period | 201904 | EQ | I |