Skip to Content

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>.

       SL1.png

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.

       SLDC.png

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.

MVP1.png

/wp-content/uploads/2014/01/mvp3_376162.png

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.

MVP4.png

Settype configuration is present in PRDGENSET/SLMVAttreOV(for MV attribute) and PRDGENSET/SLSeteOV ( for non-MV attributes) , with   Object Subtype = <Settype-ID>.

      SLMV.png

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.

      SLMVDC.png

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.

     ML1.png

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.

MLDC.png

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 🙂

To report this post you need to login first.

44 Comments

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

  1. Manish Bansal

    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

    (0) 
    1. Shanthala Kudva Post author

      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.

      (0) 
      1. Manish Bansal

        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

        (0) 
    1. Shanthala Kudva Post author

      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.

      (0) 
  2. Nagarjuna Reddy

    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

    (0) 
    1. Shanthala Kudva Post author

      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.

      (0) 
      1. Nagarjuna Reddy

        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

        (0) 
        1. Shanthala Kudva Post author

          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.

          (0) 
        2. Patrick McMahon

          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.

          (0) 
  3. Manish Bansal

    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

    (0) 
    1. Shanthala Kudva Post author

      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.

      (0) 
  4. Pallavi A.N

    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

    (0) 
    1. Shanthala Kudva

      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.

      (0) 
  5. Manish Bansal

    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

    (0) 
    1. Shanthala Kudva

      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.

      (0) 
  6. Shilpi Agarwal

    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

    (0) 
  7. Atul Keshav

    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

    (0) 
    1. Shanthala Kudva

      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.

      (0) 
  8. Chandrasena Basavaraju

    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.

    (0) 
  9. Mechille Torres

    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?

    Unit for Time Period.jpg

    Please help us with your expertise on this.

    Thanks much! 🙂

    best regards,

    Mechille

    (0) 
    1. Shanthala Kudva

      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.

      (0) 
  10. Markus Birner

    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

    (0) 
  11. Gaurav Walia

    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

    (0) 
    1. Shanthala Kudva

      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.

      (0) 

Leave a Reply