Page tree


1.0 Access Management 

Roles & Access

List of application role + menu role  and explanation if we have several applications role with specials rules.

Role CodeRole DescriptionExplanation




Authorization Objects

List of authorization objects mandatory for the application.

Authorization objectExplanation


2.0 DataFlow


2.1 Overview

Mutltiprovider MVFIWC01 is composed by 32 cubes:

CRFIGL22AP from FIGL by Affiliate - CICC 
CRFIGL08AP from FIGL: Line Items - CICC
CRFIGL02AP from FIGL: Line Items - Rhodia 
CRFIGL05AP from FIGL: Line Items - Solvay 
CRFIGL21AR from FIGL by Affiliate - CICC 
CRFIGL07AR from FIGL: Line Items - CICC 
CRFIGL01AR from FIGL: Line Items - Rhodia 
CRFIGL04AR from FIGL: Line Items - Solvay 
CRFIPA06CAPEX Rhodia (Lease AP) 
CRFIPA08CAPEX Rhodia (Lease AP) Factoring 
CRFIPA01CAPEX Rhodia (Payables AP + GL) 
CRFIPA04CAPEX Rhodia (Payables AP) Factoring 
CRFIPA07CAPEX Solvay (Lease AP) 
CRFIPA09CAPEX Solvay (Lease AP) Factoring 
CRFIPA02CAPEX Solvay (Payables AP + GL)
CRFIPA05CAPEX Solvay (Payables AP) Factoring 
CRFIAP03FIAP: Line Item with Delta - CICC 
CRFIAP01FIAP: Line Item with Delta - Rhodia 
CRFIAP05FIAP: Line Item with Delta - Rhodia factoring 
CRFIAP02FIAP: Line Item with Delta - Solvay 
CRFIAP06FIAP: Line Item with Delta - Solvay Factoring 
CRFIAR03FIAR: Line Item with Delta - CICC 
CRFIAR01FIAR: Line Item with Delta - Rhodia 
CRFIAR15FIAR: Line Item with Delta - Rhodia Factoring 
CRFIAR02FIAR: Line Item with Delta - Solvay 
CRFIAR16FIAR: Line Item with Delta - Solvay Factoring 
CUB_MAG01FISCA : Magnitude account data (cube) 
CRFIGL13IM from FIGL: Line Items for G/L Acct (S) - Rhodia 
CRFIGL14IM from FIGL: Line Items for G/L Acct (S) - Solvay 
CRFIGL03IM from FIGL: Line Items for Mat. Acct (M) - Rhodia 
CRFIGL06IM from FIGL: Line Items for Mat. Acct (M) - Solvay


CRFIGL22

ZZF_READ_ZZF_BSEG → DPFIWC03

Start routine

Delete data where field "Info" is empty.

Field routine

0FISCVARNT = K4.


0FI_GL_4 CICC → DPFIGL03

Field routine

For REF_DOC_NO all characters equal to # or ! are replaced by space.


DPFIWC03 → DPFIGL03

End routine

Search in DPFIGL03 if a record exist with same fields from data loaded (logsys, c_compcde,  ac_doc_no,  fiscyear  and item_num).

If data loaded already exists in DPFIGL03, we update this record with the c_cpprsaf  (Affiliate PRS company code)  from DPFIWC03 (Data from ZZF_BSEG CICC table).

An error stack is updated if the line item in DPFIWC03 can't be found in DPFIGL03 => no update in DPFIGL03 but the record is put into the error stack to be reprocessed during the next process chain's run.


DPFIGL03 → IB_FIGL_03

Start routine

Delete data if c_compcde = 0001 or 6050.

For a document line item, if the last entry in a data package has recordmode “X”, the recordmode is changed to “D” in order to delete the existing key in the target DSO. It is necessary to ensure there is no duplicated document in "normal" flows (DBFIGL07/08) and in the flows by Affiliate (DBFIGL21/22).

Field routine

C_COMPPRS comes from master data C_COMPCDE.

For REF_DOC_NO and REF_KEY3, all characters equal to # or ! are replaced by space.

End routine

Field co_area is determined in function of attribute co_area from master data c_compcde. If no correspondance found in c_compcde, the default value is 'FINI'.

Last character for field bus_area finish by default with "0".

Module function  ZTRANSCO_BUS_AREA is used with  with 0BUS_AREA and C_COMPCDE. This will read exception DSO (dbfiwc01) and apply value found into fields 0BUS_AREA and C_SUBACT2.

FIGL Domaine management (c_figldom): Call function mode ZDETERMINE_FIGL_DOMAIN with 0CHRT_ACCTS, 0ACCT_TYPE and 0GL_ACCOUNT. This will read 0GL_ACCOUNT master data.

If gl_type from gl_account = 'RECEIVABLES',  FIGL_DOMAIN 'AR'.

If gl_type from gl_account = 'PAYABLES',  FIGL_DOMAIN 'AP'.

If gl_type from gl_account = 'INVENTORY',  FIGL_DOMAIN 'IM'.

If gl_type from gl_account = 'ASSET',  FIGL_DOMAIN 'AA'.


IB_FIGL_03 → DBFIGL22

Start routine

Delete data if c_figldom ( FIGL Domain ) <> 'AP' and <> 'AA'. 

End routine

With method "get_landscape_from_compprs" and source field c_cpprsaf ( PRS Company code Affiliate ), we determine the lanscape associated from master data c_compprs.

If a landscape is found:

With method " get_aff_compcde_from_compprs " and source field c_cpprsaf ( PRS Company code Affiliate ) and landscape founded previously, we determine the company code and losys associated and put them into fields c_compcaf ( Company code Affiliate ) &  c_lgsysaf ( Source System Affiliate).

If c_compcaf is empty and the landscape is in master data global filter:

There is no correspondance in c_compcde
The line item is updated in target DSO but should be reprocessed we put in error stack the record.


If  c_lgsysaf is not empty and C_PCPANLG (Partner Company Legal) is not empty:

If  c_pcpanlg exist in master data c_company then  c_pcpanaf (Partner Company Affiliate) =c_pcpanlg (Partner Company Legal). 

If landscape is empty:

The line item is updated in target DSO but should be reprocessed => put in error stack 


CRFIGL08

ZZF_READ_ZZF_BSEG → DPFIWC03

Start routine

Delete data where field "Info" is empty.

Field routine

0FISCVARNT = K4.


DPFIWC03 → DPFIGL03

End routine

Search in DPFIGL03 if a record exist with same fields from data loaded (logsys, c_compcde,  ac_doc_no,  fiscyear  and item_num).

If data loaded already exists in DPFIGL03, we update this record with the c_cpprsaf  (Affiliate PRS company code)  from DPFIWC03 (Data from ZZF_BSEG CICC table).

An error stack is updated if the line item in DPFIWC03 can't be found in DPFIGL03 => no update in DPFIGL03 but the record is put into the error stack to be reprocessed during the next process chain's run.


DPFIGL03 → IB_FIGL_03

Start routine

Delete data if c_compcde = 0001 or 6050.

For a document line item, if the last entry in a data package has recordmode “X”, the recordmode is changed to “D” in order to delete the existing key in the target DSO. It is necessary to ensure there is no duplicated document in "normal" flows (DBFIGL07/08) and in the flows by Affiliate (DBFIGL21/22).

Field routine

C_COMPPRS comes from master data C_COMPCDE.

For REF_DOC_NO and REF_KEY3, all characters equal to # or ! are replaced by space.

End routine

Field co_area is determined in function of attribute co_area from master data c_compcde. If no correspondance found in c_compcde, the default value is 'FINI'.

Last character for field bus_area finish by default with "0".

Module function  ZTRANSCO_BUS_AREA is used with  with 0BUS_AREA and C_COMPCDE. This will read exception DSO (dbfiwc01) and apply value found into fields 0BUS_AREA and C_SUBACT2.

FIGL Domaine management (c_figldom): Call function mode ZDETERMINE_FIGL_DOMAIN with 0CHRT_ACCTS, 0ACCT_TYPE and 0GL_ACCOUNT. This will read 0GL_ACCOUNT master data.

If gl_type from gl_account = 'RECEIVABLES',  FIGL_DOMAIN 'AR'.

If gl_type from gl_account = 'PAYABLES',  FIGL_DOMAIN 'AP'.

If gl_type from gl_account = 'INVENTORY',  FIGL_DOMAIN 'IM'.

If gl_type from gl_account = 'ASSET',  FIGL_DOMAIN 'AA'.


IB_FIGL_03 → DBFIGL08

Delete data with c_figldom (FIGL Domaine management) <> 'AP'


CRFIGL02


DPFIGL01 is not loaded anymore.


0FI_GL_4 -> ODSFIGL1

Start routine

Load documents from DSO_FI11 (ZWFAT205 table for reclassification) into internal table itbh_fi11.

Load profit center master data into internal table itb_profit_iecra.

Load GL accounts from Global fitler master data into internal table it_filter (stream = FI_CUSACC and rule = GL_ACC)

Field routines

co_area is determined in function of attribute co_area from master data c_compcde.

0PROFIT_CTR comes from internal table itbh_fi11 (DSO_FI11). If not found, keep initial value.

0G_CWWE01: Get 0G_CWWE01 from itbh_fi11 (DSO_FI11) when is not null. If he is not found and if HKONT is in internal table  it_filter and if 0PROFIT_CTR is not null, get 0G_CWWE01 from Profit center master data (internal table itb_profit_iecra.)


ODSFIGL1 -> ODSFIGL1

Same technicales rules as 0FI_GL_4 → ODSFIGL1.


ODSFIGL1 -> ODSFIGL3

Start routine

Load active data from ODSFIGL3 into internal table itb_figl3.

Load data from ODSFIGL2 (ZWFAT123 for split) into internal table itb_figl2.

Load data from DSO_FI11 (ZWFAT205 for reclassification) into internal table itbh_fiar11.

Load profit center master data in internal table itb_profit.

Load GL accounts from Global fitler master data in  itb_account.

Save in  w_full_repair_flag value from master data global filter to know if it's full repair or not. (stream = odsfigl3 and rule = FULLREPAIR)

Load GL accounts from Global fitler master data into internal table it_filter (stream = FI_CUSACC and rule = GL_ACC)


----
For records with recordmode X (record before image) or if w_full_repair_flag = YES:

Add in source package records from internal table itb_figl3 with record mode = D (must be deleted).

For records with recordmode <> X ((record before image) and <> D (must be deleted).

Search a correspondance in itbh_fiar11 (dso DSO_FI11).

If yes:

Fields profit_ctr, co_area and g_cwwe01 come from DSO_FI11.

If the source field gl_account is in list it_filter → search and assign to source field g_cwwe01 from internal table itb_profit. 

Record mode is put in N (New image → counted as new line).

If no:

Take profit_ctr, co_area, deb_cre_dc and  deb_cre_lc come from itb_figl2 (dso ODSFIGL2)

Key figures are calculated in function of split according to ODSFIGL2 + reclassification of 0G_CWWE01 + add record with recordmode N

Field routines

gl_account: If gl_account <> '0040100349' we keep incoming values.


ODSFIGL3 → DBFIGL02

Start routine

Load GL accounts from Global fitler master data in ITB_ACCOUNT:

chrt_accts = the 4th firsts characters of C_LOW field and  gl_account the next ten characters.

If field C_CREDID is empty, check in internal table ITB_ACCOUNT if source fields chrt_accts and gl_account are present, if yes, take ac_doc_no, comp_code and fiscper from source package into internal table ITB_COLLECT_DOC. 

For gl_account 0040100310 and ac_doc_type WA, add in source fields C_MATNR and C_VENDOR the values from ODS_IC01

Load C_VENDID, C_COMPCDE and C_COMPPRS Master into internal tables ITB_COMP, ITB_VEND and ITB_PCOMP.


Load active data from ODSFIGL3 into internal table ITB_DOC if we have correspondance with internal table ITB_COLLECT_DOC for COMP_CDE, FISCPER and AC_DOC_NO and where FISCVARNT = 'K4' and ACCT_TYPE = 'K'.


End routine

If c_vendid and pcompany are not empty: take the c_compprs from internal table ITB_PCOMP (master data c_compprs).

If value is found in internal table ITB_ACCOUNT (in function of fields chrt_accts and gl_account)

Read internal table ITB_DOC (dso ODSFIGL3) with help of fields c_compcde, fiscper and ac_doc_no + acct_type = 'K'.

If value is found in ITB_DOC and C_CREDID from ITB_DOC is not empty:

Fields C_VENDID and C_VENDPRS = C_CREDIT from ITB_DOC (dso ODSFIGL").


CRFIGL05


DPFIGL02

Data loaded come from only from datasource 0FI_GL_4 → no specials rules.


DPFIGL02 → IB_FIGL_02

Start routine

Load in internal table t_gl_account data from master data GL_ACCOUNT where  BAL_FLAG = X.

Load in internal table t_exception_dso data from dso dbfiwc01.

Load in internal table t_c_compcde data from master data c_compcde.

Field routines

C_VENDID: if c_vendid is empty, take value from c_vendpo.

C_VENDPRS: comes from master data c_vendid.

C_COMPPRS: coms from master data c_compcde.

End routine

Determine 0CO_AREA from C_COMPCDE. If not found, constant value CHEF

If 0BUS_AREA is not null, replace the last character by 0 -Use function module ZTRANSCO_BUS_AREA with 0BUS_AREA and C_COMPCDE. This will read exception DSO (dbfiwc01) and apply value found into fields 0BUS_AREA and C_SUBACT2.

FIGL Domaine management (c_figldom): Call function mode ZDETERMINE_FIGL_DOMAIN with 0CHRT_ACCTS, 0ACCT_TYPE and 0GL_ACCOUNT. This will read 0GL_ACCOUNT master data.

If gl_type from gl_account = 'RECEIVABLES',  FIGL_DOMAIN 'AR'.

If gl_type from gl_account = 'PAYABLES',  FIGL_DOMAIN 'AP'.

If gl_type from gl_account = 'INVENTORY',  FIGL_DOMAIN 'IM'.

If gl_type from gl_account = 'ASSET',  FIGL_DOMAIN 'AA'.


IB_FIGL_02 → DBFIGL05

Start routine

Delete data where c_figldom <> 'AP' .


c_wbs_el2 and c_coorder are changed in start routine (to be more explained later):

The first part of the determination for these fields is done in a loop to determine the values for /bic/c_wbs_el2 and /bic/c_coorder based on certain conditions and using data from other tables like dso DPFIGL02 and GL_ACCOUNT.

The second part of the determination for these fields, specifically for the case when /bic/c_refprc = 'RMRP', is done In this section, another loop is performed to determine the values for /bic/c_wbs_el2 and /bic/c_coorder based on additional conditions and using data from the table itb_s_MKPFDocItems (DPFIGL02).



CRFIGL21

ZZF_READ_ZZF_BSEG CICC → DPFIWC03

DPFIWC03 → DPFIGL03

0FI_GL_4 CICC → DPFIGL03

DPFIGL03 → IB_FIGL_03

IB_FIGL_03 → DBFIGL21

Start routine

Delete data where C_FIGLDOM (FIGL Domain) <> 'AR' 

Field routines

0G_CWWE01 (Sub activity): Remove leading zeros from C_SUBACT2, for example from 0000001250 to 1250.

End routine

Store in internal table ITB_G_RG_LANDSCAPE values from master data global filter (c_glbfilt) with stream = CICC_AFF and rule = LANDSCAPE.

Store in internal table ITB_COMPANY values from master data C_COMPANY.

Fields C_COMPCAF (Company code - Affiliate), C_LGSYSAF (Source System - Affiliate) and C_PCPANAF (Partner Company - Affiliate) are empty.


If  C_CPPRSAF (PRS Company code - Affiliate) is not empty find the landscapte associated with method " get_landscape_from_compprs".

If a landscape is found:

Determine ERP company code from PRS company code with method " get_aff_compcde_from_compprs" with help of the landscape determined previsouly + field C_CPPRSAF (Affiliate PRS company code). Fields C_COMPCAF and C_LGSYSAF are updated.

If after that fields C_COMPCAF is still empty and if the landscape from C_CPPRSAF is present in internal table ITB_G_RG_LANDSCAPE

→ The line item is updated in target DSO but should be reprocessed, we put in error stack the record.

If  C_LGSYSAF and C_PCPANLG (Partner Company Legal) are not empty:

If  C_PCPANLG exist in internal table  ITB_COMPANY (c_company master data)

C_PCANAF (Partner Company Affiliate) = C_PCPANLG (Partner Company Legal) from result package. 

If landscape is empty:

The line item is updated in target DSO but should be reprocessed => put in error stack.


CRFIGL07

ZZF_READ_ZZF_BSEG CICC → DPFIWC03

DPFIWC03 → DPFIGL03

0FI_GL_4 CICC → DPFIGL03

DPFIGL03 → IB_FIGL_03

IB_FIGL_03 → DBFIGL07

Start routine

Delete data where C_FIGLDOM (FIGL Domain) <> 'AR'.

Field routines

C_PCOMPRS: take the last 4 characters from 0PCOMPANY.

0G_CWWE01 (Sub activity): Remove leading zeros from C_SUBACT2, for example from 0000001250 to 1250.



CRFIGL01

Same rules as CRFGIL02 for ODSFIGL1, DPFIGL01 a,d ODSFIGL3.

ODSFIGL3 → DBFIGL01

Start routine

Determine the LOGSYS with help of module function  Z_WBW_SOURCE_SYSTEM for RCS → search in master global filter for stream " LANDSCAPE" the logsys associated to "RCS".

In function of logsys determined previously and the company code present in source package, select in internal table ITB_COMP company and company code prs from master data C_COMPCDE.

Select in internal table ITB_PCOMP the company code PRS and Company code from matser data C_COMPPRS.

Select in internal table ITB_H_GLACCT_PAYABLES chrt_accts and  gl_account from master data gl_account (if there are present in source package) where gl_type = 'PAYABLES".

Field routine

C_COMPPRS and C_PCOMPRS are empty (updated in end routine).

C_SUBACT2: determined from internal table ITB_H_GLACCT_PAYABLES (master dtaa GL_ACCOUNT) with help of chrt_accts and gl_account.

End routine

For each line from result package:

Assign to field C_COMPRRS the C_COMPPRS from internal table ITB_PCOMP (master data c_compprs) with help of logsys and company code (only if a result is found).

If C_VENDID and C_PCOMPAN are not empty:

Assign to field C_PCOMPRS the C_PCOMPRS from internal table ITB_PCOMP (master data c_compprs) with help of field C_PCOMPAN.

DPFIGL01 → IB_FIGL_01→ DBFIGL01

Not used, DPFIGL01 is empty.



CRFIGL04

DPFIGL01 → IB_FIGL_01→ DBFIGL01

From datasource to dso DPFIGL02 and infosource IB_FIGL_02 thereare the same rules as CRFIGL05.

IB_FIGL_02 → DBFIGL04

Star routine

Data where field C_FIGLDOM (FIGL domain) is different from 'AR' are deleted.

Field routine

C_PCOMPRS: take the last 4 characters from 0PCOMPANY.

0G_CWWE01 (Sub activity): Remove leading zeros from C_SUBACT2, for example from 0000001250 to 1250.


CRFIPA06


DBFIAP99 is a backup for DBFIAP01 not used since 2019.


DTS_FIAP_THDR → ODS_FIIS

Start routine

Determine fical period in function of posting date.

If field in source FI_MM_LG (FI / MM Doc) = 'MM":

Add in internal table ITB_FIAP1_COLLECT fields comp_code, fiscper and c_mmdocnu from source field comp_code, fiscal period dtermined previously and sap_doc_no.

Else, add in internal table ITB_FIAP2_COLLECT the same fields with same source + c_credit from source field vendor_no.


Select fields from ODSFIAP1 in internal table ITB_FIAP1 in function of internal table ITB_FIAP1_COLLECT (comp_code, fiscper and sap_doc_no).

Select fields from ODSFIAP1 in internal table ITB_FIAP2 in function of internal table ITB_FIAP1_COLLECT (comp_code, fiscper, sap_doc_no and vendor_no).

Field routine

AC_DOC_NUM: if field in source fi_mm_flg 'FI', the AC_DOC_NUM = SAP_DOC_NO from source. Else, take the AC_DOC_NO from internal table ITB_FIAP1 (data from ODSFIAP1 in function of comp_code, fiscper and sap_doc_no). For other cases, the AC_DOC_NUM is empty.

C_MMDOCNU: comes fromsource field SAP_DOC_NO.

0AEDAT: date of loading.

CO_AREA: If for source field FI_MM_FLG 'MM', CO_AREA comes from ITB_FIAP1. Else from ITB_FIAP2. (Empty if nothing is found in internal tables).

It's the same principle for fields PROFIT_CTR, FI_DOCSTAT, 0PLANT, 0POST_KEY, K_MWSTS (VAT Amount in Local currency), 0DEB_CRE_LC, 0LOC_CURRCY, and C_BUDAT → if FI_MM_FLG = MM, fields come from ITB_FIAP1? else ITB_FIAP2 (if no correspondance, empty). 





ODS_FIIS → ODSFIAP1

Transformation: ODSFIAP1 -> ODSFIAP4

TRSF: ODSFIAP4 -> DBFIAP01 (Rhodia)

DPFIWC01 -> DBFIAP01

DPFIAP01 -> DBFIAP01

TRSF: ODSO DBFIAP01 -> ODSO DBFIPA10


ODS_FIIS → DPFIAP01

TRSF: DPFIAP01 -> DPFIAP01

ODSO DPFIAP01 -> TRCS IB_FIAP_01

TRCS IB_FIAP_01 -> ODSO DPFIAP01

TRSF: DPFIAP01 -> DBFIAP01 (Rhodia)

ODSO DBFIAP01 -> TRCS IB_FIAP_02

TRCS IB_FIAP_02 -> ODSO DBFIAP01

TRSF: ODSO DBFIAP01 -> ODSO DBFIPA10

TRSF: ODSO DBFIPA10 -> TRCS IB_FIPA_02

TRSF: TRCS IB_FIPA_02 -> ODSO DBFIPA10

TRSF: ODSO DBFIPA10 -> CUBE CRFIPA06

CRFIPA08

CRFIPA01

CRFIPA04

CRFIPA07

CRFIPA09


CRFIPA02

CRFIPA05

CRFIAP03

CRFIAP01

CRFIAP05

CRFIAP02

CRFIAP06

CRFIAR03

CRFIAR01

CRFIAR15

CRFIAR02

CRFIAR16

CUB_MAG01

CRFIGL13

CRFIGL14

CRFIGL03

CRFIGL06

2.2 Technical Rules on Workbench


2.3 Dependencies with other applications

  • We should have the information where the application is sending or receiving information (e.g. APD open hub) 

APD

 

DOMAIN

PROCESS

NAME

QUERY

TARGET

PC







Open Hub

 

Domain

OH

Name

Query

Target






3.0 Data Loading

3.1 Info Providers and objects loaded 

Detail of process chain, list + link between or special event done for the loading

Main Process ChainFinal Provider LoadingFrequencyTime startDuration



4.0 Comments