Hi Team,
My requirement is , i want to develop one report which is pull the data categorization 1 to categorization 4 based on service request transaction type.
input screen user select service request transaction type ,and range of posting date if we click execute then service request id and category 1 to category 4 all code groups they want to display.
but how to pick the values from categorization values on report.
1->here subject profile and code group level data maintained but in tables if copy service request id and executed on CRM_ORDER_READ -on ET_ACTIVITY_H-GUID i have copied this service request guid and checked on table -CRMV_REPORT_SUBJ but here KATALOGART and code group and code it is not maintained..but here how to pull all the data based on service request transaction type.This values they are maintained on subject profile code categorization in webui.
2->by using this class CL_CRM_CATEGORY_RUN_BTIL , i have copied to z class and i have implemented the logic as below ,but still i couldnt able to read all the categories. in complaint transaction types this logic is working fine but service request categorization it is not working.
method GET_ORDER_H_CAT.
DATA: lr_crm_category TYPE REF TO /rcrm/jio_crm_categ_run_btil.
DATA: lt_subject_wrk TYPE crmt_subject_wrkt,
ls_subject_wrk TYPE crmt_subject_wrk,
ls_srv_subject_wrk TYPE crmt_srv_subject_wrk,
ls_category_key TYPE crmst_category_key_btil,
lt_categ_cat TYPE TABLE OF /rcrm/jio_categories,
ls_categ_cat TYPE /rcrm/jio_categories,
lt_cat_ca TYPE crmt_erms_cat_ca_buf_tab,
ls_cat_ca LIKE LINE OF lt_cat_ca,
lt_cat_ca_lang TYPE crmt_erms_cat_ca_lang_tab,
ls_hier_query TYPE crmt_erms_cat_hi,
lt_cat_hi TYPE crmt_erms_cat_hi_tab,
ls_cat_hi TYPE crmt_erms_cat_hi.
DATA: lv_cat_guid TYPE crm_erms_cat_guid, "Category GUID
lv_asp_guid TYPE crm_erms_cat_guid. "Aspect (tree) GUID
CLEAR es_categories.
* Create category object
CREATE OBJECT lr_crm_category
EXPORTING
iv_objname = 'ACIActionContextAdmin'.
* iv_build_fieldname_tab = abap_true
CHECK lr_crm_category IS BOUND.
* Read order header subject
CALL FUNCTION 'CRM_SUBJECT_READ_OW'
EXPORTING
iv_ref_guid = iv_guid
iv_ref_kind = 'A'
* IV_GUID_SET = IV_GUID_SET
* IV_PROFILE_TYPE = 'A'
IMPORTING
et_subject_wrk = lt_subject_wrk
* ET_SUBJECT_WRK_OLD = ET_SUBJECT_WRK_OLD
* EV_SUBJECT_PROFILE = EV_SUBJECT_PROFILE
EXCEPTIONS
error_occurred = 1
OTHERS = 2.
CHECK sy-subrc = 0 AND NOT lt_subject_wrk[] IS INITIAL.
READ TABLE lt_subject_wrk INTO ls_subject_wrk WITH KEY ref_guid = iv_guid
ref_kind = 'A'.
CHECK sy-subrc = 0.
* Get lowest level category guid
CLEAR: ls_srv_subject_wrk, ls_category_key.
MOVE-CORRESPONDING ls_subject_wrk TO ls_srv_subject_wrk.
ls_category_key-cat_guid = lr_crm_category->map_subject_to_category( is_subject = ls_srv_subject_wrk
iv_ref_guid = ls_subject_wrk-ref_guid
iv_ref_kind = ls_subject_wrk-ref_kind
iv_profile_type = ls_subject_wrk-profile_type ).
CHECK NOT ls_category_key-cat_guid IS INITIAL.
* -- Read categories recursively
lv_cat_guid = ls_category_key-cat_guid.
REFRESH lt_categ_cat.
DO 4 TIMES. "Maximum category deep level
CLEAR ls_categ_cat.
ls_categ_cat-cat_guid = lv_cat_guid.
* Read category header
REFRESH: lt_cat_ca, lt_cat_ca_lang.
CALL FUNCTION 'CRM_ERMS_CAT_CA_READ'
EXPORTING
iv_cat_guid = lv_cat_guid
IMPORTING
et_cat = lt_cat_ca
et_cat_lang = lt_cat_ca_lang
EXCEPTIONS
non_existent = 1
non_existent_aspect = 2
data_error = 3
OTHERS = 4.
IF sy-subrc NE 0 OR lt_cat_ca[] IS INITIAL.
EXIT.
ENDIF.
* Get aspect (tree) GUID
READ TABLE lt_cat_ca INTO ls_cat_ca INDEX 1.
lv_asp_guid = ls_cat_ca-cat-asp_guid.
ls_categ_cat-it_cat_ca[] = lt_cat_ca[].
ls_categ_cat-it_cat_ca_lang[] = lt_cat_ca_lang[].
* Get parent category from hierarchy
CLEAR ls_hier_query.
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.
REFRESH lt_cat_hi.
CALL FUNCTION 'CRM_ERMS_CAT_HI_READ'
EXPORTING
iv_hier_query = ls_hier_query
* IV_HIER_TEMP = ' '
* IV_FILL_PAR_BUFFER = IV_FILL_PAR_BUFFER
* IR_CAT_CHECKER = IR_CAT_CHECKER
IMPORTING
et_hier = lt_cat_hi.
IF lt_cat_hi[] IS INITIAL.
EXIT.
ENDIF.
READ TABLE lt_cat_hi INTO ls_cat_hi INDEX 1.
ls_categ_cat-cat_hi = ls_cat_hi.
lv_cat_guid = ls_cat_hi-pare_guid. "For upper level cat. access
" Add upper cat. before lower cat.
INSERT ls_categ_cat INTO lt_categ_cat INDEX 1.
* Exit loop if root cat. level already accesed
IF ls_cat_hi-pare_guid = ls_cat_hi-tree_guid.
EXIT.
ENDIF.
ENDDO.
* Fill categories at every categorization level
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.
ENDCASE.
ENDLOOP.
endmethod.
Could you please help here.
Thanks for advance.
Thanks & regards
kalpana