Follow on Tickets multilevel categorization not getting copied from incident (ZMIN) to Knowledge Article
We have created ZMIN as incident transaction type and ZNAR as Knowledge Article transaction type copied for standard transaction type. The multilevel categorization is not getting copied from ZMIN to ZNAR. All the configurations are in place. Below are the details of the config. Categories are getting copied to other transaction type except for ZMIN to ZNAR.
Please provide your valuable suggestions to resolve this issue.
Andrey Sharapov replied
Firstly, read note 1567003, point 11. If it not helps use this instruction.
1. You must ensure that both transaction types have the same subject profile:
IMG-> CRM-> Transactions -> Basic Settings -> Define Transaction Types
Choose your transaction type SMIN… (here in my CRM example I chose ITIN) then ‘Assignment of Business Transaction categories’ on the left:
Select BUS2000116 Service Process and select ‘Customizing header’ on the left. Put in edit mode and add the ‘SERVICE’ subject profile (when the transaction is not in edit mode, you might not see the ‘Subject Profile’ field):
Make sure all your changes look fine in transaction CRMC_SERVICE_H:
2. Create the missing catalog category assignment for Knowledge Article (KNAR D):
SPRO: IMG->CRM->CRM Cross-Application Components->Multilevel Categorization->Assign Transaction Types to Catalog Categories.
3. Modify the categorization schema – create a new version.
Under ‘Application Areas’, add KNAR/D .In the scenario provided, I believe the schema ID was SAP_SOLUTION_MANAGER_TEMPLATE:
Release the schema. Wait for it to become active.
4. There exist two variants. Variant 1 – may be not working.
Enhance component CRM_KNOWART_H to modify this code (CL_CRM_KNOW_BSPWDCOMPONE0_IMPL->WD_USAGE_INITIALIZE). Catalog ‘D’ must be used now:
Transaction BSP_WD_CMPWB (component CRM_KNOWART_H):
Variant 2 – works! Enhance class CL_CRM_KNOW_BSPWDCOMPONE0_IMPL and redefine its method WD_USAGE_INITIALIZE. Copy all content from standard method to redefined method.
Then you have to add “me->core_object” to all method calls. For example:
lv_usage = me->CORE_OBJECT->comp_controller->get_component_usage( iv_usage->usage_name ).
lv_usage = me->comp_controller->get_component_usage( iv_usage->usage_name ).
It’s because we must call methods of object of original class which is kept in attribute CORE_OBJECT of object of enhanced class.
Steps for both variants.
Code (around line 74):
get_custom_controller( 'CRM_KNOWART_H/CUBTCategoriesCuCo' ).
* Pass the catalog category type - Subject
DATA: lv_struct_ref TYPE REF TO crmst_catalogtype_btil,
lv_value_node TYPE REF TO cl_bsp_wd_value_node,
lr_target_node TYPE REF TO cl_bsp_wd_context_node,
lv_bo_coll TYPE REF TO if_bol_bo_col.
CREATE DATA lv_struct_ref.
lv_struct_ref->*-catalog_type = 'E'. = put ‘D’ instead of ‘E’
CREATE OBJECT lv_value_node
iv_data_ref = lv_struct_ref.
CREATE OBJECT lv_bo_coll TYPE cl_crm_bol_bo_col.
5. Create a new example (new incident SMIN) to test the scenario again. Existing incidents will probably not work because of the subject profile.