一个不使用CRM中间件成功地将ERP Material下载到CRM的原型开发
- 2020 年 2 月 17 日
- 筆記
Requirement
Replicate a material type for example MAT_YYYY into CRM system without using middleware. After replication, the generated category could be used in normal product scenario ( for example, create new product based on this category, read / query operation on this category etc )

I have successfully written a API which could replicate data ( to simulate T134 ) into CRM category table. Once this API is executed, a new category will be created in CRM system, without middleware.


This category could be found in tcode COMM_HIERARCHY:

Unfortunately, it is not visible in product creation page ?

bug fixed now. POC is done. 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:


source 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.