Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Order to choose: BAdI, Customer Exits, Implicit and Explicit Enhancements

Former Member
0 Kudos

Hi,

Which of the enhancements techniques should I look first? Is this?

1- Kernel BAdI

2- Classic BAdI

3- Customer Exits

4- Explicit Enhancement

5- Implicit Enhancement

What would be the correct priority order to verify that's available?

Could you please provide the links from where you got the information?

Thank you!

8 REPLIES 8

Abhijit74
Active Contributor
0 Kudos

Hello,

1. Customer Exit,

2. Classic BAdI

3. Kernel BAdI

4. Implicit Enhancement

5. Explicit Enhancement

Thanks,

Abhijit

kakshat
Advisor
Advisor
0 Kudos

Hi Leandro,

The order you specified is correct except one thing. I am not sure what you understand by explicit enhancement. Explicit enhancement is a generic term used to cover all types of 'explicit' enhancements. This may include enhancement spots, enhancement sections, BAdIs. They are called explicit because their position in the standard code is defined explicitly. On the other hand, we have implicit enhancements whose position is implicit i.e. at the beginning and end of programs.

With that understanding, explicit enhancement would be the preferred choice over implicit enhancement.

Former Member
0 Kudos

Hi Kumar. I know what explicit enhancement is. Sorry for not being clear.

When I said explicit enhancement I was referring to enhancements points and enhancements sections.

So, if you had to choose between "enhancements points and enhancements sections" vs BAdI, which would you choose? With BAdI you can have different implementations specifying filters. Can this also be done with enh. points and sections? Maybe you can use conditions in the enh. points/sections to mimic filters, but would be an uglier solution, because you would have all implementations in the same place.

0 Kudos

First of all, I believe it would rarely happen that you have a BAdI as well as an enhancement point/section to accomplish the same thing. Having said that, if you do run into a situation where you have to choose between the two, then yes, BAdI would offer you the advantage of having filters but that is subject to the BAdI definition. It has to be a filter-based BAdI for you to be able to exploit that advantage.

Like multiple-use BAdIs, enhancement points can have multiple active implementations in which case all of them would be executed (in no particular order). On the other hand, an enhancement section can have only one active implementation at a given point in time.

Further, as you would probably know, the uniqueness of enhancement section is that it allows you to replace a section of standard code with your own code. This is slightly different from other enhancement techniques which basically let you attach additional logic to standard logic.

Former Member
0 Kudos

Thanks a lot Kumar. Amazing answer as always. They moved my thread to this forum, but now it's no longer marked as a question, so I cannot mark your reply as the correct answer ... 😕

If it was marked as a question, it should continue as a question when moved ... bug??

0 Kudos

He he, maybe!

0 Kudos

If it was marked as a question, it should continue as a question when moved ... bug??

Yes, it should.

Some Moderator might have "un-marked" your discussion as a question - due to genericness of it (may be). Anyway if you think this is not correct, you can hit the abuse button

Cheers,

Suhas

Sougata
Active Contributor
0 Kudos

Hi Kumar,

I'm trying to understand why has SAP released the explicit enhancement options to the customers and did not keep these for internal use only? Is it only for the purpose of:

  1. To be able to wrap the repairs to the standard programs into custom Enhancement Spots (as a source code plug-ins or Kernel BAdIs) then using Enhancement-Point or Enhancement-Section in the repair so that its much easier to upgrade in future; and
  2. To be able to use the Switch framework for these custom created explicit enhancements so that they could be switched off to easily seggregate the SAP bugs from custom bugs?

If there's no SAP defined explicit enhancement options found in a standard program then usually the developers enhance this using implicit enhancement option (as source code plug-in) at start or end of the form or function module etc.

Do you see any value to wrap an implicit enhancement into a custom enhancement spot (which then hooks itself to a custom explicit enhancement) i.e. by enclosing the implicit custom code within syntax Enhancement-Point enh_id SPOTS spot 1 spot 2 so that it could be Switchable when required and/or an OO approach to enhancement can be realised for example when using a Multiple use implementation for a new BAdI  ... what do you think?

Sougata.