[英]How to get the multi-level categorization for a specific service ticket?
你可以得到这样的类别:
阅读服务票主题
CALL FUNCTION 'CRM_SUBJECT_READ_OW' EXPORTING iv_ref_guid = iv_guid iv_ref_kind = 'A' IMPORTING et_subject_wrk = lt_subject_wrk EXCEPTIONS error_occurred = 1 OTHERS = 2.
获取分类架构 GUID
GET TIME STAMP FIELD DATA(lv_timestamp). SELECT SINGLE asp_guid FROM crmc_erms_cat_as INTO lv_asp_guid WHERE asp_id = lt_subject_wrk[ ref_guid = iv_guid ref_kind = 'A' ]-asp_id AND val_to >= lv_timestamp AND asp_state = 'R'.
递归读取类别
lv_cat_guid_new = lt_subject_wrk[ ref_guid = iv_guid ref_kind = 'A' ]-cat_id. DO 5 TIMES. " depending of how many category levels you have SELECT SINGLE node_guid FROM crmc_erms_cat_hi JOIN crmc_erms_cat_ca ON crmc_erms_cat_hi~node_guid = crmc_erms_cat_ca~cat_guid INTO lv_cat_guid_new WHERE crmc_erms_cat_ca~cat_id = lv_cat_guid_new AND crmc_erms_cat_ca~asp_guid = lv_asp_guid. IF sy-subrc <> 0. EXIT. ENDIF. ls_hier_query-tree_guid = lv_asp_guid. ls_hier_query-tree_type = c_tree_type_cat. ls_hier_query-node_guid = lv_cat_guid_new. CALL FUNCTION 'CRM_ERMS_CAT_HI_READ' EXPORTING iv_hier_query = ls_hier_query IMPORTING et_hier = lt_cat_hi. ls_categ_cat-cat_hi = lt_cat_hi[ 1 ]. lv_cat_guid = lt_cat_hi[ 1 ]-pare_guid. "For upper level cat. access INSERT ls_categ_cat INTO lt_categ_cat INDEX 1. * exit if root category level reached IF ls_cat_hi-pare_guid = ls_cat_hi-tree_guid. EXIT. ENDIF. ENDDO.
输出
LOOP AT lt_categ_cat INTO ls_categ_cat. CASE sy-tabix. WHEN 1. es_categories-category1 = ls_categ_cat. WHEN 2. es_categories-category2 = ls_categ_cat. WHEN 3. es_categories-category3 = ls_categ_cat. WHEN 4. es_categories-category4 = ls_categ_cat. WHEN 5. es_categories-category4 = ls_categ_cat. ENDCASE. ENDLOOP.
注意步骤3也可以通过cl_crm_ml_category_util类的方法实现
cl_crm_ml_category_util=>get_cat_kids_all
( 片段)cl_crm_ml_category_util=>get_selected_category_tree
(片段)PS对不起,回答晚了:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.