cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Performance when posting journals

A_Warhonowicz
Participant
0 Kudos
606

Hi all,

we are on BPC 10.0 NW which we use for consolidation. We use journals for adjustments but find the performance very poor. Posting individual journals can take two or more minutes and if we try to post several at once, the process fails after 20 journals.

Are there any parameters we can adjust in BPC or BW to make the posting quicker and avoid the failure when posting more than 20 journals?

Thanks,
Arnold

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member186338
Active Contributor
0 Kudos

Do you have:

default.lgf

journal.lgf

write back badi

validation badi

?

P.S. Can you test journal posting on the fresh copy of ENVIRONMENTSHELL?

A_Warhonowicz
Participant
0 Kudos

We have default and journal scripts but no badi.

To test on a fresh copy I will have to wait until next week as I need someone else to make a copy.

former_member186338
Active Contributor
0 Kudos

"We have default and journal scripts" - please post journal.lgf

A_Warhonowicz
Participant
0 Kudos

========= JOURNAL.LGF
*INCLUDE CALCACCOUNT.LGF

*RUN_PROGRAM CURR_CONVERSION
CATEGORY=%CATEGORY_SET%
CURRENCY=EUR
TID_RA=%TIME_SET%
RATEENTITY=Global
*ENDRUN_PROGRAM

*INCLUDE ICMATCH.LGF

========= CALCACCOUNT.LGF
*FOR %CAT1%=%CATEGORY_SET%

*RUN_PROGRAM CALC_ACCOUNT
CATEGORY=%CAT1%
CURRENCY=LC
TID_RA=%TIME_SET%
OTHER=[ENTITY=%ENTITY_SET%]
CALC=STUFE1
*ENDRUN_PROGRAM

*RUN_PROGRAM CALC_ACCOUNT
CATEGORY=%CAT1%
CURRENCY=LC
TID_RA=%TIME_SET%
OTHER=[ENTITY=%ENTITY_SET%]
CALC=STUFE2
*ENDRUN_PROGRAM

*RUN_PROGRAM CALC_ACCOUNT
CATEGORY=%CAT1%
CURRENCY=LC
TID_RA=%TIME_SET%
OTHER=[ENTITY=%ENTITY_SET%]
CALC=STUFE3
*ENDRUN_PROGRAM

*RUN_PROGRAM CALC_ACCOUNT
CATEGORY=%CAT1%
CURRENCY=EUR
TID_RA=%TIME_SET%
OTHER=[ENTITY=%ENTITY_SET%]
CALC=STUFE3
*ENDRUN_PROGRAM

*NEXT

========= ICMATCH.LGF
*SELECT(%ACCOUNT_SRC%,[ID],"ACCOUNTL","[PMATCH_ACCOUNT]<>'NONE'")
*SELECT(%INTCO_SRC%,[ID],"INTCO","[ICMATCH] = 'Y'")
*SELECT(%ENTITY_SRC%,[ID],"ENTITY","[ICMATCH] = 'Y'")

*XDIM_MEMBERSET ACCOUNTL = %ACCOUNT_SRC%
*XDIM_MEMBERSET INTCO = %INTCO_SRC%
*XDIM_MEMBERSET ENTITY = %ENTITY_SRC%
*XDIM_MEMBERSET ACCTDETAIL = F_CLO
*XDIM_MEMBERSET CURRENCY = EUR
*XDIM_MEMBERSET CATEGORY = %CATEGORY_SET%
*XDIM_MEMBERSET TIME = %TIME_SET%
*XDIM_MEMBERSET SCOPE = G_NONE

*WHEN ACCTDETAIL
*IS F_CLO
*REC(FACTOR = 0,ACCTDETAIL = F_CLO_INTCO,ACCOUNTL = ACCOUNTL.PMATCH_ACCOUNT,ENTITY = INTCO.ENTITY,INTCO = ENTITY.INTCO)
*REC(FACTOR = 0,ACCOUNTL = ACCOUNTL.PMATCH_ACCOUNT2)
*ENDWHEN

*WHEN ACCTDETAIL
*IS F_CLO
*REC(EXPRESSION = %VALUE%,ACCTDETAIL = F_CLO_INTCO,ACCOUNTL = ACCOUNTL.PMATCH_ACCOUNT,ENTITY = INTCO.ENTITY,INTCO = ENTITY.INTCO)
*REC(EXPRESSION = %VALUE%,ACCOUNTL = ACCOUNTL.PMATCH_ACCOUNT2)
*ENDWHEN

former_member186338
Active Contributor
0 Kudos

Ups, no surprise that with this script journal save is very slow!

You have to optimize it of to move the logic to DM package.

former_member186338
Active Contributor
0 Kudos

P.S. Looks like calculations in EUR before currency conversion:

...
*RUN_PROGRAM CALC_ACCOUNT
CATEGORY=%CAT1%
CURRENCY=EUR
TID_RA=%TIME_SET%
OTHER=[ENTITY=%ENTITY_SET%]
CALC=STUFE3
*ENDRUN_PROGRAM
...

Anyway the required logic has to be described.

A_Warhonowicz
Participant
0 Kudos

STUFE1 copies data on P&L accounts from flow elements used for segments onto the closing element.

STUFE2 copies the result from the P&L to equity.

STUFE3 copies the total of the flows on balance sheet accounts onto the closing element.

I agree that STUFE3 in EUR can be deleted from the logic.

The ICMATCH script copies data reported with partner information from the reporting entity to the partner entity so the local user can run a reconciliation report on intercompany data (we only have the consolidation cube, not a seperate ic cube).

former_member186338
Active Contributor
0 Kudos

The main issue of this script is that the scope is fixed or *RUN_PROGRAM is used.

A lot of calculations are performed even if you post a single line journal...

A_Warhonowicz
Participant
0 Kudos

I will test and see what kind of performance I get after removing the EUR version of STUFE3 and deleting the *XDIM_MEMBERSET SCOPE=G_NONE.

former_member186338
Active Contributor
0 Kudos

For example:

posting single line for single account, flow, intco, ..., time, category

*RUN_PROGRAM CURR_CONVERSION
CATEGORY=%CATEGORY_SET%
CURRENCY=EUR
TID_RA=%TIME_SET%
RATEENTITY=Global
*ENDRUN_PROGRAM

will perform conversion for all: account, flow, intco,...

Only time and category will be restricted

former_member186338
Active Contributor
0 Kudos

Close to nothing! Please read my prev. comment.

A_Warhonowicz
Participant
0 Kudos

True but the currency conversion also runs as part of my default script and that does not take very long. Plus I am not sure how I could restrict the conversion further.

former_member186338
Active Contributor
0 Kudos

It's not only currency conversion but all CALC_ACCOUNT etc...

Please read my blog about default.lgf: https://blogs.sap.com/2014/06/09/how-to-write-defaultlgf/

In some cases you can use OTHER filter in *RUN_PROGRAM xxx

In some cases it's better to replace *RUN_PROGRAM with WHEN/ENDWHEN loop without scope.

The idea is to perform calculation only for changed data!