Adding extra tabs in standard transactions for sales and contracts without access key.
This post will explain in detail about adding an additional Tab to standard transactions for sales order (VA01, VA02, and VA03), contract documents (VA41, VA42, and VA43) and other related transactions of the program SAPMV45A.
–>When I had this requirement of adding an additional tab, I started with my research on this across SCN and other SAP related sites. Irrespective of my long research I could not find any solution for this requirement without the need of ACCESS KEY.
–>However there are solution for this requirement which requires ACCESS KEY. There are two additional tabs ADDITIONAL TAB A and ADDITIONAL TAB B which SAP has provided to add customer specific fields. The related screens for modifying these tabs are 8459, 8309.
FEW IMPORTANT POINTS ABOUT THESE TABS:
è The Additional TAB A and B are designed by SAP before the advent of BADI based plug in screens.
è The screens 8309, 8549 are never touched during upgrades, however taking access key could mean that the objects we are changing should be registered for SCCR and special care should be taken during upgrades to protect the change as they fall in SAP naming spaces.
è SAPMV45A / 8459 or 8309 even if they are in SAP naming space they are for customer modifications and SAP won’t overwrite them during upgrades.
è There are few ABAPers who are in a wrong assumption that SAP didn’t provide any BADI for this screen modification since many customers have already satisfied their need with the TABS A and B which is wrong.
è SAP has provided a BADI to add additional TABS up to 5(as far as my knowledge) to accommodate any user specific fields which depends on the later requirements of the customer.
STEP BY STEP IMPLEMENTATION OF THE BADI:
In this blog post I will explain in detail steps on how to implement the BADI.
Go to transaction SE18 and give the badi name as BADI_SLS_ITEM_SCR_CUS. Click Display.
You will be lead into this page where you can see several BADI definitions, you can see the purpose of each BADIs by reading its description.
Now our intention here is to add additional tabs only at item level so we select the BADI accordingly, however there are different BADI for different purpose.
Now right click on the badi BADI_SLS_ITEM_SCR_CUS as below and select create implementation.
Click on the paper icon as marked below in red to create a new implementation.
Give a meaningful name for the implementation as shown below.
Give a meaningful name for the enhancement implementation and description as shown below and click the TICK icon as shown below marked in red.
Now you will be popped up with another window as below.
Give a meaningful name for the implementation as shown below in the boxes below.
Give a meaningful name for the implementation as shown below in the boxes below. Please note that all the details that you have filled earlier is for enhancement and now it is for BADI.
Give a meaningful name for the implementation as shown below in the boxes below. Class name should be same as given below, this is the class method where you will write the code.
Activate now, after activation you will be displayed with a screen as shown below which indicates that the enhancement and BADI implementation is complete.
Now Go out and come again into the transaction SE18 and you can see the below screen.
Click on the enhancement implementation tab and you will see the implementation that you have created, double click on that.
Now you will be able to see the window as below.
Now you will be able to see the window as below. Double click on the class method.
Now you will be able to see the window as below. Double click on the first method as shown below to code for adding the tab.
Now you will be able to see the screen as below, in the field caption give the ‘name of the tab’,
In the field program give the ‘module program name’, in the field dynpro give the ‘screen number’, give all the details in single quants.
1) Module Program: This program should contain the screen which will have the required fields and the respective logic for the fields.
2) Screen Number: This should be screen which you want to get displayed under the Tab that you have defined.
3) Please note that the screen that you create here must be a sub screen and not main screen failing which it will lead to a runtime error.
4) Please note that in the if condition I have given as
–> If sy-tcode cp ‘VA4*’.
Which means this tab will be there for all the item details in the contract transactions like va41, va42, va43. So you can code as per your requirement.
Now after activating if you go to the required transaction you will be able to see the tab you have added as below. These fields are placed as per your requirement.
è Thus we have implemented the requirement of adding the tab and necessary logic are coded in the module pool programming and screen is designed as per the requirements.
è Hope this post will serve as a good guide for beginners like me.
è Am sure many of us would have come across such scenarios and will have lot to share, eagerly awaiting for your posts.
è I will be very happy for any comments, corrections, likes and ratings regarding this post, which will serve as a source of encouragement to the beginners like me since this is only my third post in SCN. 🙂 🙂 🙂
è Thanks to SCN once again for all those commendable efforts it has made till now. 🙂
EXTENSION (Blogs Relevant to this Blog):
Apart from adding Additional tabs to the standard transactions, if you wish to rearrange the tabs you can check out my Blog below. Hope it helps.
Standard tabs Re-arrangement in Standard SAP Transactions
“Lets LEARN and Collaborate in SCN” 🙂 🙂 🙂
Thank you Satish.
#1 I am new in SAP and trying to learn new things and working on that.
#2 I am trying to explain my requirement in little bit depth, Suppose We have to take the value of freight charges value from custom tables and that charges will be calculate based on delivery location and weight of consignment, when you will enter sold to party in VA01.
#3 For location(From location and To location) or weight, We have to add three fields at Sales Order header level for that I am trying to use three unused field in Order data tab at header level based on those field we can fetch data from custom Z table where vbak-kunag = ztable-kunnr
#5 If i will enter sold to party in VA01 then control should be go on Order data tab, once I will enter data in three unused field of Order data tab then it will fetch the data from custom tables and will pass that fetched value(KBETR) to item level and that will be final price(net value).
#6 for moving, we can use USER_EXIT Move VBAK TO VBAP.
#6 But where I have to write the code for Selecting the data from custom tables using of those unused fields , means which user_exit is available for that.
I hope you will understand my query.
Glad the Document is useful to you. This Blog simply explains the procedure to Add tabs, with reference to your Requirement you can refer threads in SCN. There are so many Topics in SCN discussing on the same.
I would like to request a new discussion if you could not find any effective answer. This will help in bringing more visibility for your query.
It was a nice blog.. i have one question, when i implemented the BAdi for Header Level i dont see the tab enabled defaultly, until i go and select the Goto --> Header --> Additional functions --> Additional Tab B.
Am i missing anything?
Very useful document.
With this approach, incompletion log configured for Z fields in OVA2 is not working as expected.
I have a same requirement adding additional tab in sales order item. I have done this using the same BADi. But there is a issue when calling the custom tab. Sometimes the custom tab appears on 'SALES A' tab and once enter into any other tab and come back to SAles A tab then replaced with standard tab. I have kept a condition to display the tab only for few line items. I could see sometimes the tab is appearing on unwanted line items. Could you please provide your inputs how to fix this. Thanks.
I am trying to do the same at the header level. I chose the implementation of the header level. It somehow does not work.
The header implementation does not get called, even when it is active.
The item implementation gets called and is fine.
Is there something extra that I need to activate at any place?
Thanks lot for such useful information.
I need small help from you.
As suggested in your blog two additional table give for custom enhancement SAPMV45A / 8459 or 8309 and BADI is given.
How to identify them that SAP has give 2 screens SAPMV45A / 8459 or 8309 ?? exits.
When I try to find SMOD with package I dont get these exits.
How to identify the BADI is give ?
same way in SE84 I try to find the BADI,enhancement spot for package VA I dont this BADI.
Can you please help to identify or find the exits and BADI. if any other requirement comes apart from this screen enhancement i it would be helpful.
First thing i am unable to find this badi in my system 'BADI_SLS_ITEM_SCR_CUS' second thing i found this spot as per the screen shot mentione above BADI_SD_SALES_ITEM it says system migrated cannot be implmented.please help me in another way
Thanks for Sharing.