Application Development and Automation 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: 
Read only

How we will decide whether it should be Implicit or Explicit Implementation

kiran_k8
Active Contributor
0 Likes
3,516

On what criteria we will decide whether we should go for Implicit enhancement or Explicit enhancement.In my case we added an INCLUDE in the subroutine USEREXIT_SAVE_DOCUMENT_PREPARE of MV45AFZZ to provide a customised functionality.

Now,instead of adding an INCLUDE in MV45AFZZ we are planning to use enhnancement framework.When we double click the subroutine USEREXIT_SAVE_DOCUMENT_PREPARE in MV45AFZZ it is navigating us to MV45AF0B_BELEG_SICHERN where immediately after the subroutine PERFORM userexit_save_document_prepare we found an enhancement spot

enhancement-point beleg_sichern_13 spots es_sapmv45a.

Within this enhancement spot es_sapmv45a I had created an explicit implementation and encapsulated the code as per my requirement.

Now my query is Can we do the same by creating an Implicit enhancement within MV45AFZZ instead of creating an explicit implemenation within the spot ES_SAPMV45A.

kindly let me know on what basis we will decide whether we should go for an explicit or implicit enhancement.

Is it like if there are no implicit enhancement option available in Form USEREXIT_SAVE_DOCUMENT_PREPARE of MV45AFZZ we should check for Explicit implementaion ?

Thanks,

K.Kiran.

1 ACCEPTED SOLUTION
Read only

marcin_milczynski
Contributor
0 Likes
1,589

Hi Kiran,

You can move the implementation as implicit enhancement implementation in one of the user-exit forms (i.e. USEREXIT_MOVE_FIELD_TO_VBAK). If you however want to add a code for which there is no form in the MV45AFZZ include, you need to use the explicite enhancement point in one of enhancement spots of composite enhancement spot ES_SAPMV45A. From system perspective there will be no difference, but is still more common to use forms in MV45AFZZ, as most of consultants and developers are used to it and it faster to fint the enhancement if someone is looking for a bug etc.

Regards,

Marcin

Edited by: Marcin Milczynski on Jan 5, 2012 3:39 PM

8 REPLIES 8
Read only

Former Member
0 Likes
1,589

Hi Kiran,

You are right in the last sentence of your question. In general, you should always use explicit enhancement point, as far as there is one that matches your requirements. If there is none, then you can use an implicit enhancement, which is always available at the end of a form or function module.

Regards,

Grzegorz

Read only

marcin_milczynski
Contributor
0 Likes
1,590

Hi Kiran,

You can move the implementation as implicit enhancement implementation in one of the user-exit forms (i.e. USEREXIT_MOVE_FIELD_TO_VBAK). If you however want to add a code for which there is no form in the MV45AFZZ include, you need to use the explicite enhancement point in one of enhancement spots of composite enhancement spot ES_SAPMV45A. From system perspective there will be no difference, but is still more common to use forms in MV45AFZZ, as most of consultants and developers are used to it and it faster to fint the enhancement if someone is looking for a bug etc.

Regards,

Marcin

Edited by: Marcin Milczynski on Jan 5, 2012 3:39 PM

Read only

0 Likes
1,589

Grzegorz /Marcin,

Thanks for the info.

Now my query is will it be an issue if I use Explicit ( within the spot es_sampv45a ) instead of Implicit enhancement (within the form userexit_save_document_prepare).

Because,I had created an explicit implementation within es_sapmv45a and did a couple of rounds of testing in QA and found it to be working fine.

Thanks,

K.Kiran.

Read only

0 Likes
1,589

Hi Kiran,

It is not an issue.But while up gradation time you need to check.

Regards,

Madhu.

Read only

0 Likes
1,589

Madhu,

I think whether it is Implicit or Explicit it will not be having a problem during Upgradation.Besides that will there be any affect on functionality if we use Explicit instead of Implicit.

or may be if I can reframe the question to get more insight from the experts here.

1.When we SHOULD NOT be considering Implicit over Explicit or vice versa.

Thanks,

K.Kiran.

Read only

0 Likes
1,589

Hi Kiran,

Can you go through help.sap.com

[Enhancements|http://help.sap.com/saphelp_nw73/helpdata/en/42/d356adddec036fe10000000a114cbd/content.htm]

Regards,

Madhu.

Read only

0 Likes
1,589

Madhu,

Thanks for the link.I had already gone through that.But still it is a natural human tendency to get the things confirmed from the guys who had already laid their hands on Enhancement Framework and aware of pros and cons.

Documentation really helps us in knowing what needs to be done and how it should be done I think it is disucssions like this helps us in knowing what should not be done.Kind of learning from mistkaes

May be we can get more inputs on this.

Thanks,

K.Kiran.

Read only

Former Member
0 Likes
1,589

Dear Kiran,

I have used the Enhancement Framework many times since it was introduced, both with implicit and explicit enhancements. The only problem I recall is that sometimes enhancements are not activated properly during transporting procedure. Which means: I get notified about the problem, I provide a solution in an enhancement point, transport it to target system, have it tested and still it works inproperly, until I go to the source code, switch to enhancement mode (the "spiral" icon) and activate the object manually. As far as I remember, it used to happen rather with implicit than explicit enhancements.

Moreover, if you are looking for some practical differences: explicit ones are easier to notice when analyzing source codes. I mean: once you enter some source code with an explicit enhancement, you will see it immediately with no further steps. To see implicit enhancements, you need to use menu option "Show implicit enhancements".

Also, a friend of mine used to have problems with transporting enhancements in a system-generated code, where the name of the system-generated object was different in each environment (DEV, QAS, PRD). It was just like the enhancement has not been "assigned" properly to the object where it was added, because an object of that name did not exist in transport request's target system.

These are all practical differences that I've noticed. You might prefer explicit enhancements based on that description, but remember that not always can you find one in the expected place.

Hope this helps,

Grzegorz