如何使用ABAP程式碼建立SAP Product Category
阿新 • • 發佈:2020-08-24
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:
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":