You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 65 Next »

General presentation

Objective of the application

BW Demand Planning Scheduling (DPS)


Tool Leader: Antoine Roy

IT leader of the application: Guillaume Thevenet 

Name of project: Dynasys

PMO Project: 6046 S&OP with Dynasys - Core model and pilot

UR: UR335513 DYNASYS Sales Forecast / UR333365 DYNASYS Demand Planning

Reporting Coordinator: GONZALEZ-ROUX, Célia <celia.gonzalez-roux@solvay.com>

Usage information

Number of users: tbd

Critical period: none

Geographical perimeter: worldwide

InfoArea:

  • Demand Planning Scheduling
    IA_DPS

Process chain Display Component:

  • 127 - PROJECT - DPS - Demand Planning Scheduling
    COMP_DPS_PC

Roles & Access

Roles and access

Role IdRole TitleExplanation
ZR_RCS_CA_M52 DP - Demand Planning

Role Menu Dynasys

Currently (Nov 2016), only 2 queries published in this role

ZBI_RCS_DP_A02Demand Planning - Dynasys

Role utilisateur Dynasys

Authorization object ZBI_DPS

  • gives access to Application Area IA_DPS_DYNASYS
  • authorization limited on GBU (CPFCTR1_2) (Not yet applied but soon)
ZBI_RCS_DP_A03Demand Planning - Dynasys Keyuser

Authorization object  ZBI_DPS_K

  • gives access to transaction ZMAINT_MATPLANT + ZMAINT_MATVENDOR
  • gives access to Application Area IA_DPS_DYNASYS (to be corrected because currently IA_FMCO_COPA)
  • authorization limited on GBU (CPFCTR1_2) (Not yet applied but soon)

See also file maintained by Authorization team : BW Catalog of Roles / link: https://drive.google.com/open?id=10GEfKYqrT1eeTO_uHYAheL1GX7L5y_pvH0KQU64qh5I

Authorization objects

List of autorisation objects mandatory for the application.

Authorization objectExplanation

GBU (CPFCTR1_2)

ZR_*_CA_P05

Dataflow presentation

Overview

 

Reporting Part DataFlow

Functional and Technical rules on Workbench

General presentation

Most DSO / Cubes are used to extract data to the Dynasys tool. 

Data are extracted from a source outside BW dynasys (it could be another BW application, ECC table, query etc), loaded into DSO and/or Cubes. Then data are transformed through an APD and loaded into flat files which are loaded into the Dynasys tool.

Useful file to understand dataflow from APD to source, and check filters applied all along the dataflow:

Conversion in KG unit

Only conversion in two steps are managed in Dynasys (UOM then T006; conversion in Three or more steps are not managed in Dynasys and should be updated by the business)

The different step of the routine are the following:

Creation of internal table

Creation of internal table between T006and T006D (T006D provide the fields MSSIE, base unit of a dimension DIMID)
Creation of internal table for DSO UOMCMAT2, filled with both conversion from UOM to UNIT and UNIT to UOM and joined with T006 to get Dimension DIMID

Conversion in KG (if possible)

Quantity needs to be converted to KG.

The routine check:

  1. if Quantity is already in KG, nothing is done
  2. if Quantity is equal to 0, Unit is set to KG
  3. if Unit is in dimension MASS (the same dimension as the one for KG), then conversion is done in KG using T006
  4. if Unit is not in MASS, we check in UOMCMAT2 if we have a direct conversion from UNIT to KG
  5. if no direct conversion exists, we check if there is a conversion from Unit to any MASS unit and after conversion we apply another conversion from MASS to KG using T006

If no conversion exists, Unit remains empty and will be manage as an error (see below)

Catch missing conversion

The flow uses Error DTP. When Unit can't be converted, the routine raise an exception "cx_rsrout_skip_val". The error is loaded in the error queue with text from the message class ZDYN_CONV_ERROR

Not all error will be fixed. Most of these error are linked with BU outside of Dynasys perimeter.

Transformation from ZWPPTDYS ECC table

Documentation

Functional specification are available in the following spreadsheet:

In the following tabs:

ECC process

The ZWPPTDYS is loaded on ECC side through the transaction ZWPPTMRPOUT (which load the ZWPPMRPOUT program)

This transaction use the program RMDMRPEXTRACT01 which create a list of material to extract.

Then, for each material, the program RMDMRPEXTRACT01 run through the exit ZCL_PP_IM_MD_SR_LIST_EXTRACT.

This exit reads the database for each material and loads in memory several table among which is table IT_MDPSX.

Then, through specific code, the table ZWPPTDYS is loaded from IT_MDPSX using method IF_EX_MD_SR_LIST_EXTRACT~EXTRACT_SR_LIST_INFOS

BW Process

This table is loaded from PF1/WP1 into WBP in the DPDYN02 DSO (Propagation) and then in the DBDYN14 (Propagation).

All rules are available in the following transformation

ODSO DPDYN02 -> ODSO DBDYN14

See short description of this rules below

 Begin of global
  1. Declaration of types
  2. Declaration of table & variable
Begin of routine
  1. Declaration of field-symbols
  2. Refresh internal table
  3. Clear variable
  4. Get Source system using class oref_dynasys_utils, method get_source_systems
  5. Get Systems extensions using class oref_dynasys_utils, method get_system_extension
Phase 0: Table preparation

Load each required table into hashed table.

Phase 1: DSO Enrichment

Depending on value of field c_delkz:

  1. Step 1: Ship/Rec Shipto ID (PARTNER_CUST_ID)
  2. Step 2: Ship/Rec plant ID (PARTNER_PLANT_ID)
  3. Step 3: Complement ID (COMPL_ID)
  4. Step 4a: BU Source
  5. Step 4b: BU Destination
  6. DOC_TYPE
  7. ITEM_CATEG

Remarks:

  • Step 1 to 4 depends on result of previous step. No simplication is done in the code.
  • If in Step 1, PARTNER_CUST_ID equals source_field-X, in step we will use PARTNER_CUST_ID and not source_field-X
  • This means any error in the code will raise error in further rules. This is a choice in all the routine and this logic must be kept.
  • For Step 1,2,3, value are loaded without modification in variable ended by*_origin (and later in the script, these value are saved in dedicated infooject to ease debugging)
  • Even useless rules are loaded to keep homogeneity in the code, example: loading a field at null even if this field is already null.
  • For step 3, a master have been created C_CUSTASS to apply a specific Complement ID. This case happen only on flow "Plan consignment" :

Example :

If the PARNET_PLANT_ID is 8254,  normally COMPL_ID  linked to this plant is 61281 (by reading master data C_PLANT).

But for this flow, we previously read master data C_CUSTASS to see if this plant is a specific case :

And if it's the case, we apply the transcodification => in the example, NDC-66852 replace NDC-61281.

For the moment this master data is maintained manually.

Between phase 1 and 2:

Fields are assigned for expert routine (source to result)

System extension is added to field (Material, Plant, Partner plant ID etc) and remove unneeded 0 using function conversion_exit_alpha_output. These new value are stored in dedicated infooject to e used later in Phase 2 of script

A check is done to find any correspondance with content of specific table ZMATPLANT and ZMATVENDOR (see below) :

Two specific table have been created in SM30 to manage following rules

Two customised transaction have been created in SE93:

  • ZMAINT_MATPLANT (maintain table ZMATPLANT)
  • ZMAINT_MATVENDOR (maintain table ZMATVENDOR)

Phase 2: Flag determination

Once Phase 1 is finished, depending on DELKZ value, several fields are loaded:

  • File flag fields: these flag will be used in APD to dettermine which data needs to be loaded in flat file
  • Flowid identify which rule has been applied regarding the specification
  • SKU R in FS (C_FLGSRF), filled from PARTNER_CUST_ID / PARTNER_PLANT_ID / COMPL_ID depending on flow id value.

All rules are checked one after the other. Once one check is validated, the check stop

Remarks: c_pfctr2 = BU SOURCE and c_recptbu = BU DESTINATION

Specific rules on Dynasys dataflow

Nota fiscal 

Plant 7525 is not recognized on Dynasys side, deletion or modification are done on BW side following rules like below :

FileAction done
DYS_BW_AS_DELDAT.csvDelete the transferts of the source site 7525 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_AS_GI.csvDelete the transferts of the source site 7525 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_EPO.csvReplace plant 7525 by 7528 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_FPO.csvReplace plant 7525 by 7528 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_FS_RECEIPT.csvDelete the transferts of the source site 7525 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_FS_SHIPPING.csvDelete the transferts of the source site 7525 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_ITI_RECEIPT.csvDelete the transferts of the source site 7525 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_PO.csvReplace plant 7525 by 7528 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_PROD_HIST.csvReplace plant 7525 by 7528 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_QM.csvReplace plant 7525 by 7528 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)
DYS_BW_SKU_PW.csvReplace plant 7525 by 7528 for all SILICA material (C_MATPNT2-C_PFCTR2 = ENTRP00002)

These rules are generally applied in transformation (by routine) before DSO source of each file.

Interco rule 

For DIP files below, delete line where "Receiving site" = "source site" :

 

File

APD

Source

DYS_BW_AS_DELDAT.csv

APD 43

DBDYN14

DYS_BW_AS_GI.csv

APD 45

DBDYN14

DYS_BW_FS_RECEIPT.csv

APD 33

DBDYN14

DYS_BW_FS_SHIPPING.csv

APD 34

DBDYN14

DYS_BW_ITI_RECEIPT.csv

APD 36

DBDYN14

This rule is applied in transformations before DSO DBDYN14 and each APD :

  • Creation of a flag C_FLGSITE in transformation, where C_FLGSITE = 'X' if Receiving Site (C_FLGSRF) = Source Site (C_DYN_001)
  • Apply filter on APD C_FLGSITE = BLANK to delete lines (like below for APD_36)

Field with extension C_KYN_***

In Dynasys file export, fields are generaly with an extension S or R corresponding of source system :

  • *R => Rhodia (WP1)
  • *S=> Solvay (PF1)

These fields are calculated and created in transformation before to be added in their DSO target.

It's also possible in specific dataflow these fields are directly calculated in APD.

Main fields with extension :

  • C_DYN_001 : Plant with System Extension
  • C_DYN_003 : Customer with System Extension
  • C_DYN_006 : Distribution Channel with System Extension
  • C_DYN_005 : Material with System Extension
  • C_DYN_008 : Division with System Extension

Use of the Global Filter (C_GLBFILT)

Stream: DPS

Main filter : C_PFCTR2 (BU) and  PLANT

These 2 filter may be extended regularly due to the extension of Dynasys perimeter (RCS in january 2016, Soda in june 2016)

Other filters: C_MGN_ACC, DEL_TYPE, ITEM_CATEG, MATL_TYPE, REASON_REJ, REC_TYPE

Reload data :

  • If a new plant is added in Global filter, all delta data flow have to be reinitialized.

 

See below all DSO wich are to be reload :

 

  1. DBDYN06
  2. DBDYN14
  3. DPDYN21
  4. DPDYN22
  • Concerning BU, in APD there are BU (Field C_PFCTR2) filters values "hardcoded".Some modifications have to be done to update these filters if necessary.

      => See Dynasys dataflow document (BW Layer = APD / field =*C_PFCTR2) :

https://docs.google.com/spreadsheets/d/1Hs8ZtMGL_Fq7ed-IxlfmVaqdjOPXKXX_dyuf6xHDqWU/edit#gid=49959650

Usage of error stack

Error stack are used in relation with Unit and Currency conversion.

Most if not all error are linked with BU outside current perimeter of project and won't be fixed.

Each DTP has the following settings:

DTP

Error DTP

Package Size is lower than Maximum Number of Errors per Pack as the number of error won't decrease (example in may 2016: 2567 records from DP_PUSL2 to DPDYN22, 17618 records from DPSD001 to DPDYN21  and 530 from DSO_DLV1 to DPDYN21)

Connection with UD CONNECT

Dynasys is a MSSQL tool, BW WBP is on an AIX server. No ODBC driver exists between BW and MSSQL server in Linux / AIX.

This problem was solved setting an UD connect connection

User ID for Dynasys connection is Dynasys_Interface / Password  : 791hB6zi8Rk1DBSV3uNG

Main server:

  • Dynasys Production server: WDCCLSLBV01\SLV1_DBPRD  => connected to WBP
  • Dynasys Development server: WDCCLSLBV01\SLV1_DBDEV => connected to WBD
  • Dynasys Testing server: WDCCLSLVBV01\SLV1_DBTST => connected to WBQ

Important:

  • Adagio Team is in charge of UD Connect connexions. Admin Change to be created by Guillaume T for any change or issue.
  • Wintel Operations is in charge of DynaSys servers (Contact Abdelmôti KHABABA)


Management of file through APD

Files are created in the following folder in AL11

/exploit/depart/Dynasys

To avoid problem with quotes, routines have been added in APD to encapsulate existing quotes in description fields

Negativ sign have to be at the end of number in file, this is treated directly by routine in APD :

Data loadings

Loading frequency

Daily: launched by the LO_DAILY_MASTER_DATA process chain around 6:00 AM each day.

  • PC_DPS_DYNASYS_01
    DPS Dynasys: META - D - Daily Meta-Chain

Weekly: launched on saturday, 9:00 AM

  • PC_DPS_DYNASYS_03
    DPS Dynasys: META - W - Weekly Meta-Chain
  • Remark: Dynasays tool is awaiting data between 6:00 AM and 8:00 AM

Yearly: launched the 15th of January at 9:00 AM

  • DPS Dynasys: META - Y - Cleaning Historical Data
    PC_DPS_DYNASYS_04

 

 

Flag end of process chain: For both daily and weekly process chain, at the end of APD execution, a command is sent to the Dynasys tool. This command must be executed in productive environnement only and is not effective in other environnement (it will raise an error). The Decision process prevent execution of the command in non productive environnement.

 

 

Process ChainCodeTypeFrequencyComments
DPS Dynasys: META - M - 6.Reporting DynaSys (Snapshots)PC_DPS_DYNASYS_09 MAIN
  • Monthly, the 6th of the month at 3am
  • Whole chain last around 10 minutes (07/10/2016)

Based on Table EXP_FORE (daily update, by 1.45am even if BW loading is monthly)

The SnapShot month (End of Month View/C_FCSTMTH) is automatically set to previous month.

Global filter variable (C_GLBFILT) DPS/PHOTO_MTH can be used to fix another SnapShot month.

Caution : do not launch this chain several times a month without cleaning previous loadings

DPS Dynasys: META - D - 6.Reporting DynaSys (Dynamic KPIs)PC_DPS_DYNASYS_15MAIN
  • 5 times a day
  • Whole chain last arount 15 minutes (17/11/2016)

Based on Table EXP_FORE_DR (daily update, by 2.45am)

05/01/2017: On DynaSys side, the treatment which prepares table EXP_FORE_DR takes more time, and now finishes around 2.45 (previously 1.45) => BW chain starter changed 2.30 am => 3.00 am

23/01/2017: The chain is planned hourly (with Calendar 14), but the loading will apply only for following time intervals (Decision Block)

Without issue a message is send to following users :

  • krystle.medina@solvay.com
  • nicholas.barrett@solvay.com
  • carlos.lau@solvay.com
  • marion.baggio@solvay.com
  • emmanuel.hatt@solvay.com
  • fabien.piret@solvay.com
  • ann.bailly-ext@solvay.com
  • haixiang.song1@solvay.com
  • celia.gonzalez-roux@solvay.com

Message detail

 

NB : message has been settled in WBP. Waiting for group email adress to manage it from WBD

NEXT EVOLUTION => loading will run only if table has been updated on DynaSys side (By march 2017)

 

DPS Dynasys: META - M - 6.Reporting DynaSys (MasterData)PC_DPS_DYNASYS_23MAIN
  • Daily (to be planned after Dynasys loading ex DBDYN33, DBDYN12, DBDYN02)

Not YET PLANNED

2 known issues :

  • DTP DBDYN33 -> C_DYN_017 - Full => dupplicates on Ship-to 703581S / SDSOA
    cause : the DC is not filled for all loadings (subject in progress Julien/Emmanuel)
    solution : the DTP has to handle dupplicates (done only in WBP as solution is temporarly
  • DTP DBDYN12 -> C_DYN_018 - Full => dupplicated on Ship-to 66946R
    cause: specific rule for plant 8000 is not applied for Ship-to with extension (subject in progress Julien/JC)
    solution: in DSO DBDYN12 delete line with Ship-to 66946R / Plant 8000
DPS Dynasys: META - D - 6.Reporting DynaSys (Obas data)PC_DPS_DYNASYS_20MAIN
  • Daily at 5 am
Temporarly schedulling! this chain has to be added in Obas chain or launched via an Obas event

Average performance

Most DSO & Cubes are loaded in full mode due to the low amount of data and/or calculation rules.

Exception:

  • DPDYN21: 2,1 M lines loaded in delta mode
  • DPDYN22: 2,2 M lines loaded in delta mode

Average duration (may 2016):

  • Daily chain usually run for 25 to 45 minutes.
  • Weekly chain usually run for 40 minutes  to 1,5 hour

Remark: on going evolution will transfer most process in the weekly chain to the daily one (increasing duration of daily chain and decreasing weekly chain).

Historization

No data below 3 year before beginning of current year are kept. Ex: in Aprl 2016, only data greater than or equal to 01.01.2013 are loaded in Dynasys.

It involves that the volume of data loaded increase during the year, until arrived at its maximum at the end of december.

Reporting

Queries Documentation or user guide

No dedicated documentation on queries

Main queries

QueryDescriptionTypeRole MenuComments
BW_QRY_MVDYN11_0005BW - DP - Forecast Accuracy (Core query)QRY

DP - Demand Planning

Version 1.

Version 2 is planned mid December 2016.

BW_QRY_MVDYN11_0002BW - DP - Forecast Accuracy (Core query)QRY Previous FA. query to be deleted
BW_QRY_MVDYN11_0001 QRY Previous Demand Review => query to be deleted

BW_QRY_MVDYN11_0006

BW - DP - Demand Review (Core query)QRYDP - Demand Planning

Version 1 (some GBU affectation missing. DBDYN02 issue)

Version 2 is planned end November 2016.

     

Main functionnalities

n/a

Broadcast

n/a

Maintenance

Known bugs

Data loading in DSO DBDYN33

DSO DBDYN33 is loaded by 2 DTP in this order :

  1.  DPDYN22 => DBDYN33 - Full with filter
  2. DBDYN18 => DBDYN33 - Full with filter 

Sometimes an error appears with a dump when DTP DBDYN18 => DBDYN33 is launched.

In this case, to fix the issue, follow the steps bellow :

  1. Delete data in DSO DBDYN33
  2. Launch manually DTP "DPDYN22 => DBDYN33".
  3. Repeat the process chain step in error DTP " DBDYN18 => DBDYN33".

Customer Sales empty or inexact (C_CUSTSAL or 0CUST_SALES)

Due to loading routine in the propagation level of DPSDSO05 / DSO_SD02 which are loaded in delta mode, this field is not correctly updated

 

Customer Sales attributes empty or inexact (0CUST_SALES & C_CUSTSAL)

Correction done for 0CUST_SALES (see below), the same dataflow must be done for C_CUSTSAL Master data.

Modification on ZZ fields are not taken by the delta. Only full loading can fix this problem.

 

A specific extractor has been created based on KNVP table from WP1_400 in order to feed ZZ fields correctly.

This data loading is done everyday with the process chain ZPC_MD_ATTR_RCS.

After that we have to retreat data stored in DSO DPDYN22 to update ZI PArtner only if we have a modification. To do that a new transformation has been created :

A new DTP has been created too, launching it ZI partner is reading into master data 0CUST_SALES and updated in DPDYN22.

This DTP is in daily and weekly Dynasys process chain :

  • PC_DPS_DYNASYS_08
  • PC_DPS_DYNASYS_12

Update of UD Connect datasource

Data loaded from Dynasys tool are using "UD connect" connection type (Java).

Datasource updated in Udconnect can encounter problem in WBQ / WBP due to Metadata cache (whereas everything is ok in WBD)

S:RSSDK:300 Field GHFF_QUANTITY is not a member of /BIC/CADTS_ EXP000010000001

Message no. RSSDK300

Ask Addagio team for a « cache clearance for quality / production system (BW) on this JCO connection” 

This issue can also appear in WBD on an existing datasource, when a new field is added in the Dynasys table.

Ask adagio to clear the cache in all systems, otherwise you will get the issus when moving the datasource in WBQ/WBP

Recurring procedure

Planned Evolution

Several minor evolution managed by the Dynasis project team.

Field C_PFCTR2 in master data C_MATPNT2

Originaly, there was a filter on field C_PFCTR2 in DTP linked to transformation between master data C_MATPNT2 and DSO DBDYN08 :

Filter value applied was OLAP variable V_0G_CWWE03_0001.

But the issue is that field C_PFCTR2 is not filled for source system PF1.

When we applied the filter, only data from source system WP1 was loaded in DSO DBDYN08.

To fix the issue, filter value was deleted and a start routine was added in transformation.

In this one, we read the master data C_MATPNT3 to keep C_PFCTR2 value with key Plant & Material.

If an evolution is done to fill C_PFCTR2 value for PF1 System in C_MATPNT2 master data, start routine could be deleted and filter value in DTP will be applied again.

 

 

 

 

 

 

  • No labels