SAP CRM 7.0 – Adding Custom Fields Video Clip
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?
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.
Is there a specific question? ERP Order and Quotation objects are supported in AET.
Regards,
Tzanko
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
Kind regards
Davy Pelssers
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
Learned again so many things today thanks to all people bloggin here on SDN.
cheers and thanks
Davy Pelssers
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
I already responded to the same question from you in my other blog http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/12064. 🙂
As I wrote, sales data cannot be enhanced in CRM 7.0 but we plan to have this functionality in EhP1.
Best regards,
Tzanko
You've posted the same question in my other blog: http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/12064. 🙂
As I wrote, you cannot enhance sales data in 7.0. However, we plan to fix this in EhP1.
Please refer to my original response for more details.
Regards,
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
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
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
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
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.
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
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.
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
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.
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
Thank you , the solution has worked.
Best regards,
Swapna
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.
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.
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
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.
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.
Hi Swapna,Matthias
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.
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
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.
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
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.
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
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.
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
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.
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
I've just seen that this is already described in my note 1414509.
Regards Matthias
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
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.
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
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
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
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.
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
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.
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
Could you please give us your contact number and e-mail id. Please provide the timings too, if any.
Regards,
Swapna
I've updated my business card profile with contact data.
Regards Matthias
Thanks. quickest way to get AET