headershadow

How to extend vendor or customer master data with SAP enhancement spots

Print Friendly

Master data in accounts receivable and accounts payable modules are basic data for processing business transactions with customers and vendors. These data include information about business partners that are categorized into three organizational levels: general data, company data and purchasing data.

Even though standard master data records contain most important and recurrent information required for conducting business transactions, they are in some special business processes insufficient to model all partners’ information. In order to fulfill these special requirements, it is necessary to enhance standard master data with additional fields.

For this purpose, SAP provides dedicated enhancement spots that enable enhancing customer or vendor master data, without making any modification in SAP standard.

The solution provided by SAP consists in enhancing standard programs used to manage partners’ data with your own subscreens. The new subscreens are accessible in standard transactions via automatically integrated buttons and contain additional fields needed in your special context.

SAP development guide for vendor & customer master data enhancement is accessible in SPRO under “Financial Accounting -> Accounts receivable and Accounts payable”.

Choose “Customer Accounts “to enhance customer master data or “Vendor Accounts” to enhance vendor master data.

Then continue following the path “Master data -> Preparations for creating customer master data -> Adoption of customer’s own master data fields”.

Please take the time to read the documentation provided in SPRO. It is a very good and detailed documentation that helps to understand the different development steps.

 

Next, I will concentrate on vendor master data enhancement. However, the same method could be applied for customer master data enhancement.

Step 1 : Screen Group Creation

The first step consists in creating a screen group. It is a kind of reference that regroups all screens used in the enhancement.

  • Execute the customizing point “Prepare Modification-Free Enhancement in Vendor Master Record”

  • Enter a screen group name and description

 

  • Each screen can contain several tab pages. In order to add a new tab, select the created screen group and double-click on “Label Tab Pages".
  • Provide each tab page with a function code and a description.

Step 2: Subscreen Integration

The next step consists in implementing enhancement spots provided by SAP to integrate own subsreens into standard transactions.

Use enhancement sport VENDOR_ADD_DATA to activate the enhancement.

  • Go to transaction SE18 and enter spot name “VENDOR_ADD_DATA”.

 (You can use a BADI instead of the enhancement spot if it is more confortable to you since a BADI with the same name exists.)

  •  Display enhancement spot details and click on button “Implement enhancement spot”     or F6 to create a new enhancement implementation.

  • In the next popup, enter implementation name and description.

  • Enter the implementation class name in the second popup.

 

  • The enhancement implementation is created. The following tab appears.

  • Double-click on “Implementing class” to display class details.

  • Then double-click on the class name to get the familiar SE24 class editor.

  •  Implement method CHECK_ADD_ON_ACTIVE as follows.

The enhancement is now active for screen group ‘Z1’ but I still have to specify the subscreen location.

This is done using enhancement spot VENDOR_ADD_DATA_CS.

  • Go to transaction SE18 and enter spot name  VENDOR_ADD_DATA_CS  (Again a  BADI with the same name is also available).

  • Create a new enhancement implementation using button “Implement enhancement spot”      or F6 then create an implementing class.
  • This enhancement is filter-dependent.  Choose the screen group created previously as filter value.
    • Select “Filter Val.” Then create a new combination by clicking on button .

    • A combination is added. Double-click on it.

    • Under “Value 1” choose the screen group you have created and “=” under “Comparator 1”.

  • Activate the enhancement implementation
  • Double-click on “Implementing class” then on the class name.

  • You get again the SE24 class editor. Implement method IF_EX_VENDOR_ADD_DATA_CS~GET_TAXI_SCREEN as follows.

You notice that I provided a program name and screen number in the method implementation. This is the program in which I created the subscreen that will be integrated into master data transactions. This will be explained in the third and last development step.

You notice also that I passed the value ‘B’ to parameter E_HEADERSCREEN_LAYOUT. This means that the additional field is added on company data level. As mentioned in the parameter description, you should pass the value ‘E’ if you enhance purchasing data and let the parameter empty if you enhance vendor general data.

Step 3: Subscreen and Additional Fields Creation

The last step consists in creating a customer Z-program that will contain the new subscreen and add the additional field to it.

The additional field should be created at company code level. That means, it should be added to table LFB1.

  •  Go to SE11 and display table LFB1. Click on button “Append Structure…”.

  • In the next popup click on “Create” button.

  • Then enter structure name.

  • Add the additional field to the structure.

The additional field is now available to be added to a subscreen.

  • In SE38, create a module pool ZTEST_ENHANCEMENT with a subscreen 9000.

  • Change the screen layout by adding a box then import the new field from dictionary table LFB1. Change the description of the field under “Text”.

The new field will be displayed in all transactions that manage vendor master data.

As you certainly know, some of these transactions are used to change or create master data; others are used just to display data. In display modus, all fields must be disabled, including the customer fields.

  • Add following code to disable edition of the new field in display modus.

And that is it! Our enhancement is now ready to be tested!

Display vendor master data using transaction FK03.

A button “Test” appears. You have probably noticed that the button name corresponds to the name of the screen group ‘Z1’ created in the first step.

Click on button “Test”. A tab “Test”appears  (that corresponds to the tab defined in the first step) containing the new subscreen. The additional field is disabled.

Change now vendor data using transaction FK02 and make sure that the additional field is editable.


More about

11 thoughts on “How to extend vendor or customer master data with SAP enhancement spots


Comment author said

By Kumar on 19 February 2013 at 20:15

You have simplified this for me! Thanks.

 

Comment author said

By Michal on 11 July 2013 at 14:09

Great tutorial!
I was wondering though if it is possible to show the new button in vendor master record only for certain lifnr/bukrs combinations?
I didn't find any way to do this as the only method that is able to deactive (or actually not activate at all) the extension is CHECK_ADD_ON_ACTIVE, but program passes through this method before lifnr and bukrs is filled.

 

Comment author said

By Jörg on 10 March 2014 at 09:54

Great tutorial! Very detailed!

1) Answer for Michal post - 11.07.2013: try to use BADI IF_EX_VENDOR_ADD_DATA_CS, method SUPPRESS_TAXI_TABSTRIPS; here you have LIFNR etc. :)

2) Question: did anyone try to create a 2nd "Screen Group" (Step 2) ...? I did - calling it Z2 - and than I did all the coding again using the existing BADI-Implementations and function group.
Problem: i have a 2nd button, but the screen is empty ...!

If anyone could share his experience i would be glad to know if it's working

P.S. inside screen group Z1 i managed to create 2nd tab, but i like to have a 2nd separate screen group
Z2

Regards Jörg

 

Comment author said

By Jörg on 10 March 2014 at 10:13

@moderator:

> you can limit my post to part 1 <

i have found solution for my problem - part 2
(SORRY!)

P.S.
here is one snip of the secret behind:
(check for Z2)
METHOD if_ex_vendor_add_data_cs~get_taxi_screen.
*--------------------------------------------------------------------*
* sau - 11.11.2010
* Subscreen mit Dynpro aus eigenem FB(?) versorgen
* Bildgruppen siehe Customizing Kreditorenstamm (SPRO)
* sau - 10.03.2014
* neue Bildgruppe für Mahnstufen
*--------------------------------------------------------------------*
CASE flt_val.
WHEN 'Z1'. "Hochland Bildgruppe Z1
IF i_taxi_fcode = 'Z1_TR10'.
e_headerscreen_layout = 'E'.
e_program = 'SAPLZFI_IM_MF02K'. "Funktionsgruppe ZFI_IM_MF02K (immer SAPL davor)
e_screen = '100'. "Dynpro 100
ENDIF.
* IF i_taxi_fcode = 'Z1_TR20'.
* e_headerscreen_layout = 'E'.
* e_program = 'SAPLZFI_IM_MF02K'. "Funktionsgruppe ZFI_IM_MF02K (immer SAPL davor)
* e_screen = 'XXX'. "Dynpro ???
* ENDIF.
WHEN 'Z2'. "Hochland Bildgruppe Z1
IF i_taxi_fcode = 'Z2_TR10'.
e_headerscreen_layout = 'E'.
e_program = 'SAPLZFI_IM_MF02K'. "Funktionsgruppe ZFI_IM_MF02K (immer SAPL davor)
e_screen = '200'. "Dynpro 200
ENDIF.
ENDCASE.

ENDMETHOD.

 

Comment author said

By Andreas on 13 June 2014 at 15:34

Thanks for the step by step procedure. I tried it for Customer master like you described and it is working fine. I have one additional requirement. I whant the button in customer master only to appear when the customer belongs to a certain account group. Any idea how to achieve that?

 

Comment author said

By Kai on 28 October 2014 at 10:38

Great tutorial!

I tried to adapt it for customer as good as possible. However, the values in my new custom fields are never saved.

I cant find any coding in your tutorial about saving & loading the data of that new custom field. Is this done automatically or did you leave out that part?

 

Comment author said

By LTL on 7 September 2015 at 15:23

I found this and solve my problem in no time...thank you very much

 

Comment author said

By dimath72 on 21 September 2015 at 11:56

I have done all the steps but when i type something in the new field it has been deleted when i press enter on the screen ...

 

Comment author said

By Rolles04 on 25 January 2016 at 14:50

You have simplified this for me! Best Explanation !
Now it works.

Thanks.

 

Comment author said

By Matthieu on 15 March 2016 at 14:07

How to get a list of all vendors who are extended for a given purchasing organisation, and where the new specific attribute = a given value (allowed values are maintained in domain)?

In other words, where to search vendor with this new criteria.

 

Comment author said

By Matthieu on 15 March 2016 at 14:08

very good article.
Thanks for sharing.

 

Leave a Reply


*