一个不使用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.