Adding extra tabs in standard transactions for sales and contracts without access key.
INTRODUCTION:
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.
HISTORY:
–>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.
STEP 1:
Go to transaction SE18 and give the badi name as BADI_SLS_ITEM_SCR_CUS. Click Display.
STEP 2:
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.
STEP 3:
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.
STEP 4:
Click on the paper icon as marked below in red to create a new implementation.
STEP 5:
Give a meaningful name for the implementation as shown below.
STEP 6:
Give a meaningful name for the enhancement implementation and description as shown below and click the TICK icon as shown below marked in red.
STEP 7:
Now you will be popped up with another window as below.
STEP 8:
Give a meaningful name for the implementation as shown below in the boxes below.
STEP 9:
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.
STEP 10:
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.
STEP 11:
Activate now, after activation you will be displayed with a screen as shown below which indicates that the enhancement and BADI implementation is complete.
STEP 12:
Now Go out and come again into the transaction SE18 and you can see the below screen.
STEP 13:
Click on the enhancement implementation tab and you will see the implementation that you have created, double click on that.
STEP 14:
Now you will be able to see the window as below.
STEP 15:
Now you will be able to see the window as below. Double click on the class method.
STEP 16:
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.
Important points:
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.
CONCLUSION:
è 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. 🙂
E
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” 🙂 🙂 🙂


















Hoping this post will be very useful for beginners like me. I have done a long research for this requirement and did not find any useful information on most of the part, hence this post may be useful for lot 🙂
Thankyou Satish, for Sharing the knowledge.
Regards,
Venkat
Thanks for your comments venkatesh 🙂
Hii,
Good documents and thanks for sharing.
regards
Syed
Thanks for the appreciation Syed 🙂
Good one...
Thanks Tanmoy 🙂
Good one satish 🙂
Thanks Hemanth 🙂
Hi Satish,
Excellent work.Nicely Documented too.
But I Can't find the same BADI in my system.Could you tell on which version of SAp you working on.
Hi Prashanth could you please explain how did you search.
It should be there. 🙂
just follow the first step,
STEP 1:
Go to transaction SE18 and give the badi name as BADI_SLS_ITEM_SCR_CUS. Click Display.
Do not forget to click on the BADI name radiobutton 🙂
Hope this helps.
Hello Satish ,
Same Problem here 😕
Am not able to find this BADI in my system.
Component Version : SAP ECC 6.0
Hello Sijin,
This is the newest BADI which is available in EHP 6 .Sadly even I did not find this BADi in my system which is on EHP 4.0.
My SAP Component Release Version is 701 i.e EHP1.
That's why am not able to find this BADI.
Hello sijin,
If your version is ECC 6.0 it should be there, Even am surprised why its not there 🙂 . Let me try from my end and let you know how to sort out this issue 🙂
Thanks Satish to give us knowledge about this new thing in EHP6.
thank you also for letting me know 🙂
One more thing Sathish ,
Pictures you have attached is not that clear , may be due to poor resolution .
So you can replace them with good quality ones.
Use windows snipping tool.
thanks for letting know,sure wil try to change at the earliest 🙂
Nice information, thanks 🙂
Useful one...Thanks.
BR,
Naresh K.
Dear Satish,
Great blog 🙂
Best Regards
Keerthan
Thanks keerthan for your comments 🙂
Useful Information, Thanks Satish 🙂
Thanks Lokeshwari 🙂 Glad it was useful 🙂
Useful Information 🙂
Helpful document..
thanks for your comments Kanna.
Regards,
Satish
Hi Sathish,
Very good document and very informative. I was searching for the same requirement. Thanks for sharing.
Regards,
AKPT
Thanks for your Comments 🙂 Glad it was useful to you 🙂
regards,
Satish
Thanks Satish Kumar Balasubramanian . Its a very useful document.
Hi Satish,
Can you please tell me how u added the two fields in the screen of the extra tab in the last screenshot?
I tried the code you have written FOR 'VA0*' and it does not display the tab.
If i code for a certain SD , then the tab comes but not the fields.
My requirement is to add a NAME field text box in the extra tab.
Can you help please ?
Satish Kumar Balasubramanian
Hi Giridhar,
Please note that fields are added from the program. You have to create a sub screen and you have to add the fields there using screen painter.
Please read the important points in the step 16.
Please get back to me for any issues.
Regards,
Satish
In this post custom fields are added in another tab. Can we add custom field in the Additional tab B ?
Hi,
You can add but only with developer key, without key you cannot 🙂
Regards,
Satish
Hi Satish Kumar,
i have some doubts:
1. Do we need to add fields to Daabse tables like for VBAK or VBAP before adding to screnns (8459 or 8309).
2. For writing the code in module pool program the class is not visible can you please provide it.
3. If possible can you please post new pictures which are clear.
Thanks in advance for your reply.
Regards,
NarsiReddy Cheruku.
Hi Narsi,
Thanks for writing.
Please note that you need to add the fields in data base table first and then in the screen you will have call those fields using call from dictionary option.
The class name is ZCL_BADI_SLS_ITEM_SCR_CUS.
Please get back in case if you have any other issues.
Regards,
Satish
Hi Satish Kumar,
Thanks a lot for your reply,
In screen how to call the fields which are added in dictioanry(how using dictionary option)?
Thanks in advance.
Regards,
NarsiReddy Cheruku
In the screen layout of the screen you will be having an icon for getting fields from database table. i have marked that in red in below pic.
After clicking the icon provide the table name and click get from dictionary.
Then select the fields from the table and drag to the screen.
Regards,
Satish
Hi Satish kumar,
Thanks a lot for your reply,
Your document was very helpful for me... 🙂
Thanks & Regards,
NarsiReddy Cheruku
Thanks for your kind words, glad that it was helpful to you. 🙂
Regards,
Satish
Hi satish,
Can we use the program SAPMV45A in step 16 or do we need to create a separate program ?
thanks in advance for your reply.
Thanks & Regards,
NarsiReddy Cheruku.
Hi Narsi,
Both are fine.
Regards,
Satish
Dear Satish,
Nice document. Thanks for this information. I have one doubt. In Step 10. what is the CLASS name. That is Class name or interface-IF_EX_SLS_ITEM_SCR_CUS. If I give interface name I got error like:
BAdI interface IF_EX_SLS_ITEM_SCR_CUS is not implemented in class
IF_EX_SLS_ITEM_SCR_CUS
What happen!!!. Plz reply.
Regards,
Abbas.
Dear syed,
The class name is ZCL_BADI_SLS_ITEM_SCR_CUS.
Regards,
NarsiReddy Cheruku
Thanks Narsi,
but this class is custom prepared class. in that our screen programming is there? or any other information?
Regards,
Abbas.
Satish Kumar Balasubramanian
Nice Document! 🙂
Enriched my knowledge on handling Sales Order Z Screen requirements. 😉
Hi, nice document and has enabled me to create both additional header and item tabs.
BUT I can't see how to add an additional overview tab, even if I populate the OVER_PROGRAM field.
Have you seen how to add new overview tabs?
Thanks for this valuable post.
Thank you for sharing the document.
Hi,
Gone through whole post. I am quite new to badi's , I have a very similar issue to do &really nice knowledge shared for begineers...
By following steps at step 10 is l throwing error when give interface or class name as zcl_badi_slis_item_scr_cus (when activating is giving me error )
Please guide further & if possible try to share a demo for module pool report on how to use it with this requirement.
Many thanks
hello sir i done it step bye step bt at time i got n error BADI interface IF_EX_SLS_ITEM_SCR_CUS is not implemented in class IF_EX_SLS_ITEM_SCR_CUS...
Hi Jeet,
Please follow the last few steps and important points carefully.
Regards,
Satish
thnx for valuable repli....bt my requirement is to add listbox in addition data b tab....
Very useful document.
Thanks !!
I guess in the pbo we will have to add code (loop screen) to set editable or not the fields depending on display/create/change modes? (t180)
Hi Satish,
Very useful post.
Additionally, did you manage to get the 'Custom Tab' in the Menu. VA01->Menu->Goto->Header?
Will be useful if this can be done.
Thanks and Regards,
Dinakaran
Hi,
We have done this enhancement for Contracts and it was working fine. Hope it will also work for sales orders.
Regards,
Satish
hi Satish,
I intend to add fields to Sales order item level and followed the steps you referred using badi 'BADI_SLS_ITEM_SCR_CUS'. And till Interface creation, all went fine and ended up with the method 'ACTIVATE_TAB_PAGE' - here it's not enabling me to include code and when i click 'change' mode, it's asking for access key !! Please help me out.
Awaiting your reply, thanks in advance.
Regards,
Suren.
Hi Suren,
Did you create a implementation before starting the whole process. If yes it should allow to edit.
Regards,
Satish
Hi Satish,
It worked. We are able to see the custom tab, when we go to header level tabs using the Icon ' Display doc. header details' adjacent to the 'PO Date' Field.
But, we don't see the custom tab, at the Menu Level. When we click Goto->Header, the custom tab is not visible.
No issues, will check.
Please see the below post from Agastya as well.
http://scn.sap.com/thread/3630036
Thanks and Regards,
Dinakaran R
Hi Satish ,
Very useful post .
Regards
Bhavana Meshram
Valuable info 🙂
Regards,
Hi Satish,
Thanks for the valuable information.
I have similar requirement to create a new tab with a control table to maintain fields and add to a Z table.
I followed your instruction to add custom tab to sales header to maintain IP Address when user create or change a contract.
I cannot see the additional tab from Overiew but if I click Go to ->Header->Additional Function -> I see the additional tab.
I create an implement class ZCL_EX_SLS_HEAD_SCR_CUS with interface IF_EX_SLS_HEAD_SCR_CUS. In method ACTIVATE_TAB_PAGE, what type of program to put in field ls_cust_head_tab-head_program? Is it a dialog program? Can I use a normal program with interactive ALV? For testing, I create a dialog program with a normal
We have a standard here to no longer develop dialog but use Web Dynpro instead. If it must be dialog because sapmv45a is a dialog, it is OK. However I want to have a screen with a table control to add data, where can I incorporate these fields? I want on this screen is a table with 5 fields and user can add, change or delete. When the sales document is saved, I want to add these entries to a Z-table.
Can you guide me on how to achieve this requirement.
Thanks.
Hi,
I have used a dialog program, and the screens are designed through that program. Am not sure about using web-dynpro.
Thanks,
Satish
Valerie,
You should create new subscreens to use on your new tabs. You generally create this in a new function group. The program refers to this function group.
e.g.
Function group: ZBADI_SALES_HEADER_TAB
Program name: SAPLZBADI_SALES_HEADER_TAB
Best Regards
Hi Koenraad and Satish,
Can you elaborate more about using function group.
SAPLZBADI_SALES_HEADER_TAB is a function module, not a program name .
Say if I have function group
'ZBADI_SALES_HEADER_TAB' with function module SAPLZBADI_SALES_HEADER_TAB.
Do I need to create a zprogram and what code I have to put in that zprogram to bring in the custom screen?
I found an example of function group badi_example_1300 that have customer screen but I do not know how we can bring the custom screen inside the tab.
As Satish explained in this blog, I have to add the below code in method 'Activate_tab_page' of my implementing class ZCL_XX
Method activate_tab_page.
data: ls_cust_head_tab type line of sales_cust_tab_page_t.
if sy-tcode cp 'VA4*'.
ls_cust_head_tab-head_caption = 'My new tab'.
ls_cust_head_tab-head_program = 'My Zprogram'.
ls_cust_head_tab-head_dynpro = 'SceenNumber'.
append ls_cust_head_tab to ct_cus_head_tab.
endif.
Valerie,
The ls_cust_head_tab-head_program refers to the program in which you have build your new subscreen. So in my case.. I created a function group (where also all functions to get and set data to the screen are organized).. in that function group I created the new subscreens. The program you have to enter is the function group program.
Works like a charm.
Best regards
Koenraad
Hi Satish Kumar Balasubramanian,
Excelent document... i have some doubts... where i must place my code to transfer the data to my "z" database table. Thanks
Hello Satish,
Thanks for the document, it well documented.
As been asked before, do you know how to add overview TAB to VA01,
This BADI seems to provide only solution to add TAB to either header or item.
Thanks & best regards,
Zahi.
Hi Satish Kumar,
This document is really helpful. Everything was clean and clear and before trying this scenario i tried to find this badi 'BADI_SLS_ITEM_SCR_CUS' using the package name in 'SE84' and also by debugging but i didn't find a badi with this name. So, please let me know where and how to find this badi.
Thanks in advance!
Hi Kiran,
This BADI is available only from ECC 6.0, If your version is ECC 6.0 it should be there.
Thanks,
Satish
Hi, Satish,
Thanks for your prompt reply.
Yes, the badi is present in my ecc6 when i checked it SE18 but when i tried to find this badi by setting a breakpoint in get_instance method and executed the tcode but i didn't get this badi name in exit_name..
So, from where did you get this badi?
Thanks..
Your document helped me alot. 🙂
Glad that it helped You:)
Regards,
Satish
Hi Satish,
Thanks for the wonderful blog.
My requirement is also same to add one tab in VA01.
I will also be doing for the first time. I want to ask what logic you have written in PBO and PAI ..
I have 4 fields on screen . And will the program be same SAPMV45A ??
Good tutorial. Screenshots should be a little bigger for better readability.
it is really perfect,
I have found a nother example but it is similier to this tutorial
TECHSAP : Screen Enhancement For Delivery Header VL01N/VL02N/VL03N
Thanks for help,but while creating it required oss key.
I have followed the tutorial step by step but unfortunately I don't see the tab.
I would want to add the tab in transaction VA21.
Is there some restriction for this transaction?
Hi,
Nice Blog easy to Understand & Implement.
Regards
Hi Satish,
Thanks for the detailed document. I was trying to achieve the same functionality for VA11 tcode - item additional data tab b. But in step 11, I get the error-
BAdI interface IF_EX_SLS_ITEM_SCR_CUS is not implemented in class
IF_EX_SLS_ITEM_SCR_CUS
Not sure why this error message is coming. My custom class is not getting generated because of this error.
Can you help me with the above error please.
Thanks
Meenakshi
Hi Meenakshi Raina,
Thanks for the comments. Requesting you to recheck the complete process from step 1. I will also check and from my end get back to you on this.
Regards,
Satish
Hi Satish,
Can I create new pricing condition based on the value entered in this custom field through va01/02?
It should be possible. But am not sure, please check.
Regards,
Satish
Hi satish,
thanks for the Info. i want to move the created Custom tab next to Condition tab in the sales order header is it possible.
Regards
Thiruneelan
Hi Thiruneelan,
Yes i think its possible, check for the view TAXITABS through which you can re-align the tabs. You need to follow certain process for it. Try researching it on the same.
Regards,
Satish
Hi thiruneelan sabapathy,
Regarding Rearrangement of new tabs you can check my blog below:
Standard tabs Re-arrangement in Standard SAP Transactions
Regards.
Satish
Thanks Satish for the useful Document.
Regards,
Saranya
Hi Satish,
Thanks for the blog
I have always thought this wasn't possible without an access key...... This is an excellent find....Thanks Satish!
Thank You!
Hello Everyone!
Someone can tell me what is the table to read the fields in additional data B TAB ? is in the VBAK??
Thank´s, Regards!
Thank You for this Blog! 🙂
This badi is not available in my system, alternatively we can add pop-up windows at sales order header data, is this possible ? because I got one functional module --- Popup_get_value, but where i have to use this function module means in which exit..
Thanks
sandeep
The BADI is not available because you may be using the older version. Kindly check the same.
Thank you Satish.
I have checked in my system but that BADI 'BADI_SLS_ITEM_SCR_CUS' is not available in my system.
Instead of BADI, Alternatively can we use unused filed in order data tab at Sales order header data, because that filed are not using some where.
Please guide me..
Thank you
sandeep
That depends on the kind of value you are about to store, Am not sure what kind of values you are trying to store.
Its best to get advise from the Technical Architect of your project.
Regards,
Satish