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

Custom BADI calling from BPC DMPs

Former Member
0 Likes
1,118

Dear All

We have one script logic, which has clear statement or set of data region followed by a custom badi.

However this scipt was there in default logic, however to improve performance we have placed this script logic in separate logic file.

we have tried to call this script from DMP, however when we link to allocation process chain it got failed.

could you please let us know, to which standard process chain we can relate to call this script.. There are no parameters to pass explicitly because we are scoping everything in script logic.

please advise

thanks in advance...

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member186338
Active Contributor
0 Likes

You can use DEFAULT_FORMULAS chain...

But please, provide the script you want to run!

Vadim

P.S. Allocation chain is also fine, please explain what do you mean by "failed"....

Former Member
0 Likes

Dear Vadim

thanks for prompt reply.

Does the process chain Default_formulas alter any data apart from calculations mentioned in script?

The allocation chain failed because i have removed prompt..

I have selected Default_formulas chain now and placed the script . its executing now. Does this process chain alter data?

Here is the script... When i execute this script in UJKT, it ran for 5hrs. Will it be same time if i run thru this DMP? if so, can i assume its normal or any issues with BADI,. Badi worked well earlier but this script logic was there in default logic. But i want to run from DMP.

Please advise. here is the script.

I am not scoping Business unit dimension, hope by default it will take all bas members.

Secondly, does BADI takes from scope in script or from input template? because this logic was placed in default logic earlier which consumed several minutes when user refreshed input template.

//Delete values from Reporting AudiTrail

*XDIM_MEMBERSET TIME=BAS(CALCTIME)

*XDIM_MEMBERSET AUDITTRAIL=C_REPORTING_YTD, C_REPORTING_QTD

*XDIM_MEMBERSET UOM_REPORTING=BASE

*XDIM_MEMBERSET PR_ACCOUNT = <ALL>  //all base members without member formulas

*XDIM_FILTER CATEGORY = [CATEGORY].PROPERTIES("NO_INPUT") = "N" //select categories open for inputs

*WHEN PR_ACCOUNT

*IS *

*REC(FACTOR = 0)

*ENDWHEN

*COMMIT

//Data selection Reporting

*XDIM_MEMBERSET TIME=BAS(CALCTIME)

*XDIM_MEMBERSET AUDITTRAIL=C_MANUAL

*XDIM_MEMBERSET UOM_REPORTING=BASE

*XDIM_MEMBERSET PR_ACCOUNT = <ALL>  //all base members without member formulas

*XDIM_FILTER CATEGORY = [CATEGORY].PROPERTIES("NO_INPUT") = "N" //select categories open for inputs

//insert BADI

*START_BADI AVERAGES_CALC

//[{parameter_name}={value}]

//...

*END_BADI

former_member186338
Active Contributor
0 Likes

You haven't closed the previous discussion for the same subject.

Vadim

Former Member
0 Likes

hi Vadim

yes i will close..

Actually we were unsure for the wrong calculations made in badi

hence raised that it could be issue with script logic . we are trying this option of BADi..

I will close that thread.

could you please help for the above query

thanks

former_member186338
Active Contributor
0 Likes

"Does the process chain Default_formulas alter any data apart from calculations mentioned in script?" - No, only script calculations!

"The allocation chain failed because i have removed prompt.." - Not clear without sample

"I have selected Default_formulas chain now and placed the script . its executing now. Does this process chain alter data?" Process chain only execute script referenced in the DM package advanced script.

"Here is the script... When i execute this script in UJKT, it ran for 5hrs. Will it be same time if i run thru this DMP? if so, can i assume its normal or any issues with BADI" - UJKT time=DM time if the scope is the same!

Are you sure that the scope is correct?

Script itself - remove useless parts:

*XDIM_MEMBERSET TIME=BAS(CALCTIME)

*XDIM_MEMBERSET AUDITTRAIL=C_REPORTING_YTD, C_REPORTING_QTD

*XDIM_MEMBERSET UOM_REPORTING=BASE

*XDIM_MEMBERSET PR_ACCOUNT = <ALL>  //all base members without member formulas

*XDIM_FILTER CATEGORY = [CATEGORY].PROPERTIES("NO_INPUT") = "N" //select categories open for inputs

*WHEN PR_ACCOUNT

*IS *

*REC(FACTOR = 0)

*ENDWHEN

//Data selection Reporting

*XDIM_MEMBERSET AUDITTRAIL=C_MANUAL

//insert BADI

*START_BADI AVERAGES_CALC

//[{parameter_name}={value}]

//...

*END_BADI

Vadim

P.S. What is the CALCTIME? Function?

Former Member
0 Likes

hi Vadim

thanks for the inputs

CALCTIME is one member  in Time dimension have bas members.

the scope is correct, earlier it was in default logic. I was thinking if only scope coming from input template is going to BADI or the scope is going to BADI.

Please let me know if the above DMP linked to this script is fine?

and yes, it ran for 5hrs in UJKT. User raised this high mentioning performance issue with input templates. However this logic was placed in default logic, i thought i could optimize by placing this script and in separate logic and DMP keeping default logic empty.

Please advise.

we have recently upgraded BPC10 sp09 to SP16 [ client requirement ]

EPM addin from Sp13 to SP18.

SAP_BW    730    0013    SAPKW73013    SAP Business Warehouse

CPMBPC    800    0016    SAPK-80016INCPMBPC    CPM Business Planning and Consolidation

POASBC    100_730    0013    SAPK-10113INPOASBC    POASBC 100_730: Add-On Installation

former_member186338
Active Contributor
0 Likes

If you define scope with *XDIM_MEMBERSET. .. then the scope will be the same in default.lgf and in DM package. Filter work differently - have you read my document about default.lgf?

Vadim

Former Member
0 Likes

hi Vadim

yes, I have read it. thanks for the inputs.

so the DMP linked to this script should work fine ?

please let me know.

The BADI is still executing for the past 2hrs.. Do you think any issues with BADI or will it take normally for calcuations. The BADi is for calculating qtd.ytd measures and put in respective members.

thanks

former_member186338
Active Contributor
0 Likes

Sorry, but I have no idea why badi is working so slow (code have to be debugged).

In UJKT in your previous discussion you have the scope:

TIME:2011.01,2011.02,2011.03,2011.04,2011.05,...60 in total.

AUDITTRAIL:C_REPORTING_QTD,C_REPORTING_YTD,2 in total.

UOM_REPORTING:BASE,1 in total.

PR_ACCOUNT:PR_01,PR_02,PR_03,PR_04,PR_05,...52 in total.

CATEGORY:DATA_INPUT,1 in total.

For badi the scope will be:

TIME:2011.01,2011.02,2011.03,2011.04,2011.05,...60 in total.

AUDITTRAIL:C_MANUAL,1 in total.

UOM_REPORTING:BASE,1 in total.

PR_ACCOUNT:PR_01,PR_02,PR_03,PR_04,PR_05,...52 in total.

CATEGORY:DATA_INPUT,1 in total.

Total intersections: 60*1*1*52*1=3120 - not a lot! even if it will generate 6240 records...

5 hrs - too long!

Something wrong with the badi code...

Vadim

Former Member
0 Likes

Thanks Vadim, there is another dimension which is Business_unit and its not scoped .

Just now the package failed saying Run_logic error

RUN_LOGIC:An exception has occurred

a

former_member186338
Active Contributor
0 Likes

Ups, PR_BUS_UNIT - yes! And how many members?

Try to fix with *XDIM_MEMBERSET PR_BUS_UNIT= singlebasemember

To understand the time to process single unit...

Vadim

P.S. BPC client logs are not useful, show package log!

Former Member
0 Likes

Hi Vadim

there are nearly 55 bas members of PR_BuS_Unit.

yes, attaching package log and formula log that ended with fail.

Sure, I just fixed for one PR_BUS_UNit now and ran the package. its executing now.

plz let me know if you find anything wrong in log files.

thanks

former_member186338
Active Contributor
0 Likes

You error is due to badi execution! I have told you already number of times that you need a qualified ABAP developer to debug your badi. Looks like 3120*55 = 171600 - not a small number and can result in slow execution and errors if you have bad badi code.

By the way the formula log is truncated and provide no info about badi execution, use UJKT!

Vadim

Former Member
0 Likes

hi Vadim

sure i will engage abeper   to look into this.

thanks for valuable inputs.

I just ran one more time by hardcoding single Pr_Bus_unit to check if its properly called or not.

One query, For this process chain default_formulas, can i put prompt for selecting limited number of business unit? so that we can avoid huge hit on badi???

if so, will the process chain accept another prompt, currently category prompt is there

please advise.

if the single PR_BUS_unit gets succesful , i will try by puting prompt to select PR_BUS_unit alone

thanks for your valuable time.

and sure i will engage abaper as well

former_member186338
Active Contributor
0 Likes

"One query, For this process chain default_formulas, can i put prompt for selecting limited number of business unit?"

Read help: SELECTINPUT Prompt() Command - SAP BusinessObjects Planning and Consolidation - SAP Library

Then edit DM advanced script:

PROMPT(SELECTINPUT,,,,"CATEGORY,PR_BUS_UNIT")

Then in the script logic:

*XDIM_MEMBERSET PR_BUS_UNIT=%PR_BUS_UNIT_SET%

Vadim

former_member186338
Active Contributor
0 Likes

By the way, after optimizing the badi code you can improve performance using parallel processing with RUNLOGIC_PH:

Use parallelization on  PR_BUS_UNIT dimension.

Vadim

Former Member
0 Likes

dear Vadim

Are there any incompatibility issues of Service pack upgrade to abap code?

till last month same badi worked fine, but after upgrade its hanging up

former_member186338
Active Contributor
0 Likes

This message was moderated.

Former Member
0 Likes

dear vadim

we made a debug on badi code and traced out the processing records.

out of which we noticed one certain combination has been duplicated . Not sure only for this account and business unit it happened. When i remove this combination and run in ujkt, the results are promising.

Here is the sample data fetched from temp table during execution.

like wise for C_reporting_YTD also duplication happened.

ideally, it should generate one record for 2011.01 and 2011.02 and so on..

only for the Account SU_10 and business unit AF_0303

I tried to delete those members and run , but system not allowing..

however i remove this two members from ujkt and executed, it went fine.

Please advise if any ..

i will thankful..

thanks

former_member186338
Active Contributor
0 Likes

I can't comment without full badi code...

Any code can be written with some bugs!

Former Member
0 Likes

hi Vadim

i have debugged the code

its generating one additional record to input table of badi

its generating uom_reporting -_> bbl in addition

though we are scoping

*XDIM_MEMBERSET UOM_REPORTING=BASE

before calling badi..

Is BASE any key word in script logic which generating other records

?

please advise

former_member186338
Active Contributor
0 Likes

"Is BASE any key word in script logic which generating other records" - no!