Skip to Content

Application Enhancement Tool: Creating and Reusing Custom Fields with CRM 7.0 (Part 1 of 2)

Almost everyone knows that adding custom fields in SAP CRM is easy with the Easy Enhancement Workbench. Once the new field is created, it can be displayed and configured using the UI Configuration Tool. What you might not know yet is that we have introduced a new tool for structural enhancement in SAP CRM 7.0 called Application Enhancement Tool. With this new tool, adding a custom field has become even easier. Our focus has been towards simplicity, flexibility, and usability. The tool is part of the new CRM Web UI and is seamlessly integrated with the UI Configuration Tool. Adding a new field and making it available on the UI does not require deep technical knowledge and development efforts.

In this blog, I will give you an overview on this functionality, and look into the details of one particular concept – reusing custom fields across applications.

The field reuse comes in two flavors. The first one is based on shared data structures among related business entities. Within the Application Enhancement Tool, we refer to these as applications sharing the same enhancement place (the place where the custom fields are stored). The second type of structural enhancements is based on a very powerful concept called Scenario Mapping. The fields are stored in different enhancement places, but the applications support field copy (reusability) and also pass data from the source to the target applications.

In the first part of this blog, we will have a look at field reusability across applications that share the same enhancement place and what it takes to create and use a custom field.

The Application Enhancement Tool allows you to do the following:

  • Create a field with properties that best match your specific business needs
  • View the details of the custom fields in a convenient manner
  • Modify and regenerate existing fields
  • Provide translations in the system’s supported languages
  • Extend the relevant external interfaces – for example Mobile, R/3, BW and OLTP Reporting
  • Start the Application Enhancement Tool directly from the application, from the UI Configuration Tool guided maintenance, or using a dedicated link.

Creating a New Field

Let us assume that you want to track the social networking identity of your contacts, for example, your contact’s MySpace ID.

We will start the Application Enhancement Tool directly from the Account application. You need to open an existing account and choose image(Show Configurable Areas). Before that, you have to enable the configuration mode in the Personalize Settings screen and ensure that you have the necessary permissions.

Once you go into configuration mode, you must select the area that you want to enhance by simply clicking on the desired configurable area. In our example, we will add the MySpace ID field to Account Details -> General Data. After you select the General Data area, the UI Configuration Tool opens. Choose the Create New Field pushbutton. The Application Enhancement Tool starts.

The first step of adding a custom field is to specify where exactly do you want your new field. You can choose among the available enhancement object parts of the Account object. There is only one object part to select from – the Central Details. We will talk more about the information presented on this page in the second part of this blog.


The context node information is quite useful when you search for your newly created field in the available field list of the UI Configuration Tool (we will discuss this step later).

Once you select where you want your new field to be created, you must provide the necessary field details. For our current example consider the screenshot below.


We will discuss the translation and custom dropdown listbox definition when we create a more complex field in the second part of this blog.

Configuring the UI

Once you are done defining your field, you must trigger the generation process by choosing the Save and Generate pushbutton. The Application Enhancement Tool creates the new field, enhances the relevant external interfaces (for example, if you select the BW Reporting checkbox, it will modify the data source and the BI Extractor), adds the structural changes and the enhancement meta data to a transport request, and performs the activations. The system will be restarted automatically (in most cases) but you can perform the UI Configuration before you close the popup and initiate a new session.


As seen in the above screenshot, we have added the MySpace ID field to the Account Details. The field will be available under the Header context node (as indicated in the Select an Object Part dialog)

Adding a Reusable Field

Now let us have a look at how you can reuse the MySpace ID field in the Contacts application. We will add the field to the General Data area of the Contact Details assignment block.

Enable the configuration mode and choose the General Data area. From the UI Configuration tool, start the Application Enhancement Tool by clicking Show Enhancement. The Custom Fields block will display all the existing custom fields, their details, and status. Instead of creating a new field, we will choose the Add Reusable Field pushbutton and select the MySpace ID field that we created in the Account object. Make sure that you select the Contact Enhancement Object first.


Once we are done, the tool creates an association of the MySpace ID field to the Contact enhancement object – remember that the field already exists in the shared data structure (enhancement place). Before closing the window and accessing the restarted system session, we will go back to the UI Configuration Tool and add the My Space ID field to the Contact Details.

How to Get the Enhancement Place?

You need to run transaction AXTREG. To view the name of the enhancement place, go to Extensible BOs -> BO Parts. In the above example, both Account and Contact contain only one object part which is based on enhancement place INCL_EEW_BUT000.





If you track down INCL_EEW_BUT000 in the Places node, you will find out that the actual Extension Include (the commondata structure) is CI_EEW_BUT000. If you open it using transaction SE16, you will find the MySpace ID field.

As you can see, in SAP CRM 7.0 you do not have to manually create identical fields across related applications. The field reusability concept in the Application Enhancement Tool will help you minimize the manual steps and errors when it comes to structural enhancements

What Is Next?

In the second part of the blog, we will take a deep dive into another type of custom field reuse – the one based on the scenario mappings. We will also see more of what the Application Enhancement Tool can do for you.

You must be Logged on to comment or reply to a post.
  • This looks like a great replacement instead of using the EEWB.  Does this tool fully support currency and quantity fields, which were never really supported by the EEWB?

    Thank you,


    • Hi Stephen,

      Thank you for your feedback.

      Yes, we support currency and quantity data types. If you switch into expert mode you will see the reference field in the details page. You can change it if you want (for example if you would like to use the same reference field across your custom fields).

      You can enable the expert mode from the enhancements overview page.

      Best regards,

      • Hi Tzanko,

        in expert mode you can specify a field ID for the reference field. However you cannot use the same reference field for several currency fields.

        Regards Matthias

  • Hi,
    but I have one question, when I click on the configure area, the view configuration tool opens, but I did not see the “create new field” push button, what I only see is “add field” button with ‘+’ sign and it is inactive on my UI.I don’t know why, can somebody give me a little bit hint?


    • Hi Christoph,

      Which CRM version are you using? The tools is available as of CRM 7.0 and for the blog I have used SP01 (to be released on Nov 21st).

      Thank you and best regards

      • Hi Tzanko,
        Unfortunately we use CRM2007 version 6, my info was we are not plan to upgrade to version 7 even next year.

        So , too bad.

        But it is good to know this.


  • Hi Tzanko,

    This would be very usefull feature to all the customers. One quick question would be that since SAP CRM 2007 is widely released and 7.0 would be coming sometime later, in that case how can existing customers of CRM 2007 can make use of this?


    • Hi Harshit,

      The new tool is available with CRM 7.0. In CRM 2007 you should use the EEW. If you upgrade to 7.0, the “old” fields will be visible from within the Application Enhancement Tool and you could start using it without loosing track of what has been created in the past.


      • Hi Tzanko,

        Just a passing thought, now since any attribute can be created on the UI itself…why not create an assignment block on the run!!! I mean this would be great considering that SAP would then Provide a framework to create any number of attribute and any number of Assignment block for a particular Object. Wouldn’t that make SAP CRM fully Flexible for any customer to use….


  • Tzanko,

    I am an ABAP developer trying to learn programming for the WEBUI, in CRM.  We are on CRM2007, version 600, sp3.

    Using EEWB, I already have added a field to Campaign Header, called “Invalid Campaign Message”.  As you probably are aware, standard SAP stores this field in table CRMD_MKTPL_BDINC.  This EEWB enhancement is in production and works fine.

    Now my task is to change this field to be language dependent.  It doesn’t seem to me that EEWB can handle that in a simple manner.

    After looking in the Component Workbench, at component CPGOE_DETAILS, view OVEFDetails, context node DESCRIPTION, which takes care of the Campaign Description using language dependence, I’m thinking it may be easier to get rid of my EEWB field, and enhance the view by creating a new context node INVCAMPMESSG, similar to the context node DESCRIPTION.  And as description is saved in table CGPL_TEXT, I would create a Z table to save my Invalid Campaign Message language dependent data.

    Am I approaching this the easiest way, or would it be easier to somehow modify the EEWB field already existing?

    Thanks in advance,

    Lee Zukor

    • Hi Lee,

      I would recommend that you use EEW. You could assign  field labels in different languages by logging into the system with the corresponding language. When you log in with another user language, the field label will appear blank. All you need to do is put in the label in the desired language.

      This approach is probably not the most convenient one, but it is way better (and safer) than creating a new context node.

      On a separate note, you can use the view configuration tool to assign labels in different languages. Again you will have to log in with the desired language and edit the view configuration. The field label will appear blank and you will provide the translation text. The main difference is that the translated field label will be available only for the selected configuration. You will have to repeat the exercise for each configuration key (of each view).

      As you already know from the blog, in AET the above shortcoming has been addressed.


      • Hi Lee and Tzanko,

        whether the new field is language dependent, depends on the BO Part which is enhanced.
        However I am not aware of any language dependent part so I don’t think it is possible.

        Regards Matthias

  • Hello Tzanko, very good blog and video demo. From our experience EEW function enables for the BP to enhance only general data (BUPA) and relationships (BUPR) also in CRM2007. Now in CRM 7.0 will we be able to enhance sales area data with AET, too. This lack of functionality was a very disadvantage in EEW from our experience due to many ERP data/fields, which would be perefered to be on CRM sales area data, too. Thank you for your feedback in advance.
  • I am trying the Same sample using Application Enhancement Tool.I Get this Error meassage “Object CI_EEW_BUT000 Cannot be Created with Package ZAET” Can some one help me what i am missing with.I did even configure System Settings for Application Enhancement Tool
    • I would guess that you have already enhanced the BP object either with AET or with EEW. CI_EEW_BUT000 is a customer include and you cannot add structural extensions to it that belong to different packages.

      Try enhancing your BP using the same package you have used in the past.

      • If the enhanced object is using Customer Includes (CI) all extensions which are using them are linked together. In order to deploy them properly the transport layer of the assigned package has to match the transport layer of the extension.
        However the package can be different.
  • Hello Tzanko,

    After we add some fields with AET tool, I need to change its GET_I_XXX and GET_V_XXX method.
    But unfortunatley I cannot find those methods in the CONTEXT_NODE class.

    Can you assist me ?

    Thanks in  Avdvance
    Eli Steklov

    • Hello Eli,

      The new extensions become part of the underlying BOL model/node. Hence you will find it under the context node that is bound to that BOL object.
      If you start AET from the application itself, we show the affected context nodes in the popup where you select the enhancement object part. I will suggest that you try to create a field in your application (for example you can open an existing BP and select to configure a view). In the BO part selection screen, take note of the context node column. Extend a BO part that has an existing context node entry.


      • Hello Eli & Tzanko,

        there are no Getter and setter methods for extension fields generated by the AET. But this can be done easily from the component workbench and they while override the default logic. If the workbench does not offer this, you might need note 1316083.

  • Hi Tzanko,

    first I want to say thanks for writing this (and all the other) blog(s) on CRM. Since you seem to have quite some experience with the AET I have a few questions for you which I hope you can answer. We want to add a table structure (not just one field) to a custom business partner relationship using the AET. Is this possible. All I have seen so far from you and other blogs (demos) is adding single fields to business partner or business transactions. I have been playing around a bit with the AET, but can’t seem to find anything about tables especially not combined with business partner relationships. One other (small) question. When creating these fields with the AET, can we create our own fieldname in stead of the generated one by the tool?

    • hello,

      First Question: in CRM 7.0 AET can create only fields. We will address this in the next releases. In the meanwhile use EEW.

      Second Question: switch to expert mode (there is a button). In there you can control additional properties of the new field.

      Hope the above helps

  • Hi ,

    This is really a good addition to CRM. We are upgrading the CRM system to 7.0 however not able to edit/regenerate the existing enhancements. ( Sandbox – Copy of QA system has been upgraded to 7.0, no EEWB Project avaiable).

    Please suggest


    • Hello,

      In 7.0 there is no way to migrate existing EEW or manually created fields. We will address this in the next releases.

      In the meanwhile edit/regenerate the existing fields with EEW.


      • Hello Tzanko,

        Thanks for your quick response. Issue is, we don’t have EEWB projects in the system as sandbox has been copied from the Quality/test system & upgraded to CRM 7.0 version.

        In this situation, how can EEWB fields be generated? Is there any way to copy the EEWB project from Dev to Sandbox? Or something else.

        This will be really great help.


  • The AET is great help, but I feel it also has some weaknesses, especially in regards to dealing with Currency fields and their reference currency key fields.

    First of all, is it possible to create a currency key field within the AET. I don’t think that it is.
    You can create a currency field and reference a currency key field, but I am have a hard time trying to get it point to any other currency key field than the one it keeps defaulting in.


    • Hi Jason,

      the AET allways treats the currency value and the reference field as one unit. Allways both fields are created and linked.
      It does not support to have several value fields linking to the same reference field.

      Creating a reference field is possible if you specify a manual data element for it, which has the currency key data type. However this would not be of much help as you can’t make use of it in other field extension.

      Regards Matthias

  • How do I enhance a table structure (not just one field), using the AET. Is this possible?
    All I have seen so far from you and other blogs (demos) is adding single fields to a header view like that. Now, I would like to add a add custom field (column) to a item list (for eg in a service order) which is a table structure.

    Please advise.

    Thanks in advance.

    • Hi Satish,

      when you add a new field to service order, you have to choose the object part where the field should be placed. Among others there is one part for the header (BTADMIN_H) and one part for the item table (BTADMIN_I).
      I assume the item table is what you need.

      Regards Matthias