BPC NW runs on top of the NetWeaver ABAP stack. So all BPC logic is written in ABAP. BAdIs are a way to add modifications to the standard code line in BPC without touching the standard code. BAdI implementations are defined by SAP, and implemented by the customer. There are specific places within the standard code which call specific BAdIs. When you implement a BAdI, you write ABAP code in the implementation.
Hope this helps.
Thanks Rich, couple of clarifications please-
You said "When you implement a BAdI, you write ABAP code in the implementation." - so basically what you mean is BAdi is just a predefined/prepackaged ABAP code?
Also, you mentioned "NetWeaver ABAP stack", could you please elaborate on that?
BADI is nothing but the most flexible way in defining your logic or planning functions. You use ABAP codes for defining the logics.
Let me keep it simple, BADI is nothing but the standard way to write ABAP code.
And the role of BADI in BPC is, In NW platform of BPC all the functionalities like, adding any BPC object, Processing etc are implemented using BADI.
In BPC for NW we have two stacks, Java and ABAP stack. Java Stack is nothing but the one used in providing the user interface like the status update when you process a dimension etc.
ABAP stack is mainly for getting the task to be performed from .Net Server through Java Stack and trigger the process(Function Module) accordingly in NW system.
Please check the BPC NW architecture in the sizing document to get more detailed information on this.(You can get this in service market place)
Hope this helps,
G.Vijaya Kumar wrote:
> And the role of BADI in BPC is, In NW platform of BPC all the functionalities like, adding any BPC object, Processing etc are implemented using BADI.
> In BPC for NW we have two stacks, Java and ABAP stack. Java Stack is nothing but the one used in providing the user interface like the status update when you process a dimension etc.
> ABAP stack is mainly for getting the task to be performed from .Net Server through Java Stack and trigger the process(Function Module) accordingly in NW system.
Actually, that's not right at all. BAdIs are NOT responsible for all functionalites in BPC. BAdIs are object oriented version of user exits, or customer exits. The definitions and hooks are placed specific at certain points in the product, so that you can implenment your own code at those points. They are not predefined packages of code, they do NOT even contain code untill you implement them. We only supply the definition, and the actual call to the BAdI in the main codeline. You then implement the BAdI, insert your own code, and this code is executed at the correct time.
Also, in BPC NW, we do not even use the java stack for anything. It is not responsible for the user inteface at all. The user interface for BPC is written in VBA which makes web service calls to the .net server, which then makes RFC calls to the ABAP tier.
Just to answer your specific questions- There are various reasons for BADI usage in BPC. As a result, SAP created mutiple BADI enhancement spots which customers use to create their implementations (custom code). We have
UJD_ROUTINE - (to create start or end routines and use the BADI filters created as part of the definition in the BPC transformation file ( There is a how-to on this. Refer this for more business context information.
UJ_CUSTOM_LOGIC - This is used if you have a functionality or a business logic that cannot be achieved through native BPC script logic. We can write the custom code in ABAP in the BADI implementation using this and and call it from the script logic.
We have a scenario where we wanted to read the value of sign data of an account in BPC. The value of could be either 1 or 2. If the value is 1 then , a certain processing needs to be initiated. If the value of the account is 2, then a different processing. It was not possible to do this kind of processing with native BPC script logic.
There is also another BADI enhancement spot called UJR_WRITE_BACK. There is also information about this in SDN. This is for writing back data to parent members using this.
Hope it is clear now.
I have written several How-To guides on BPC BAdIs last year. Each of them has a business scenario associated with them. You can find this HTGs on our EPM HTG wiki page.