How to search for inbox items which are not assigned to any employee in S/4HANA for CM
This small blog explains how to search for Interaction Center’s inbox items which are not assigned to any employee in S/4HANA for CM.
In CRM 7.0, this search can be performed using the search operator ‘Is empty’ (See also following OSS note: 2986918 – How to search for inbox items which are not assigned to any employee).
In S/4HANA for CM the Inbox search operator ‘Is empty’ is not available (anymore) and the above OSS note is not valid. The search on empty Employee Responsible is (currently) not part of the design in S/4.
So here is a small trick to implement this search.
Remark: Of course, another option could be to filter the result list on empty ‘Employee Responsible’ after the search has been performed.
Define a new Quick Search (Tx SM30 – View: CRMV_AUI_QUICKS)
Use a “dummy” Description value (in this case ‘ZNOEMPLOYEE’) to uniquely identify the quick search
Create a custom implementation of the Inbox Badi (Tx SE18 – Badi name: CRM_IC_INBOX_BADI)
Adjust method IF_EX_CRM_IC_INBOX_BADI~BEFORE_SEARCH to remove the “dummy” Description and add a “dummy” Employee Assigned value:
METHOD if_ex_crm_ic_inbox_badi~before_search. DATA: ls_selection_parameters TYPE genilt_selection_parameter. … CASE i_inbox_map_item_type. WHEN 'ONEORDER'. READ TABLE c_select_options WITH KEY attr_name = 'DESCRIPTION' low = 'ZNOEMPLOYEE' ASSIGNING <ls_selection_parameters>. IF sy-subrc = 0 AND <ls_selection_parameters> IS ASSIGNED. DELETE c_select_options WHERE attr_name = 'DESCRIPTION'. ls_selection_parameters-attr_name = 'EMPLOYEEASSIGNED'. ls_selection_parameters-sign = 'I'. ls_selection_parameters-option = 'EQ'. ls_selection_parameters-low = 'ZNOEMPLOYEE'. APPEND ls_selection_parameters TO c_select_options. ENDIF. … ENDMETHOD.
Define Custom Handler Class for Inbox Query
Create new Custom Class ZCL_CRM_QUERYLEANAUI_RUN_BTIL child of standard class CL_CRM_QUERYLEANAUI_RUN_BTIL.
Redefine method READ_BUSINESS_TRANSACTIONS_S4 and add the code between comments in the ‘WHEN ‘EMPLOYEEASSIGNED’ statement. This clears the “dummy” Employee Assigned value and allows the search on inbox items not assigned to any employee.
… WHEN 'EMPLOYEEASSIGNED'. DATA: lt_assignedto_build_range TYPE RANGE OF crmt_partner_no, lt_assignedto_range TYPE RANGE OF crmt_partner_no. IF <fs_parameter> IS NOT INITIAL. CALL METHOD get_range_adv EXPORTING is_param = <fs_parameter> iv_advanced_search = iv_advanced_search IMPORTING et_range = lt_assignedto_build_range. * My teams unassigned tickets (searh on employee responsible empty) - start LOOP AT lt_assignedto_build_range ASSIGNING FIELD-SYMBOL(<ls_assignedto>). IF <ls_assignedto>-low = 'ZNOEMPLOYEE'. <ls_assignedto>-low = ''. ENDIF. ENDLOOP. * My teams unassigned tickets (searh on employee responsible empty) - end APPEND LINES OF lt_assignedto_build_range TO lt_assignedto_range. ENDIF.
Conclusion: As long as this search is not available in standard, this is a small trick to perform it
Please share feedback in a comment