CRM and CX Blogs by SAP
Stay up-to-date on the latest developments and product news about intelligent customer experience and CRM technologies through blog posts from SAP experts.
cancel
Showing results for 
Search instead for 
Did you mean: 
JerryWang
Advisor
Advisor
In ERP we can create new material type by copying from existing one using tcode OMS2:


This new type could be downloaded into CRM system via customizing download. A product category with prefix MAT_ will be automatically created.



And here below is source code to create new product category using MAT_ as parent category by ABAP code.
METHOD replicate_category.

CONSTANTS:
BEGIN OF gc_application,
sales TYPE comt_application VALUE '01', "r3-produkthier
purchasing TYPE comt_application VALUE '02', "r3 mat class
product TYPE comt_application VALUE '03', "r3 mat types
config TYPE comt_application VALUE '04',
internet TYPE comt_application VALUE '05',
END OF gc_application.

CONSTANTS:

BEGIN OF gc_product_type,
material TYPE comt_product_type VALUE '01',
service TYPE comt_product_type VALUE '02',
finance TYPE comt_product_type VALUE '03',
ip_prod TYPE comt_product_type VALUE '04',
warranty TYPE comt_product_type VALUE '05',
tradeitem TYPE comt_product_type VALUE '06',
fs_prod TYPE comt_product_type VALUE '07',
END OF gc_product_type.

rv_success = abap_false.
DATA: lv_hierarchy_guid TYPE comt_hierarchy_guid,
lv_parent_guid TYPE comt_category_guid,
lt_categoryt TYPE comt_categoryt_tab.


* Prerequisite: the corresponding hierarchy is already downloaded from ERP
* Read the hierarchy which is assigned to application 03
* (product type material) in transaction COMM_PRAPPLCAT
CALL FUNCTION 'COM_HIERARCHY_READ_WITH_APPL'
EXPORTING
iv_application = gc_application-product
iv_product_type = gc_product_type-material
IMPORTING
ev_hierarchy_guid = lv_hierarchy_guid
EXCEPTIONS
not_found = 1
OTHERS = 2.

CHECK sy-subrc = 0.

DATA(ls_cat_text) = VALUE comt_categoryt( langu = sy-langu category_text = iv_text
text_upper_case = iv_text ).
TRANSLATE ls_cat_text-text_upper_case TO UPPER CASE.
APPEND ls_cat_text TO lt_categoryt.

select single category_guid into lv_parent_guid FROM comm_category
where category_id = 'MAT_'.

CALL FUNCTION 'COM_PRODCAT_API_CREATE_CAT'
EXPORTING
iv_category_id = iv_cat_id
iv_hierarchy_guid = lv_hierarchy_guid
iv_parent_guid = lv_parent_guid
iv_product_type = gc_product_type-material
it_categoryt = lt_categoryt
iv_logsys = iv_log_sys " 'QI3CLNT502'
iv_non_assignable = abap_false
EXCEPTIONS
hierarchy_not_maintained = 1
wrong_call = 2
category_id_exists = 3
id_scheme_error = 4
error = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'X' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
RETURN.
ENDIF.

CALL FUNCTION 'COM_PRODUCT_CATEGORY_SAVE_ALL'
EXPORTING
iv_update_task = ' '
iv_update_pme = ' '
iv_hierarchy_guid = lv_hierarchy_guid
EXCEPTIONS
internal_error = 1
OTHERS = 2.
ASSERT sy-subrc = 0.

COMMIT WORK AND WAIT.

rv_success = abap_true.

ENDMETHOD.

Method signature:

How to use this code

Run method in SE24, specify new product category id via parameter iv_cat_id:

Execute method, ensure ev_success equals to abap_true.

Once created, the category could be searched via tcode COMM_HIERARCHY:

And the category could be used to create new product in WebUI:








1 Comment