Wednesday, February 16, 2011

Enhanced IC Webclient Alerts

In some of the previous blogs, I explained how you can implement IDI to add for instance automatic navigation, context-based alerts etcetera to the IC Webclient, to improve the effectiveness of the system for the user.

Standard SAP CRM is shipped with some fairly general alerts. For instance, you can have an alert that tells you the customer number, or you can have an alert that tells you the customer has open items.

Beside the standard alerts, in the IC Manager role, you can create new alerts. In these alerts, you can maintain your own text, and use the parameters that have been supplied by the system.

If these standard shipped parameters do not satisfy your needs, you can also add new parameters. For instance, if your users need to have an alert containing all of the customer’s telephone numbers, and not just the first one. Or if you want to notify the user there is an open serviceticket.

Adding a new parameter be done in several steps.
IMG: SAP Customizing Implementation Guide --> Customer Relationship Management --> Interaction Center WebClient --> Additional Functions --> Intent-Driven Interactions

1. Add the technical name of the new parameter ( Define Repository)
2. Add a ‘Fact Gathering’ service (Define Services)
3. Add the fact gathering service to the service manager profile (Define Service Manager Profiles)
4. Apply the service manager profile to the Intent-Driven Interaction Profile (Define Intent-Driven Interacton Profiles)
5. Add coding to the class of the fact gathering service (SE80)

In the following example, I will illustrate with the attribute 'Number of Servicetickets'. This is comparable to the existing FICA_NO_OF_CALLS.

1. Add the technical name of the new parameter ( Define Repository)
  • In the Define Repository in the IMG, select the ICRULE, and click on attributes. Here, add a new attribute, for instance ZNO_OF_SERV.
  • In the Desription, add a description.
  • Tick the Show Attribute checkbox if you want this attribute to be available as a condition in the Rule Policy maintenance.
  • Enter the name of the Fact Gathering Service we will be creating in step 2 (i.e. ZFG_SVT)
  • In Attrib Ext Class, choose the right class from the search help. This determines which operands will be available in the rule policy builder.
2. Add a ‘Fact Gathering’ service (Define Services)
In the Define Services, add the service. In our case, ZFG_SVT. Choose Fact Gathering as the service type. Enter a Service Class. (i.e. ZL_CRM_FACTS_SVT).

3. Add the fact gathering service to the service manager profile (Define Service Manager Profiles)
Add the new Service to the Directly Called Services of your Service Manager Profile. If you have not yet created a Service Manager Profile, create a copy of the IDI_DEFAULT, and add your new service. Make sure all fact gathering services are before the SVC_RULE_EXEC, because you want the fact gathering to take place before rule execution.

4. Apply the service manager profile to the Intent-Driven Interaction Profile (Define Intent-Driven Interacton Profiles)
Make sure the Service Manager Profile is mapped to the Intent-Driven Interaction Profile. If you do not yet have an own Intent-Driven Interaction Profile, create one.

Also, don't forget to apply the IDI profile in the Business Role (Function Profile 'INTENT_DRIVEN_INTERACIONS')

5. Add coding to the class of the fact gathering service (SE80)
In SE80, go to class/interface and create a subclass for CL_CRM_FICA_FACTS_FOR_RULES*.

Redefine the method IF_CRM_SMF_SERVICE~EXECUTE and add the following coding:

METHOD if_crm_smf_service~execute.

DATA: lv_gpart TYPE string,
         lv_cor_available TYPE string,
         lv_dun_available TYPE string,
         lv_no_of_calls TYPE string,
         lv_no_of_svt TYPE string,
         lr_query TYPE REF TO cl_crm_bol_dquery_service,
         lr_col   TYPE REF TO if_bol_bo_col.

  CALL METHOD me->get_bp_confirmed
    RECEIVING
      rv_gpart = lv_gpart.

  CHECK NOT lv_gpart IS INITIAL.

* -- number of calls

  lr_query = cl_crm_bol_dquery_service=>get_instance( 'BTQSrvReq' ).
  CHECK lr_query IS BOUND.

  CALL METHOD lr_query->add_selection_param
  EXPORTING
    IV_ATTR_NAME = 'BU_PARTNER'
    IV_SIGN = 'I'
    IV_OPTION = 'EQ'
    IV_LOW = lv_gpart
  .

  lr_col = lr_query->get_query_result( ).
  CHECK lr_col IS BOUND.

  rv_no_of_calls = lr_col->size( ).

  CALL METHOD me->set_fb_attr_by_id
    EXPORTING
      id    = 'ZNO_OF_SERV'
      value = lv_no_of_svt.

ENDMETHOD.


* Depending on your requirements, you might require a subclass for CL_CRM_SMF_ABSTRACT_SERVICE

2 comments:

  1. Hi Pieter

    I assigned the alert via rule policy for a sales role.By standard is it possibe to trigger alert in sales roles??or is it just specific for agent role..pls clarify

    Thanks
    Raj

    ReplyDelete
  2. Raj,

    Alerts are part of the interaction center, so alerts will only work for IC business roles, and nt for webclient business roles.

    Regards,
    Pieter

    ReplyDelete