The New Enhancement Framework – Part 3

Tony CecchiniAnthony Cecchini is the President of Information Technology Partners (ITP), an SAP consulting company  headquartered in Pennsylvania. ITP offers comprehensive planning, resource allocation,  implementation, upgrade, and training assistance to   companies. Anthony has over 17 years of  experience in SAP R/3 business process analysis and SAP systems integration. His  areas of expertise  include SAP NetWeaver integration; ALE development; RFC, BAPI, IDoc, Dialog, and Web Dynpro  development; and customized Workflow development. You can reach him at ajcecchini@itpsap.com.

Advantages of the Enhancement Framework

OK, in Part 3 of this blog, let’s take a deeper look at the advantages of  using enhancements in the New Enhancement Framework.

In all the aspects, enhancements are more powerful than modifications, even given all the modification support that transaction SPAU offers. The reason is due to an important difference between an enhancement and a modification that stems from the conceptual difference between the two technologies.

Lets quickly review….

Modifications are part of the unit they modify. This is why modifications are first overwritten during an upgrade. As you have already learned, if you change objects that belong to the SAP namespace, these objects are replaced during an upgrade.
Enhancements are objects in their own right. If you, as a customer, write an enhancement, it belongs to your namespace, not to that of SAP. As a matter of fact, it belongs to a package of yours and is your transport object: Customer enhancements are customer objects. The fact that enhancements are objects in their own right has a few important consequences. It is possible to:

– Transport enhancements separately from the compilation unit they enhance

– Keep or merge enhancements from developments in parallel or subsequent  systems

– Group, or even nest, these objects, so that developers can easily view the available enhancement possibilities

– Attach documentation to these objects, so that additional information about particular enhancements is readily accessible without cluttering the source code

– Track who made which changes to what objects

Past SAP releases have offered enhancement technologies such as appends, includes, customer exits, and BAdIs. The Enhancement Framework is intended to integrate these technologies, improve upon them, and add some new ones to address recent developments such as Web Dynpro.

SAP has developed this framework to fully take advantage of all the opportunities enhancements offer.

 The Enhancement Framework concept:

At the core of the Enhancement Framework is the concept of an enhancement. The basic idea might at first sound a bit confusing: Making an enhancement is like modifying an object without a modification. While an enhancement behaves in many respects like a modification, it is not a modification, and hence has none of the drawbacks of modification. We can actually Enhance objects without modifying them

So how do enhancements using the enhancement framework without  modifications work? At some positions of a development object (i.e. code, parameters, forms, methods…etc ) you can enhance the object. These positions are called enhancement options. Such an option is like a hook for an enhancement. It is where you can attach the enhancement or, to use the correct full term, the enhancement implementation element. By using this predefined hook,  you do not modify the compilation unit that you are enhancing. The implementations you add via these hooks are
processed at the appropriate position in the unit at run-time, but as transport objects, they are objects in their own right and can, for example, can belong to
different package.

Enhancement Framework

Compare the enhancement technology to a wall storage unit system, say from Rubbermaid. I have one of these in my garage. These storage systems typically allow you to insert a variety of elements at various positions without drilling holes in wall unit. At each position you can insert a element that holds a bike, or a garden hose, or even a cabinet; the available positions are where hooks have been provided by the manufacturer. Different positions may offer different kinds of hooks, and each hook type fits exactly one kind of element that can be inserted there. Once you have attached an element, a shelf for example, it seems as if the element is really part of the wall unit, but in fact it is only attached to the parts of the wall unit by the hooks. You haven’t really changed the delivered wall unit, you enhanced it. The element you used is its own object in its own right.

In a similar way, the enhancements look and behave as if they were part of the unit to which they are attached. They are processed at the point where they are inserted, but, as a matter of fact, they belong to a unit of their own. The different types of wall storage unit elements described in our comparison correspond to different types of enhancements you can use in SAP.

It depends on the type of the enhancement option, on what kind of  enhancement you can insert there. There are, for example, options for adding a source code plug-ins, an additional method to a global class, or screen elements to a Web Dynpro component, to name a few. This means that you can’t enhance Repository objects anywhere that you like — you can insert an enhancement only where there is an enhancement option. As a result of this separation  between the enhancement definition and the implementation, enhancements are processed at the appropriate position in the source code unit, but they themselves are not part of the unit.

This structure allows you to adapt an object without making a modification — the only change to the source code is the insertion of the “hooks” to which the actual enhancements are attached. In contrast to modifications, customer  enhancements are in the customer namespace, which means that they are not overwritten by an upgrade.

So, at the center of the Enhancement Framework there is a simple structure along with some basic concepts….

Enhancement options are hooks for enhancements. Since they define the possibility to enhance an ABAP Repository object, they reside on the definition side of the framework.

Enhancement implementation elements are attached to those hooks.  Since they actually implement the changes, they reside on the implementation side of the framework.

The enhancement framework is intended to unify and standardize all the previous enhancement technologies and is naturally quite complex, but as you can see, its basic structure is extremely simple. We have hooks we hang elements on…

Now I know your are chomping at the bit, so in the next part of this Blog we will a look at the individual technologies offered by the Enhancement Framework. I will go into each one in detail with some pictures to help drive home your understanding. But please do not run out and start enhancing your system. The final blog installments after the next, will further refine your understanding and give you a set of tips and rules to follow when using the enhancement framework.

This is a powerful technology and I can not emphasize the importance of planning before you use the Enhancement Framework to adapt your SAP system.

To read part 1 of this series on the Enhancement Framework, use the following link.  The New Enhancement Framework – Part 1.

To read part 2 of this series on the Enhancement Framework, use the following link.  The New Enhancement Framework – Part 2.

ITP logo

If you enjoyed this blog, The New Enhancement Framework – Part 3, please fill out the form below to sign up for our newsletter. We deliver SAP Technical tips & tricks, SAP news, and the current month’s BLOG right to your inbox!

Related Posts

Comments (2)

[…] To read part 3 of this series on the Enhancement Framework, use the following link.  The New Enhancement Framework – Part 3. […]

[…] To read part 3 of this series on the Enhancement Framework, use the following link.  The New Enhancement Framework – Part 3. […]

Comments are closed.

Pin It on Pinterest

Share This

If you enjoyed this post, why not share it with your friends!