Skip to Content

In my blogs Application Enhancement Tool: Creating and Reusing Custom Fields with CRM 7.0 (Application Enhancement Tool: Creating and Reusing Custom Fields with CRM 7.0 (Part 1 of 2) and Application Enhancement Tool: Creating and Reusing Custom Fields with CRM 7.0 (Part 2 of 2) ) – I promised to provide a recording on how to quickly add a custom field.

Here it is – SAP CRM 7.0 – Adding Custom Fields Video Clip

Do you agree, it gives you a better idea on usability and the intuitiveness of this new CRM 7.0 addition?

To report this post you need to login first.

54 Comments

You must be Logged on to comment or reply to a post.

    1. Sameer Patil
      Hi,

      I want to add custom field user status in sales order ERP in CRM 7.0 Web UI

      “User Status” fields in ERP Sales Order and ERP Quotations.  The fields need to be added to the sales document header for reporting purpose.
      As “User status” field is not available in CRM. “User Status” is an existing field in ECC (Field name: ASTTX) and this need to be added at the header level of ERP Sales order/Quotation.

      (0) 
      1. Matthias Schmalz
        Hi Patil,

        the AET supports enhancing the ERP order objects on the CRM side.
        However I assume you will get problems as you need to use the same name for the field. The AET will not allow you to use the SAP namespace when you are using a package in a customer namespace. The only way to bypass this check would be a small debugger hack.

        Regards Matthias

        (0) 
  1. Davy Pelssers
    Hello, the video was very intresting but I only was wondering if you did not need to use the easy enhancement workbench for this part?

    Kind regards
    Davy Pelssers

    (0) 
    1. Tzanko Stefanov Post author
      Hi Davvy,

      Not sure what you meant here, but as of CRM 7.0 you do not have to use EEW in order to add a new field. There is a new tool, called AET and this is exactly what you saw in the video.

      If you wish you could still use EEW. The fields created by EEW will appear as read only in the new field. But this is a different story altogether.

      Best regards,
      Tzanko

      (0) 
      1. Davy Pelssers
        Thanks for your feedback. I actually only saw the video before. That’s why I was unsure, but after also reading (finding back) the blogs itself on this topic written by you, the AET tool now became clear. Really nice.

        Learned again so many things today thanks to all people bloggin here  on SDN.

        cheers and thanks
        Davy Pelssers

        (0) 
      2. Sameera s
        Hi Tzanko,
        Its very useful for my current project requirement. I tried to use AET. I got some issue. Can you please clear it?

        I Chosen the Create New Field pushbutton on the Application Enhancement Tool starts.
        Here I need to select object part. Here the dialog popup is showing Package as “BSP_DYN_CONFIG_EXTENSIONS” and Namespace as “Z”
        I want choose my own ZPackage here. But I couldn’t see any option to change it.

        After filling the field details, when I press on the “saves and generate” button I got below error

        Error Details
        Diagnosis
        Object AXTE ZEXT000001 is in the name range reserved for customers. The object cannot be assigned to package BSP_DYN_CONFIG_EXTENSIONS, since it belongs to a different name range or namespace.
        System Response
        Editing is terminated.
        Procedure
        Assign the object to a customer package whose name begins with Y or Z.
        If you want to create the object as a test object, you can also assign it to a local package (1st character = $) or a test package (1st character = T).

        Please help me in How can I choose my own z package while selecting object part.

        Thanks
        Sameera

        (0) 
  2. Marco Haseney
    Hello Tzanko, very good 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 big disadvantage in EEW from our experience due to many ERP data/fields, which would be prefered to be on CRM sales area data, too. Could we enhance BP sales area data with AET now? What are the limitations/constraints of the AET from your perspective. Thank you for your feedback in advance.
    (0) 
  3. Charles Muriyadan
    If a custom field is created in WEB UI for Account, can this field be made available in the transaction ‘BP’ in WN GUI. If yes, then please guide me on how it is possible.
    (0) 
  4. Massimo Boccali
    Hi Tzanko,

    thanks for your useful blog. I have a question: using AET I created a custom field in trade promotion screen; now I need to hide this custom field and show it only when a particular value is selected from a standard field in the same view. Is it possible?

    Best Regards
    Massimo

    (0) 
    1. Tzanko Stefanov Post author
      Hi Massimo,

      You brought up an interesting use case. AET itself does not influence what is visible on the UI. As you might have noticed in my video, I am enabling the new field in the view layout via the UI Configuration Tool. AET integrates nicely into UI Config. Tool. None of these tools allows you to dynamically hide/show fields. However, do not despair! You could create 2 configurations, one with the field, the other without the field. As soon as your value changes, you could implement a simple logic in your UI Component (us the Component Workbench) that changes the active configuration. As a result the user will see the field disappear.
      If your use case is more complicated or you have some additional requirements please write back with more details and I will try to help.

      Sorry it took so long to respond.

      Best regards,
      Tzanko

      (0) 
  5. Enzo Porcasi
    Hi,
    I’m new to CRM and I found greate this blog.
    But I’m trying to add some field to service request, but when I add they in the layout they are not editable. There is some relation with the structure I choose for addin the field?

    thanks
    Enzo

    (0) 
    1. Matthias Schmalz
      Hi Enzo,

      there can be several reasons why an extension field is read-only.
      However in your case I have a special asumption what could be the reason. On the details view of the service request, we sometimes find a context node for the related service contract. If you have added the field from this node and there is no contract assigned, the field is read-only. If this is the case, you have to add the field of the correct context node.

      Regards Matthias

      (0) 
  6. Swapna Viswanathan
    Hi,
    This video is really good and the tool seems so easy.

    But i had tried the same to add in one of the assignment blocks . The context node is a table view.Successfully added the field to the line item but the field is non editable.

    May i know the possible reasons that coudl lead to this.

    From my observation,some BOL structures are not getting enhanced.

    What could be the reason for a BOL structure supposed to be enhanced,not getting enhanced?.

    Any pointer is highly appreciated.

    Thanks in Advance
    Swapna.

    (0) 
    1. Matthias Schmalz
      Hi Swapna,

      there can be different reasons for this.
      In some cases it happens that the field is switched to read-only by the underlying application by accident.
      To better anaylze this, I would need some more information: To which BO Part have you added the field and what is the component and view name of the table?
      Another option would be to open an OSS message for this on component CRM-BF-EEW.

      Best regards
      Matthias

      (0) 
      1. Swapna Viswanathan
        Hi,

        We had created a new field using AET in Products Assignment Block of Campaigns as a line item. This is a drop down field.
        But in WEB UI,this field is being displayed as non-editable dropdown.

        In AET, we opted Business Object as MKT_CPG and subobject as PRD.

        But the issue is that the Dependent objects CPGProducts and CPTProducts BOL Entity Structures are not getting enhanced with this new field and i guess , so the field is appearing as non-editable in WEB UI.

        PRODUCTS context node is using the structure CRMS_MKTPL_IB_CPG_PROD(BOL object CPGProducts).

        All other related object structures(Structure of that of Dependent Objects AGRProduct ,DLMProduct etc) are being appended with the newly created field.

        Component : CPGOE_ABLOCKS
        View : CPGOE_ABLOCKS/OVELProducts
        Context Node : PRODUCTS
        Attribute structure that needs to be enhanced for our requirement : CRMS_MKTPL_IB_CPG_PROD.

        We are not using Genil Shared memory in our dev system.

        Thanks
        Swapna.

        (0) 
        1. Matthias Schmalz
          Hi Swapna,

          in our CRM 7.0 correction system the structure CRMS_MKTPL_IB_CPG_PROD contains an include of structure INCL_EEW_MKTPL_PRD as the last field. This will add the extension fields. Unfortunately I could not find older versions of it, to check whether this has been added by a correction and I couldn’t find a note for this.

          I would recommend to either implement the latest SP or to correct the structure manually by adding the include.

          Best regards
          Matthias

          (0) 
          1. Swapna Viswanathan
            Hi,
            I checked in my system and found the same include missing in CRMS_MKTPL_IB_CPG_PROD and CRMS_MKTPL_IB_CPT_PROD. But it has been included to all other possible related structures like CRMS_MKTPL_IB_AGR_PRODUCT,CRMS_MKTPL_IB_INI_PROD etc.

            What could be the issue in this case.

            Also,how do we check for the latest SP?How can we know what SP had been already implemented in our system.

            Thanks
            Swapna.

            (0) 
            1. Matthias Schmalz
              Hi Swapna,

              I’m sorry I have not seen that the extension include structure is not included directly but via another structure, where this is missing.
              The problematic structure is CRMS_MKTPL_CPG_PROD.
              I have found note 1472567 which describes the solution. The fix is contained in SP07.
              You can determine your current SP level from SAP-GUI by choosing Syste->Status in the menu. Then click the button in the SAP System Data block and search for an entry of BBPCRM.

              Best regards
              Matthias

              (0) 
                1. Swapna Viswanathan
                  Hi Matthias,

                  We had added a new field to CPGProduct in component CPGOE_ABLOCKS. But the extension field wasnot included to the BOL structure automatically.

                  So as suggested by you,We had used the SAP note 1472567 to add the include structure INCL_EEW_MKTPL_PRD to structure CRMS_MKTPL_CPG_PROD which inturn would rectify our BOL  structure CRMS_MKTPL_IB_CPG_PROD.

                  The field which we had added using AET was added in tables CRMD_MKTPL_PROD and SMOPCCAPRO. But we are facing an issue that the values are not getting populated in the SMOPCCAPRO table on save.The values are gettign populated in the CRM table.

                  Do we need to implement any other SAP note on the midleware side too to rectify this issue as i infer some interface structure would be missing this field which results in the truncation of value from being passed to the CDB table . Any pointers in this regard would be helpful.

                  Thanks
                  Swapna.

                  (0) 
          2. Swapna Viswanathan
            Hi,
            I checked in my system and found the same include missing in CRMS_MKTPL_IB_CPG_PROD and CRMS_MKTPL_IB_CPT_PROD. But it has been included to all other possible related structures like CRMS_MKTPL_IB_AGR_PRODUCT,CRMS_MKTPL_IB_INI_PROD etc.

            What could be the issue in this case.

            Also,how do we check for the latest SP?How can we know what SP had been already implemented in our system.

            Thanks
            Swapna.

            (0) 
        2. Venkat Reddy

          Hi Swapna,

          I have small issue regarding my requirement when i try to add the fields in Configuration Tab of View1 from Available assignment block to Displayed Assignment Block.

          thing is in that standard structure is having INCLUDE structure…..How to add this include fields into Display assignment block….This Include structure  fields is not available in the Available assignment block.   

          Please help me.

          Regards

          Venkat

          (0) 
      2. Swapna Viswanathan
        Hi,

        We had created a new field using AET in Products Assignment Block of Campaigns as a line item. This is a drop down field.
        But in WEB UI,this field is being displayed as non-editable dropdown.

        In AET, we opted Business Object as MKT_CPG and subobject as PRD.

        But the issue is that the Dependent objects CPGProducts and CPTProducts BOL Entity Structures are not getting enhanced with this new field and i guess , so the field is appearing as non-editable in WEB UI.

        PRODUCTS context node is using the structure CRMS_MKTPL_IB_CPG_PROD(BOL object CPGProducts).

        All other related object structures(Structure of that of Dependent Objects AGRProduct ,DLMProduct etc) are being appended with the newly created field.

        Component : CPGOE_ABLOCKS
        View : CPGOE_ABLOCKS/OVELProducts
        Context Node : PRODUCTS
        Attribute structure that needs to be enhanced for our requirement : CRMS_MKTPL_IB_CPG_PROD.

        We are not using Genil Shared memory in our dev system.

        Thanks
        Swapna.

        (0) 
  7. Swapna Viswanathan
    Hi,

    How can we make AET field always non-editable?
    I had tried redefining GET_I method for the field ,but that doest work.

    I came to know that GET_I doesnt work for AETs.

    Any pointers are highly appreciated.

    Thanks
    Swapna.

    (0) 
      1. Swapna Viswanathan
        Hi,
        I had done the same.But when i try debugging the get_i method,teh method itself does nto get triggered.

        Any idea why getter setter methods are not getting triggered for the aet field? I have generated only get,set,get_i and get_m methods.

        Thanks
        Swapna.

        (0) 
        1. Matthias Schmalz
          Hi Swapna,

          this is hard to analyze without system access.
          What you can try is to set a breakpoint in
          CL_BSP_WD_CONTEXT_NODE->GET_I_S_EXT.
          This method is called for every extension field and dispatches to a specific getter if it is there. Then you can check why your getter is not called.

          Best regards
          Matthias

          (0) 
          1. Swapna Viswanathan
            hi,
            Actually i need to create a non-editable field
            that would display a text in front end and while saving would save it at the back end as a char 2 code.

            Is this possible for an aet field created as an input field type(i do not need drop down or value help field)?

            Thanks
            Swapna.

            (0) 
            1. Matthias Schmalz
              Hi Swapna,

              actually I do not really understand your use case. If the field is read-only, where does the value come from which is saved to the DB?
              Or is this calculated during processing by the view controller? Of course you could put such calculation logic somewhere e.g. into DO_FINISH_INPUT and make the field read-only via I-Getter.

              To make communication easier and not to flood this blog you can also mail me to matthias.schmalz@sap.com

              Best regards
              Matthias

              (0) 
              1. Swapna Viswanathan
                Hi,
                We had created the field for business object APPOINTMENT and suboject type as Product_I.But this does not modify the BOL structure used by context node BTADMINI(CRMST_ADMINI_BTIL) for the Activity Journal BT127I_ACTI component.And hence the getter setter methods are not getting triggered for the AET field.

                Other options available as subobject type are ORDERADM_H,ORGMAN,PARTNER,ACTIVITY_H,ACTIVITY_I.

                The population of the field is done by fetching the value from the relationship ‘BTItemProductExt’ of the BTADMINI entity.This has the field value retrieved from the products maintained in the campaign selected by the user for the activity(‘Insert Campaign Products’ option in ‘More’ for the Activity journal in the appointment).

                Thanks
                Swapna.

                (0) 
                1. Matthias Schmalz
                  Hi Swapna,

                  I wonder why the BTADMIN_I part is not available for APPOINTMENT. It seems like it has been forgotten.
                  You are right that in case you enhance PRODUCT_I, the structure for BTADMIN_I is not enhanced. However the AET knows about the relation between those nodes and is able to make the fields available under a BTADMIN_I node.
                  It might be that if you generate GETTER/Setter for such a field, that the relation is not taken into account.
                  Is this the problem you are facing?

                  Regards Matthias

                  (0) 
                  1. Swapna Viswanathan
                    Hi,
                    Yes,since orderadm_i is not supported for appointment type,the redefinition of the get,set and get_i methods of the field doesn’t work.

                    Any idea how could this be solved?Perhaps adding the field from some other view?i had checked all supported business object types of appointment->activity journal->products view for orderadm_i.But none of them has it for appointments.

                    Thanks
                    Swapna.

                    (0) 
                    1. Matthias Schmalz
                      Hi Swapna,

                      the generated getter/setter do not handle the relation to the product_i. However you can easily adjust the generated coding.
                      This would be required for the GET_, SET_ and GET_I_ methods.

                      In the beginning the methods have a coding to fetch the current entity like:

                        IF iterator IS BOUND.
                          current = iterator->get_current( ).
                        ELSE.
                          current = collection_wrapper->get_current( ).
                        ENDIF.
                        IF current IS NOT BOUND.
                          RETURN.
                        ENDIF.

                      After this coding you have to handle the relation:

                        DATA: lr_entity     TYPE REF TO cl_crm_bol_entity.

                        TRY.
                            lr_entity ?= current.
                            current = lr_entity->get_related_entity( iv_relation_name = ‘BTItemProductExt’ ).
                            IF current IS NOT BOUND AND lr_entity->is_changeable( ) = abap_true.
                              current = lr_entity->create_related_entity( iv_relation_name = ‘BTItemProductExt’ ).
                            ENDIF.

                          CATCH cx_sy_ref_is_initial cx_sy_move_cast_error
                                cx_crm_genil_model_error.
                            RETURN.
                        ENDTRY.
                        IF current IS NOT BOUND.
                          RETURN.
                        ENDIF.

                      Then the regular coding can continue.
                      Then the fields should work again.
                      However if you do not need specialized getters you can just remove them, to get the default AET handling. This will handle the relation, too.

                      Regards Matthias

                      (0) 
                      1. Swapna Viswanathan
                        Hi,
                        The issue here is that,when we try to debugg the generated SET,GET or GET_I methods by putting a breakpoint,none of these methods are getting triggered at all.But i created GET_P method and the same got triggered and executed for the aet field,but not any of the other get/set methods.

                        Thanks
                        Swapna.

                        (0) 
                        1. Matthias Schmalz
                          Hi Swapna,

                          please raise an OSS message on component CRM-BF-EEW to and open system connections. Then I can analyze the issue. Otherwise I can’t imagine what’s going on.
                          I will need an R/3 and an HTTP connection. Please specify the profile to log on and how to reach the view.

                          Regards Matthias

                          (0) 
  8. Swapna Viswanathan
    Hi,
       When we try to add a new field to the products assignment block usign AET,we see that the create new field option is disbaled for component AJTPLH_TMPL.
    Any pointers to how can we add a field here is highly aprpeciated.
    Thanks,
    swapna
    (0) 
  9. Swapna Viswanathan
    Hi,
         We have created a field under sub-object Activity_I for the Appointment type Store Visit usign AET.

    View->BT127_ActI/BT127_ActIIEFJournal,

    but the WEB UI has three options for inserting products in the acivity journal edit screen as
    1)insert from History
    2)insert Listed Products
    3)insert Campaign products

    For insert campaign products,the new field is working fine as it is getting the data from crmt_mktpl_prod.Also,we are explicitly setting the
    value into the field in the activity relationship
    BTItemActiivtyExt.

    Now, the issue is the ‘insert from history’ has the corresponding event handler ‘eh_oncopyproducts’ which inturn is handling the copy of previous products using CRMT_ACTIVITY_I_BTIL structure which does not have our field in it even though we had created the field for Activity_I subobject type.

    The merge_data method in the eh_oncopyproducts fetches data from cl_crm_activityh_run_btil=>gt_copyproducts which has our field ,but i am not sure if system would handle it on its own or we need to explicitly set the field value.

    So i tried creating new field from the Activity Journal template AJTPLH_TMPL for the products,but there i am getting the create new field button as disabled.
         
         Any pointers to this is highly appreciated.

    thanks,
    Swapna.

    (0) 
    1. Matthias Schmalz
      Hi Swapna,

      if the Create New Field button is disabled, the AET is not able to find an extensible BO to use. It is likely that the current view is not supported to be extended.

      Unfortunately I have no knowledge about the activity processing and don’t know the responsible for it.
      So I recommend to raise an OSS message for this, which should be dispatched to the person responsible.

      Best regards
      Matthias

      (0) 
  10. Swapna Viswanathan
    Hi,
    we have a requirement to create a new field to the Products assignment block in Activity Journal Template.
    The BOL entity being used is TEmplateProduct with structure CRMT_ACT_JRNAL_PREFLLD_PRODUCT.

    COmponent : AJTPLH_TMPL
    View : AJTPLH_TMPL/ProductsDefault
    COntext Node : TEMPLATEPRODUCT

    Can anyone give a lead how to go about the creation.

    We had added a field in structure CI_EEW_ACTIVITY_I,this got replicated in the structure used by the BOL entity above.But not available in the configuration tool’s available fields list.SO we had explicitly added the field in the GET_TABLE_LINE_SAMPLE , but still it doesnt appear in available fields list in the config tool.

    Any pointers as to where we are going wrong is highly appreciated.

    Thanks,
    Swapna

    (0) 
    1. Matthias Schmalz
      Hi Swapna,

      if the field has been added to the BOL object’s attribute structure but is not visible, it has possibly been hidden by the design layer. Please refer to note 1357657, for a solution.
      I assume that you have not used the AET for adding the field, as it would not use the CI structure.
      I have checked the structure, the BOL object and the content which has been registered for the AET and it looks like there’s something done incorectly, so the AET is not of use here.
      If you would like to use the AET for adding the field, I recommend to raise an OSS message on component CRM-BF-EEW to get this fixed.

      Best regards
      Matthias

      (0) 
      1. Swapna Viswanathan
        Hi Matthias,
              We  have implemented the snote and our field is now visible in the config tool,but it is not visible in ui nor in list of available fields. And again only 3 fields are being shown in the UI even though in configuration there are 4 fields added excluding our z field.
              The fields visible are product type,id and explosion. The missing fields are z field and category.
          

        Regards,
        Swpana.

        (0) 
        1. Matthias Schmalz
          Hi Swapna,

          I do not understand what you mean that the fields are in the config tool but not in the list of available fields. Where else do you find them?
          However this seems to be to complicated to discuss here. So please raise an OSS message for this.

          Regards Matthias

          (0) 
          1. Swapna Viswanathan
            Hi,
            Sorry for the confusion.

            Actually i meant,it is available in Available fields in the config tool.I added it to display fields in the config tool. When i checked UI,the field was not appearing,infact only 3 fields were coming up namely product type,id and explosion.I checked the personalization option which had only 3 fields in the displayed fields list which were Product ID,Product Type and Explosion. In Config tool,in addition to these fields,we have Product category and our z field added to the displayed fields list.

            In our system,the custom configuration has been created and our z field added to it,but when we login from the web ui, teh system does not identify the custom configuration. we had implemented the sap note provided by you also..still its behavior is same and shows only 3 fields.

            Thanks
            Swapna.

            (0) 
            1. Matthias Schmalz
              Hi Swapna,

              here the visibility filter based on the UI Object type hides the field.
              You can do the following:
              1. Focus a field of the view and hit F2 to get the technical details.
              2.Read out the UI Object type which has been set by the view controller (on the left).
              3. Go to view maintenance (TA SM30) for view BSPDLCV_OBJ_TYPE and lookup the object type. Check whether an extensible BO has been maintained.
              If there is no ext. BO this is an error and you should raise a message to get it fixed. As a workaround you can override the setting in the customer table, which can be found in IMG.
              If a BO is maintained, you have to enable your field extension for it, by using the “Add reusable field” button. If you start the AET directly from this view it should bring you to the correct BO.

              Regards Matthias

              (0) 

Leave a Reply