CRM函数CRM_ORDER_MAINTAIN封装
Posted ^ω^SAp傻X^o^
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRM函数CRM_ORDER_MAINTAIN封装相关的知识,希望对你有一定的参考价值。
抬头结构:ZCRM_MAINTAIN_H
flag header:
项目表:ZCRM_MAINTAIN_I
合作伙伴:ZCRM_MAINTAIN_P
price:ZCRM_MAINTAIN_PR
FUNCTION zcrm_order_maintain_bk. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(HEAD) TYPE ZCRM_MAINTAIN_H OPTIONAL *" VALUE(HEADX) TYPE ZCRM_MAINTAIN_HX OPTIONAL *" EXPORTING *" REFERENCE(ERROR_TYPE) TYPE STRING *" REFERENCE(ERROR_LOG) TYPE STRING *" REFERENCE(OBJECT_O) TYPE CRMT_OBJECT_ID *" TABLES *" ITEM STRUCTURE ZCRM_MAINTAIN_I OPTIONAL *" ITEMX STRUCTURE ZCRM_MAINTAIN_IX OPTIONAL *" PARTNER STRUCTURE ZCRM_MAINTAIN_P OPTIONAL *" PARTNERX STRUCTURE ZCRM_MAINTAIN_PX OPTIONAL *" PRICE STRUCTURE ZCRM_MAINTAIN_PR OPTIONAL *" PRICEX STRUCTURE ZCRM_MAINTAIN_PRX OPTIONAL *"---------------------------------------------------------------------- DATA : lv_text(800) TYPE c. DATA: wk_orderadm_h TYPE crmt_orderadm_h_wrk, tk_orderadm_h TYPE crmt_orderadm_h_wrkt, wk_schedlin TYPE crmt_schedlin_wrk, tk_schedlin TYPE crmt_schedlin_wrkt, wk_status TYPE crmt_status_wrk, tk_status TYPE crmt_status_wrkt, ls_service_os TYPE crmt_srv_osset_com, lt_service_os TYPE crmt_srv_osset_comt, wk_osset TYPE crmt_srv_osset_wrk1, tk_osset TYPE crmt_srv_osset_wrkt1, ls_text TYPE crmt_text_com, lt_text TYPE crmt_text_comt, ls_sales TYPE crmt_sales_com, lt_sales TYPE crmt_sales_comt, ls_partner TYPE crmt_partner_com, lt_partner TYPE crmt_partner_comt, gt_partner TYPE crmt_partner_comt, ls_appointment TYPE crmt_appointment_com, lt_appointment TYPE crmt_appointment_comt, wk_refobject TYPE crmt_srv_refobj_wrk, tk_refobject TYPE crmt_srv_refobj_wrkt, wk_srv_subject TYPE crmt_srv_subject_wrk, tk_srv_subject TYPE crmt_srv_subject_wrkt, ls_osset TYPE crmt_srv_osset_com1, lt_osset TYPE crmt_srv_osset_comt1, ls_refobject TYPE crmt_srv_refobj_com, lt_refobject TYPE crmt_srv_refobj_comt, ls_service_h TYPE crmt_service_h_com, lt_service_h TYPE crmt_service_h_comt, ls_customer_h TYPE crmt_customer_h_com, lt_customer_h TYPE crmt_customer_h_comt, ls_service_i TYPE crmt_service_i_com, lt_service_i TYPE crmt_service_i_comt, ls_pricing TYPE crmt_pricing_com, lt_pricing TYPE crmt_pricing_comt, ls_schedlin_extdt TYPE crmt_schedlin_extd, lt_schedlin_extdt TYPE crmt_schedlin_extdt, ls_orderadm_i TYPE crmt_orderadm_i_com, lt_orderadm_i TYPE crmt_orderadm_i_comt, ls_product_i TYPE crmt_product_i_com, lt_product_i TYPE crmt_product_i_comt, ls_schedlin_i TYPE crmt_schedlin_i_com, lt_schedlin_i TYPE crmt_schedlin_i_comt, ls_pric_cond TYPE prct_cond_external_input, lt_pric_cond TYPE prct_cond_external_input_t, lt_pric_chag TYPE prct_cond_external_change_t, "add by ly 20180124 ls_pric_chag TYPE prct_cond_external_change, ls_pridoc TYPE crmt_pridoc_com, lt_pridoc TYPE crmt_pridoc_comt. DATA: wk_header TYPE crmt_object_guid_tab. DATA: ls_orderadm_h TYPE crmt_orderadm_h_com, lt_orderadm_h TYPE crmt_orderadm_h_comt, vs_orderadm_h TYPE crmt_orderadm_h_com, vt_orderadm_h TYPE crmt_orderadm_h_comt, ls_doc_flow TYPE crmt_doc_flow_com, lt_doc_flow TYPE crmt_doc_flow_comt, ls_orgman TYPE crmt_orgman_com, lt_orgman TYPE crmt_orgman_comt, ls_status TYPE crmt_status_com, lt_status TYPE crmt_status_comt, lt_error_log TYPE zerror_log_tab, ls_error_log TYPE zerror_log. DATA: w_orderadm_h TYPE crmd_orderadm_h. "定义全局时区,根据销售组织来判断 DATA:gv_zonlo TYPE syst_zonlo. DATA:gv_date TYPE datum, gv_time TYPE uzeit, gv_timez TYPE comt_created_at_usr. DATA: l_len TYPE i, l_start TYPE i, l_char_tmp(130) TYPE c, l_handle TYPE crmt_handle, ls_ztakg_num_upload TYPE ztakg_num_upload, l_ref_guid(16) TYPE c, l_mode TYPE crmt_mode, l_partner TYPE bu_partner. DATA: ls_input_field TYPE crmt_input_field. DATA: lt_input_field TYPE crmt_input_field_tab. DATA: gt_input_field TYPE crmt_input_field_tab. DATA: lt_field_names TYPE crmt_input_field_names_tab. DATA: ls_field_names TYPE crmt_input_field_names. DATA: lt_exception TYPE crmt_exception_t, it_objects_to_save TYPE crmt_object_guid_tab, is_objects_to_save TYPE LINE OF crmt_object_guid_tab, lt_saved_objects TYPE crmt_return_objects, ls_saved_objects TYPE crmt_return_objects_struc, lt_objects_not_saved TYPE crmt_object_guid_tab, ls_objects_not_saved TYPE crmt_object_guid. DATA: gt_ltxts TYPE STANDARD TABLE OF tline . DATA: lw_ltxt TYPE tline . CLEAR: ls_input_field, lt_input_field, ls_field_names, lt_field_names. DATA:gt_tj30t TYPE TABLE OF tj30t, gw_tj30t LIKE LINE OF gt_tj30t, gw_profile TYPE crmc_proc_type, gw_index TYPE zhsb_order_index, gw_sale TYPE zhsb_sales_index. DATA: lv_productguid TYPE comt_product_guid. DATA: ls_hierarchy TYPE comm_hierarchy. DATA: ls_prprdcatr TYPE comm_prprdcatr. DATA: lt_pr_frg_rel TYPE TABLE OF comm_pr_frg_rel. DATA: ls_addsettype TYPE zaddsettype. DATA: lt_addsettype TYPE TABLE OF zaddsettype. DATA:gw_zbp_sales TYPE zbp_sales, gw_item TYPE zcrm_maintain_i, gv_item TYPE zcrm_maintain_i, gw_itemx TYPE zcrm_maintain_ix, gw_partner TYPE zcrm_maintain_p, gw_partnerx TYPE zcrm_maintain_px, gw_price TYPE zcrm_maintain_pr, gw_pricex TYPE zcrm_maintain_prx, gt_dd03l TYPE TABLE OF dd03l, gw_dd03l LIKE LINE OF gt_dd03l. DATA:lt_guid_init TYPE crmt_object_guid_tab, ls_guid_init LIKE LINE OF lt_guid_init. DATA: lv_sum_crmt_schedlin_quan TYPE crmt_schedlin_quan, lv_sum_prct_cond_rate TYPE prct_cond_rate, lv_zsrv_mileage_fee TYPE flag, lt_zsrvt_mil_rule02 TYPE TABLE OF zsrvt_mil_rule02, ls_zsrvt_mil_rule02 TYPE zsrvt_mil_rule02, ls_zsrvt_mil_rule01 TYPE zsrvt_mil_rule01. "取order数据定义 DATA:ot_header TYPE crmt_object_guid_tab, ow_header TYPE crmt_object_guid, ot_order_h TYPE crmt_orderadm_h_wrkt, ot_schedlin TYPE crmt_schedlin_wrkt, ow_schedlin TYPE crmt_schedlin_wrk, ot_cond TYPE crmt_pric_cond_t, ow_cond TYPE crmt_pric_cond, ot_price TYPE prct_cond_du_tab, ow_price TYPE prct_cond_du, ot_partner TYPE crmt_partner_external_wrkt, ow_partner TYPE crmt_partner_external_wrk, ow_text TYPE crmt_text_wrk, ot_text TYPE crmt_text_wrkt. FIELD-SYMBOLS:<fs> TYPE any, <fsx> TYPE any, <partner> TYPE any. CHECK head-guid IS NOT INITIAL. REFRESH:lt_guid_init. ls_guid_init = head-guid. APPEND ls_guid_init TO lt_guid_init. SELECT SINGLE * INTO gw_index FROM zhsb_order_index WHERE guid = head-guid. IF sy-subrc = 0. SELECT SINGLE * INTO gw_profile FROM crmc_proc_type WHERE process_type = gw_index-process_type. ELSE. SELECT SINGLE * INTO gw_sale FROM zhsb_sales_index WHERE guid = head-guid. IF sy-subrc = 0. SELECT SINGLE * INTO gw_profile FROM crmc_proc_type WHERE process_type = gw_sale-process_type. ELSE. SELECT SINGLE * INTO gw_profile FROM crmc_proc_type WHERE process_type = head-order_type. ENDIF. ENDIF. SELECT * INTO TABLE gt_tj30t FROM tj30t WHERE stsma = gw_profile-user_stat_proc AND spras = \'E\'. ls_orderadm_h-guid = head-guid. "******************************HEAD*************************BEGIN "CUSTOMER_MODEL IF headx-customer_model = \'X\'. * CONCATENATE head-factory_model head-customer_model INTO ls_orderadm_h-zzzmodeno SEPARATED BY \'.\'. ls_orderadm_h-zzzmodeno = head-customer_model. ls_field_names-fieldname = \'ZZZMODENO\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "FACTORY_MODEL IF headx-factory_model = \'X\'. ls_orderadm_h-zzfld00000h = head-factory_model. ls_field_names-fieldname = \'ZZFLD00000H\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "DELAYREASONCODE IF headx-delayreasoncode = \'X\'. ls_orderadm_h-zzafld000002 = head-delayreasoncode. ls_field_names-fieldname = \'ZZAFLD000002\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "UNSOLVEDCODE IF headx-unsolvedcode = \'X\'. ls_orderadm_h-zzafld000003 = head-unsolvedcode. ls_field_names-fieldname = \'ZZAFLD000003\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "WARRANTY IF headx-warrantype = \'X\'. ls_orderadm_h-zzwarranty = head-warrantype. ls_field_names-fieldname = \'ZZWARRANTY\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "SERIALNO IF headx-serialno = \'X\'. ls_orderadm_h-zzzserialno = head-serialno. ls_field_names-fieldname = \'ZZZSERIALNO\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "SERIALNO1 IF headx-zzzserialno1 = \'X\'. ls_orderadm_h-zzzserialno1 = head-zzzserialno1. ls_field_names-fieldname = \'ZZZSERIALNO1\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "SERIALNO2 IF headx-zzzserialno2 = \'X\'. ls_orderadm_h-zzzserialno2 = head-zzzserialno2. ls_field_names-fieldname = \'ZZZSERIALNO2\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "SYMPTOMS_CODE IF headx-symptoms_code = \'X\'. ls_orderadm_h-zzzsymptomscode = head-symptoms_code. ls_field_names-fieldname = \'ZZZSYMPTOMSCODE\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "SYMPTOMS_CODE_G IF headx-symptoms_code_g = \'X\'. ls_orderadm_h-zzzsymptomsgroup = head-symptoms_code_g. ls_field_names-fieldname = \'ZZZSYMPTOMSGROUP\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "DEFECT_CODE IF headx-defect_code = \'X\'. ls_orderadm_h-zzzdefectcode = head-defect_code. ls_field_names-fieldname = \'ZZZDEFECTCODE\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "DEFECT_CODE_G IF headx-defect_code_g = \'X\'. ls_orderadm_h-zzzdefectgroup = head-defect_code_g. ls_field_names-fieldname = \'ZZZDEFECTGROUP\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "REPAIR_CODE IF headx-repair_code = \'X\'. ls_orderadm_h-zzzrepaircode = head-repair_code. ls_field_names-fieldname = \'ZZZREPAIRCODE\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "REPAIR_CODE_G IF headx-repair_code_g = \'X\'. ls_orderadm_h-zzzrepairgroup = head-repair_code_g. ls_field_names-fieldname = \'ZZZREPAIRGROUP\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "HEAD DESCRIPTION IF headx-problem_des = \'X\'. ls_orderadm_h-description = head-problem_des. ls_field_names-fieldname = \'DESCRIPTION\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ORDER TYPE IF headx-order_type = \'X\'. ls_orderadm_h-process_type = head-order_type. ls_field_names-fieldname = \'PROCESS_TYPE\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "CREATE USER IF headx-create_user = \'X\'. ls_orderadm_h-created_by = head-create_user. ls_field_names-fieldname = \'CREATED_BY\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "POSTING DATE IF headx-create_date = \'X\'. ls_orderadm_h-posting_date = sy-datum. ls_field_names-fieldname = \'POSTING_DATE\'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. IF headx-posting_date = \'X\'. ls_orderadm_h-posting_date = head-posting_date. ls_field_names-fieldname = \'POSTING_DATE\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. ENDIF. "PRODUCT ID->group brand IF headx-product_id = \'X\'. SELECT SINGLE product_guid INTO lv_productguid FROM comm_product WHERE product_id = head-product_id. SELECT SINGLE * FROM comm_hierarchy INTO ls_hierarchy WHERE hierarchy_id = \'R3PRODHIER\'. IF sy-subrc = 0. CLEAR ls_prprdcatr. SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_prprdcatr FROM comm_prprdcatr WHERE product_guid = lv_productguid AND hierarchy_guid = ls_hierarchy-hierarchy_guid. ls_orderadm_h-zzzgroup = ls_prprdcatr-category_id+0(1). ls_orderadm_h-zzzbrand = ls_prprdcatr-category_id+1(2). ENDIF. ls_field_names-fieldname = \'ZZZGROUP\'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = \'ZZZBRAND\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzgroup = \'X\'. DELETE lt_field_names WHERE fieldname = \'ZZZGROUP\'. ls_orderadm_h-zzzgroup = head-zzzgroup. ls_field_names-fieldname = \'ZZZGROUP\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzbrand = \'X\'. DELETE lt_field_names WHERE fieldname = \'ZZZBRAND\'. ls_orderadm_h-zzzbrand = head-zzzbrand. ls_field_names-fieldname = \'ZZZBRAND\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "SERVICE_TYPE IF headx-service_type = \'X\'. ls_orderadm_h-zzfld00000n = head-service_type. ls_field_names-fieldname = \'ZZFLD00000N\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "IN_PROGRESS IF headx-in_progress = \'X\'. ls_orderadm_h-zzdlyrsn = head-in_progress. ls_field_names-fieldname = \'ZZDLYRSN\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ZZIMEI IF headx-zzimei = \'X\'. ls_orderadm_h-zzimei = head-zzimei. ls_field_names-fieldname = \'ZZIMEI\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ZZIMEI1 IF headx-zzimei1 = \'X\'. ls_orderadm_h-zzimei1 = head-zzimei1. ls_field_names-fieldname = \'ZZIMEI1\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "COLLECT_POINT IF headx-collect_point = \'X\'. ls_orderadm_h-zzafld000008 = head-collect_point. ls_field_names-fieldname = \'ZZAFLD000008\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "TRACKING_NO_FR_COM IF headx-tracking_no_fr_com = \'X\'. ls_orderadm_h-zzafld000000 = head-tracking_no_fr_com. ls_field_names-fieldname = \'ZZAFLD000000\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "TRACKING_NO_FR IF headx-tracking_no_fr = \'X\'. ls_orderadm_h-zzztracksent = head-tracking_no_fr. ls_field_names-fieldname = \'ZZZTRACKSENT\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "TRACKING_NO_TO_COM IF headx-tracking_no_to_com = \'X\'. ls_orderadm_h-zzafld000001 = head-tracking_no_to_com. ls_field_names-fieldname = \'ZZAFLD000001\'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "TRACKING_NO_TO IF headx-tracking_no_to = \'X以上是关于CRM函数CRM_ORDER_MAINTAIN封装的主要内容,如果未能解决你的问题,请参考以下文章SAP Commerce(原Hybris)的订单处理框架和SAP CRM One Order框架
Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function
Dynamics CRM 2015/2016 Web API:Unbound Function 和 Bound Function