Product Master Data – Settypes/Reltypes In Detail
Data related to a Product (Material, Individual Object, Service, IP, warranty), in CRM Product Master Data can exist either in product Reltypes or in product Settypes. Reltypes are nothing but product relations. It is also known as Product Interlinkages.
Settype or a reltype, will be visible in CRM Web UI, as a separate assignment block.
Product Interlinkages (Reltypes):
Product Interlinkages(Reltypes) can be of 2 different types:
- Product to Product relation
Example:
Accessories of a product
Warranty associated to a product
Components of structured product
Service parts of material etc.
- Product to BP relation
Example:
Competitors of a product
Suppliers of a product
Involved Parties of an individual object (say Owner of the vehicle, Contact Person of an Individual Object etc)
More reltypes which are delivered in standard, can be found using table COMC_IL_TYPE and COMC_IL_TYPE_T, with Source = BUS1178 (Product) and Destination = BUS1178 (Product) or BUS1006 (Business Partner).Users can also create their own reltype, between Product to Product or Product to BP, using EEWB (Easy Enhancement Workbench).
SAP Note: 1139562 can be referred here to integrate Z* reltype in Web UI
SAP Note: 1418914 explains AET (Application Enhancement Tool) VS EEWB.
SAP Note: 1874824 Usage of EEWB in Product Master Data
Reltype table is COMM_IL_<reltype-id> for SAP delivered reltypes and ZOMM_IL_<reltype-id>, for customer specific reltypes.
Product Settypes:
Product settypes are nothing but group of related product attributes.
Examples for settypes include Unit of Measure (COMM_PR_UNIT), Product Tax (CRMM_PR_TAX), Sales area data (CRMM_PR_SALESA) etc.
Settype CRMM_PR_TAX, groups together tax related attributes like tax country, tax region, tax type, tax group, tax tariff code etc.
Settype COMM_PR_UNIT, groups together Unit of Measure related attributes like Base Unit, Alternate Unit, Numerator, Denominator, Gross Weight, Net Weight etc.
Table COMC_SETTYPE can be referred, to know more about settypes which are delivered in standard.
It is also possible to create our own product attributes and group them together in a new settype, using Transaction COMM_ATTRSET.
Below are the steps involved from settype creation to their availability in CRM Web UI:
Step | Description | Comments |
---|---|---|
1 |
Definition of Attributes and Set Types |
Transaction COMM_ATTRSET |
2 |
Assignment of the Settypes to the Category |
Transaction COMM_HIERARCHY |
3 |
Settype assignment to respective Overview Page |
Transaction CRMM_UIU_PROD_GEN |
4 |
Configure Settype as visible Assignment Block in the OVP |
Using Configuration Tool in BSP workbench |
5a |
UI Configuration Creation of the Settype |
Transaction CRMM_UIU_PROD_CONFIG |
5b |
UI Configuration Adaption of the Set Type |
Optional (changing field label, field properties etc using configuration tool) |
6 |
Assignment of the Category to the Product |
Applications Products, Services, Warranties, Objects, Competitor Products, …during creation process |
Below are the respective Overview Pages for the respective applications:
Application | OVP |
---|---|
Products | PRD01OV/MaterialOV |
Services | PRD02OV/ServiceOV |
Warranties | PRD05OV/WarrantyOV |
Objects | PRDIOOV/ObjectOV |
Competitor Products | PRDCPOV/CompetitorProductOV |
Optionally, implementing data check routines for attributes of the set type can be done using BAdI PRODUCT_SET.
SAP Note: 1533208 How-to-guide for creating set types in SAP CRM, can be referred here.
SAP Note: 1508557 Extensibility VS settype enhancement
Adding custom settype attributes into product search is also possible. SAP Note: 1026956 and 1430798 can be referred here.
Different kinds of settypes and their appearance in CRM Web UI:
For demonstration purpose, I have created 2 attributes ‘Product Model Number’, ‘Date of Manufacture’ without checking the checkbox ‘Multiple Values Pos.’ and attribute named ‘Instructions’ with checking the checkbox ‘Multiple Values Pos.’ during attribute creation.
In below scenarios, I have used attribute ‘Instructions’ within settypes as single value attribute field and multivalue attribute field. And for demonstration purpose, I have used PRD01OV as my overview page component.
1) Single line settype (without any multivalue(MV) attributes)
Settype configuration is present in PRDGENSET/SLSeteOV, with Object Subtype = <Settype-ID>.
2) Single line settype which is Org Dependent (without any MV attributes)
Settype configuration is present in PRDGENSET/SLDCSetEF, with Object Subtype = <Settype-ID>
For Org Dependant settypes, Overview page: PRDDC/DCOV.
3) Single line settype with MV attribute
To use an attribute as a multivalue attribute, it is required to tick checkbox ‘Multiple Values Pos.’, during attribute creation using transaction COMM_ATTRSET. And this attribute can be used as again single value or multivalue attribute within a settype, during settype creation using transaction COMM_ATTRSET,tab ‘Assinged Attributes’, using check box ‘Multiple Values’. Please note that, this check box is available only for attributes for which checkbox ‘Multiple Values Pos.’ is ticked, during attribute creation.
Do not get confused with check box ‘Multiple Use’ avaibale during settype creation, using transaction COMM_ATTRSET. This indicator is ticked, when this settype can be used by more than one products say general characteristics like Unit of Measure which can be re-used across several products and when unchecked, it means that settype is bound to single product, say serial number.
Settype configuration is present in PRDGENSET/SLMVAttreOV(for MV attribute) and PRDGENSET/SLSeteOV ( for non-MV attributes) , with Object Subtype = <Settype-ID>.
4) Single line settype with MV attribute which is Org Dependent
Settype configuration is present in PRDGENSET/SLMVDCAttrEL (for MV atttribute) and PRDGENSET/SLDCSetEF( for non-MV attributes), , with Object Subtype = <Settype-ID>.
For Org Dependant settypes, Overview page: PRDDC/DCOV.
5) Multi line settype
Settype configuration is present in PRDGENSET/MLSeteOV, with Object Subtype = <Settype-ID>.
To qualify for multiline settype, ‘Field is Key’ should be ticked under ‘Assigned Attributes’ tab during settype creation in transaction: COMM_ATTRSET, for relevant attributes.
6) Multi line settype which is Org Dependent
Settype configuration is present in PRDGENSET/MLDCSetEL, with Object Subtype = <Settype-ID>.
For Org Dependant settypes, Overview page: PRDDC/DCOV.
Common mistakes performed due to which assignment block for the settype goes missing in Web UI:
- Make sure that in Transaction CRMM_UIU_PROD_GEN, you provide the correct Enhancement Set for that client. This can be checked in table BSPWD_EHSET_ASGN. Also, make sure to provide the right Overview Page Component.
- Also, make sure that you add the settype AB from Displayed to Available AB, using Configuration Tool, for the correct configuration of that OVP.
Hope you find this blog useful 🙂
Nice Blog.. Thanks
Thanks Mani.. 🙂
Very detailed and well explained blog.
A question related to business transactions. Can the set type be added to the business transactions screen like you have added to product/object?
We need address fields in our service orders and would like to use the standard settype COM_LOCAT_ADDR.
Thanks
Thanks Manish.. 🙂
Above steps mentioned are specific to product/object enhancement.
For business transaction screen enhancement, you can use AET.
Standard settype COM_LOCAT_ADDR, contains address number assoicated to an
individual object and actual address details are stored in BP table BUT020.
So I do not think you can use settype COM_LOCAT_ADDR here.
If service order contain objects under items, then anyways object can contain data in settype COM_LOCAT_ADDR.
Can't you re-use BP address related component by enhancing service order related component, by means of component usage?
Best Regards,
Shanthala.
Hi Shanthala
Thanks for your reply.
Our service order address gives the location of the problem/incident, which is neither the BP address and nor the object address.
Looks like we have to extend our BT model.
http://wiki.scn.sap.com/wiki/display/CRM/Extend+BOL+Model+BT+with+custom+table+type+relationship
http://scn.sap.com/community/crm/blog/2010/07/26/extending-bol-model-bt-with-table-relations
http://wiki.scn.sap.com/wiki/display/CRM/A+summary+of+creating+Custom+GenilBol+components+for+Z-tables+with+relationship
Cheers
Manish
Very well explained.
Thanks Rahul.. 🙂
Much needed info. 🙂
Thanks Anindya.. 🙂
A very good overview from the CRM perspective... 🙂 certainly helpful.
Thank you Sameer.. 🙂
Hi Shanthala
What is the maximun attribute length allowed for set type attributes in WebUI/GUI?
We don't transfer object/product data to ECC.
Hello Manish,
Please see below:
----------------
Message no. COM_PRODUCT_CUSTMSG015
Diagnosis
Attribute values correspond to characteristic values in the SAP system. Characteristic values can have a maximum of 30 characters in the SAP system, whereas attribute values can have a maximum of 132 characters in the CRM system. Attributes are limited to 132 characters if they are used on the user interface in product maintenance, otherwise this restriction does not apply.
If you intend to transfer this data from the CRM system to an SAP system and want to avoid extensive mapping, attribute values should not contain more than 30 characters, because object dependencies do not support attribute values that are longer.
----------------
So, ideally attribute value can be upto 132 characters.
But when you try to define attribute having more than 75 characters, you get below error message:
----------------
Only attribute lengths of up to 75 characters are permitted for the PC-UI
Message no. COM_PRODUCT_CUSTMSG022
Diagnosis
Due to a length limitation in the People-Centric UI (PC UI), single-value attributes may only be created with a length of up to 75 characters.
Procedure for System Administration
If you do not use the People-Centric UI, you can convert error messages to warnings by making the appropriate entry in the Customizing table T100C.
Enter the following:
Field Value
ARBGB COM_PRODUCT_CUSTMSG
MSGNR 022
UNAME
MSGTS W
MSGTB W
----------------
So you can try to change the above error message to warning using T100C.
I could see upto 75 characters can be maintained from Web UI for an attribute, if above changes is not done in T100C.
But make sure that you choose the coorect Attribute Type which supports more number of character while creating an attribute.
Best Regards,
Shanthala.
Thanks Shanthala
Thanks or detailed response
Hi Shanthala,
Thank you very much for your content above. It's great learning experience from your postings.
I have one doubt out of the above.
I created two set types and assigned them in the overview page PRDIOOV/ObjectOV with the report CRM_UIU_PROD_REPOSITORY and configured with the report CRM_UIU_PROD_CONFIG and after that brought the set types to overview page PRDIOOV/ObjectOV .
This all done fine without any issues.
But my another requirement is to add these newly created set types on IBMAIN/DetailsOverview page. Will it be possible..?
I tried doing it manually by following below steps:
1) In component usage of IBMAIN, added the PRDGENSET/SLSetOVE
2) Added the view in the overview page of IBMAIN/DetailsOverview
It is fine .. and the assignment block has come in IBMAIN overview page.... But when I tried to open that lazy assignment block... It's giving BSP error page as below:
Dereferencing the NULL reference
Exception Class CX_SY_REF_IS_INITIAL
Error Name
Program CL_PRDGENSE_SLSETEOV_IMPL=====CP
Include CL_PRDGENSE_SLSETEOV_IMPL=====CM003
ABAP Class CL_PRDGENSE_SLSETEOV_IMPL
Method DO_PREPARE_OUTPUT
Line 8
Long text An attempt was made to execute a dynamic method callon an initial(NULL-) object reference. The reference must refer to an object.
Do you have any idea how achieve this..??
Could you please help me here.
Thanks & Best Regards,
Nagarjuna
Hello Nagarjuna,
As far I know, above enhancement way is very specific to product/IObjects.
There will be some or the other issues, if you try to tweak in the behaviour.
You can still debug, by putting the BP/watch point and find the actual reason.
Best Regards,
Shanthala.
Hi Shanthala,
Thanks for looking into this.
Ok I will check that.. But will it be okay to add it at IBMAIN...? This is my big worry...
Means will cause any problems.. or Am I deviating from any standard ways?
Thanks for your kind help.
Best Regards,
Nagarjuna
Hello Nagarjuna,
As mentioned earlier, above method of enhancement based on settype is mainly used to
enhance product/object related overview pages belonging to different product types.
Anyways, if you have already started it you can complete your development and test
every other scenario to know, wehther its feasible 🙂
Basically display, create,update of settype data, if you have managed to embed the settype view .
Best Regards,
Shanthala.
Hi Nagarjuna,
I am trying the same thing. Note 1925317 helped in solving the short dump you mention. Just enhance the Window class for IBMAIN and redefine the following method:
METHOD set_view_group_context.
IF iv_first_time EQ abap_true AND
me->view_group_context IS NOT BOUND.
IF iv_parent_context IS INITIAL.
CREATE OBJECT me->view_group_context
TYPE cl_bsp_wd_view_group_context.
ELSE.
me->view_group_context = iv_parent_context.
ENDIF.
ENDIF.
ENDMETHOD.
Now I just need to get the fields populating... Any ideas?
Patrick.
Hi Shanthala, Very Informative Blog. I enjoy reading your stuff.
Thanks
Ram Vellanki
Thanks Ram 🙂
Nice Blog..
Thanks Fan 🙂
Hi Shanthala
How to display the set type in hierarchal fashion?
Like CRM has multilevel categorisation in Transactions.
Our requirement is; based on the values of attribute 1 display the values in attributes 2.
We want 2 level of hierarchical attributes.
Cheers
Hello Manish,
I do not think, that is possible here due to dynamic behaviour of settype during runtime.
However, you can explore BAdI: PRODUCT_SET which is mainly used to check for
mandatory field check or to implement F4 for settype attributes.
May be your requirement is something like this: depending on the value of country(attribute 1) chosen, populate the state (attribute 2) values. Right?
You can play around with this BAdI to check whether your requirement can be met.
Hope this helps!
Best Regards,
Shanthala.
Thanks Shanthala
Very useful Shanthala, thank you for sharing !!
Hi Shakuntala,
Thanks for the blog. Its very useful.
I have an issue. When i regenerated settype, BW extraction structure is created but this structure is empty. I tried regenerating settype multiple times. But no luck. All fields are BW relevant in settype. Please advise what might have gone wrong.
Thanks and Regards,
Pallavi
Hello Pallavi,
I assume issue might have been already resolved 🙂
If not, make sure you tick 'Create API append' during settype regeneration and also check the generated Bdoc during transfer to BW.
Best Regards,
Shanthala.
Hi Shakuntala,
Nice blog. You need to add the set types relevant for pricing it would be great.
Regards,
Jorge G.
Hi Shanthala
Are there any BADI or another hookup points available to default the value of an attribute in webUI?
Are there any BADI or another hookup points available to make some attributes mandatory in webUI?
Thanks
MB
Hello MB,
Is the issue still there?
You can check BAdI: *prd*gen* in SE18. (shoule be PRDGENSET need to check)
Same BAdI can be used for mandatory fields as well.
Best Regards,
Shanthala.
Excellent!!
Thank you 🙂
Hi Shanthala,
A very detailed blog, thanks for the knowledge sharing!
I have a question which is not exactly related to the blog but still some what :
I assume your consent and posting my question here:
If I need to create a new field to Ibase in GUI then I can create it though the approach of Attributes/Set Type/ Category assignment only if we are treating the Ibase component as Individual objects, please confirm if you are aware of ?
I am on support landscape , and the already configured system does not have the IBASE category (Z1) assigned to any object family (Like 0401).
The components are being created by assigning product.
No set types exist for object family (0401) in my system
So does this sufficiently indicates that Ibase are not being created as Individual Objects and therefore the new field addition cannot happen through Set type and attribute creation?
Regards
Shilpi
Hi Shanthala,
Excellent Article on set types, I need to add accessories to my main finished product, could you please let me know which set type do I need to add to my category
Kind Regards
Atul
Hello Atul,
There is a standard reltype called ACCESS to link accessories to product.
You can add this reltype to your category using txn: COMM_HIERARCHY under the tab Relations.
Best Regards,
Shanthala.
Hi Shanthala,
It is a very good blog, i have seen you are sharing a lot of knowledge. Actually i am facing few situations, where my 1st is
1). I have a requirement in Service Request where if i maintained sold to party, automatically materials which he purchased(can be more than one materials) has to be determined and my main concern is that can SLA or Service profile & Response profile be assigned at header level or not. If can it be maintained for Subject or Reason in Service Request.
I have a requirement where some standard list of Query types (in Client language) are maintained SLA. If i selected that query type SLA should be determined(whether it can be 2, 4 or 10 days). But while creating Service request first sold to party is maintained than material and under this material Query type should be created.
So i have not yet decided where to maintain this query type, but it has to be maintained under material because one customer can purchase multiple materials. Please help me out.
2). My second problem is LORD interface, from CRM opportunity to ECC quotation.
After opportunity i am creating follow up transaction ECC Quotation in CRM web-ui, but Order Reason is not available and it gives the error like customer data is not maintained in ECC. As customer is replicated from crm to ecc.
Hi Shanthala,
Thanks for sharing this! 🙂
Need your help on this one.
in the CRM Webui, when we extend a product to a sales org and update the Contract duration, do you know who could we make "Month" as the value for the Unit for Time Period?
Please help us with your expertise on this.
Thanks much! 🙂
best regards,
Mechille
Hello Mechille,
Sorry for the delay. I have taken a career break and hence not very active.
Unfortunately, I do not have access to CRM box to guide you further but looking at the screen shot looks like its more to do with field label. Press F2 on that assignment block or column and try to get the view name. You should be able to do it with configuration tool for that view.
Hope this helps!
Best Regards,
Shanthala.
Hello Shanthala,
thanks for this blog post! It is very helpful but maybe you can help me with a requirement which I try to implement:
I like to create set attributes which are simple free text and have a length of max. 120 characters. The limitation for the attribute is 30, but the attribute value is max. 132 if I understood your comment right. But how can I make the attribute value field editable in WebUI without entering any value set attribute field?
Would be absolutely great if you could give me a hint about this problem.
Thanks and best regards,
Markus
Hi Shanthala,
Is it possible to maintain validity dates on Products (Product Type - 01 Material)?
When I look at COMM_PRODUCT table it has valid_from and valid_to dates but I've tried all possibilities (FMs - COM_PRODUCT_UI_MAINTAIN and COM_PRODUCT_MAINTAIN_MULT_API) but the system does not update these dates.
Thanks,
Gaurav
Hello Gaurav,
I am sorry, I do not work in CRM anymore and I cannot help you since I do not have system access.
As far I remember, it was taking current date and open date for valid_from and valid_to.
Those 2 are the main/correct APIs that you mentioned. If that do not work, then might be a bug.
Thanks and Best Regards,
Shanthala.
Hi Shanthala,
Thanks for the response.
Kind regards,
Gaurav