抬头结构: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'. ls_orderadm_h-zzztrackreturn = head-tracking_no_to. ls_field_names-fieldname = 'ZZZTRACKRETURN'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ZZCON_TYPE IF headx-ztype = 'X'. ls_orderadm_h-zzcon_type = head-ztype. ls_field_names-fieldname = 'ZZCON_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Old object id IF headx-zzafld000004 = 'X'. ls_orderadm_h-zzafld000004 = head-zzafld000004. ls_field_names-fieldname = 'ZZAFLD000004'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Agent Invoice IF headx-zzagentinovice = 'X'. ls_orderadm_h-zzagentinovice = head-zzagentinovice. ls_field_names-fieldname = 'ZZAGENTINOVICE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Mobile Client Type IF headx-mbl_clt_type = 'X'. ls_orderadm_h-zzclient_type = head-mbl_clt_type. ls_field_names-fieldname = 'ZZCLIENT_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Packaging IF headx-pacakging = 'X'. ls_orderadm_h-zzontime = head-pacakging. ls_field_names-fieldname = 'ZZONTIME'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Customer Order Number IF headx-zzzcusordno = 'X'. ls_orderadm_h-zzzcusordno = head-zzzcusordno. ls_field_names-fieldname = 'ZZZCUSORDNO'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Transaction ID IF headx-zzztransaid = 'X'. ls_orderadm_h-zzztransaid = head-zzztransaid. ls_field_names-fieldname = 'ZZZTRANSAID'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Second level name code IF headx-zzlevelcode = 'X'. ls_orderadm_h-zzlevelcode = head-zzlevelcode. ls_field_names-fieldname = 'ZZLEVELCODE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Second level name code IF headx-store_name1 = 'X'. ls_orderadm_h-zzretailer_name = head-store_name1. ls_field_names-fieldname = 'ZZRETAILER_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Questionnaires IF headx-zzzquestnairid = 'X'. ls_orderadm_h-zzzquestnairid = head-zzzquestnairid. ls_field_names-fieldname = 'ZZZQUESTNAIRID'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Sales Order Header Product ID IF headx-zzfld000003 = 'X'. ls_orderadm_h-zzfld000003 = head-zzfld000003. ls_field_names-fieldname = 'ZZFLD000003'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "complain type IF headx-zzafld000015 = 'X'. ls_orderadm_h-zzafld000015 = head-zzafld000015. ls_field_names-fieldname = 'ZZAFLD000015'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzfld00000o = 'X'. ls_orderadm_h-zzfld00000o = head-zzfld00000o. ls_field_names-fieldname = 'ZZFLD00000O'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ZZSOURCE IF headx-zzsource = 'X'. ls_orderadm_h-zzsource = head-zzsource. ls_field_names-fieldname = 'ZZSOURCE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ZZLOGI_STATUS IF headx-zzlogi_status = 'X'. ls_orderadm_h-zzlogi_status = head-zzlogi_status. ls_field_names-fieldname = 'ZZLOGI_STATUS'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzrepchg_type = 'X'. ls_orderadm_h-zzrepchg_type = head-zzrepchg_type. ls_field_names-fieldname = 'ZZREPCHG_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzrprepair = 'X'. ls_orderadm_h-zzzrprepair = head-zzzrprepair. ls_field_names-fieldname = 'ZZZRPREPAIR'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "DISTANCE IF headx-distance = 'X'. ls_orderadm_h-zzdistance = head-distance. ls_field_names-fieldname = 'ZZDISTANCE'. INSERT ls_field_names INTO TABLE lt_field_names. **********************************************************************20161101-Begin *开发顾问:陈国光 *业务顾问:龚慧文 *里程费规则时 清除里程费 REFRESH:lt_zsrvt_mil_rule02. SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_zsrvt_mil_rule02 FROM zsrvt_mil_rule02 WHERE sales_org = head-sales_org AND process_type = head-order_type. IF lt_zsrvt_mil_rule02[] IS NOT INITIAL. CLEAR:ls_orderadm_h-zzzoutother. lv_zsrv_mileage_fee = abap_true. *里程费中[里程]字段数字有效性校验 20161202-Begin TRY . lv_sum_crmt_schedlin_quan = head-distance. CATCH cx_sy_conversion_no_number. error_type = 'E'. CONCATENATE 'Distance[' head-distance '] is not Number!' INTO error_log. ENDTRY. ***计算里程费 *判断是是否需要行项目-Begin CLEAR:ls_zsrvt_mil_rule02. READ TABLE lt_zsrvt_mil_rule02 INTO ls_zsrvt_mil_rule02 INDEX 1. IF ls_zsrvt_mil_rule02-zrule02 = 'A1'. CLEAR:ls_zsrvt_mil_rule01. SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_zsrvt_mil_rule01 FROM zsrvt_mil_rule01 WHERE sales_org = head-sales_org AND process_type = head-order_type. CALL FUNCTION 'ZCRM_COUNT_ZSRVT_MIL_RULE02' EXPORTING is_zsrvt_mil_rule01 = ls_zsrvt_mil_rule01 is_zsrvt_mil_rule02 = ls_zsrvt_mil_rule02 TABLES it_zsrvt_mil_rule02 = lt_zsrvt_mil_rule02 CHANGING cv_sum_crmt_schedlin_quan = lv_sum_crmt_schedlin_quan cv_sum_prct_cond_rate = lv_sum_prct_cond_rate. ls_orderadm_h-zzzoutother = lv_sum_prct_cond_rate. ls_field_names-fieldname = 'ZZZOUTOTHER'. INSERT ls_field_names INTO TABLE lt_field_names. lv_zsrv_mileage_fee = abap_false. ENDIF. *判断是是否需要行项目-End ENDIF. ENDIF. IF head-object_id IS INITIAL."工单创建 ls_orderadm_h-mode = 'A'. ELSE. ow_header = head-guid. INSERT ow_header INTO TABLE ot_header. CALL FUNCTION 'CRM_ORDER_READ' EXPORTING it_header_guid = ot_header * IT_ITEM_GUID = * IV_MODE = * IV_ONLY_SPEC_ITEMS = * IT_REQUESTED_OBJECTS = * IV_NO_AUTH_CHECK = * IT_ITEM_USAGE_RANGE = * IV_SUBITEM_DEPTH = -1 * IT_OBJECT_FILTER = * IV_ONLY_CHANGED_OBJ = FALSE * IV_STATUS_H_CHECK_RELEVANCE = FALSE * IV_TEXT_LOG_SINGLE = FALSE IMPORTING et_orderadm_h = ot_order_h * ET_OPPORT_H = * ET_LEAD_H = * ET_ACTIVITY_H = * ET_LAWREF_H = * ET_ORDERADM_I = * ET_OPPORT_I = * ET_ACTIVITY_I = * ET_PRODUCT_I = * ET_FINPROD_I = * ET_BATCH = * ET_CONFIG = * ET_STRUCT_I = * ET_SALES = * ET_PRICING = * ET_PRICING_I = * ET_ORGMAN = * ET_SHIPPING = * ET_CUSTOMER_H = * ET_CUSTOMER_I = * ET_SERVICE_H = * ET_SERVICE_I = * ET_SERVICE_ASSIGN = * ET_QUALIF = * ET_PAYPLAN = * ET_PAYPLAN_D = * ET_APPOINTMENT = et_text = ot_text et_schedlin = ot_schedlin et_partner = ot_partner * ET_SERVICE_OS = * ET_REFOBJ = * ET_SUBJECT = * ET_CUMULAT_H = * ET_STATUS = * ET_STATUS_H = * ET_SCHEDLIN_I = * ET_CANCEL = * ET_CANCEL_IR = * ET_CANCEL_CR = * ET_BILLPLAN = * ET_BILLING = * ET_ORDPRP_I = * ET_ORDPRP_I_D = * ET_ORDPRP_OBJL_I_D = * ET_CUMULATED_I = * ET_DOC_FLOW = * ET_EXCEPTION = et_pridoc = ot_cond * ET_PRICE_AGREEMENTS_CRM = * ET_PRICE_AGREEMENTS_BBP = * ET_CONFIG_FILTER = * ET_SERVICEPLAN_I = * ET_SERVICEPLAN_IE = * ET_EXTENSION = * ET_CREDITVALUES = * ET_SURVEY = * ET_AC_ASSIGN = * ET_APO_I = * ET_EXT_REF = * ET_UBB_CTR_I = * ET_UBB_CR_I = * ET_UBB_VOL_I = * ET_CHNGPROC_H = * ET_CHNGPROC_I = * ET_DOC_FLOW_PNT = * ET_FUND_H = * ET_CLA_H = * ET_SRV_REQ_H = * ET_APPROVAL = * ET_EXTENSION2 = * ET_CLA_I = * CHANGING * CV_LOG_HANDLE = EXCEPTIONS document_not_found = 1 error_occurred = 2 document_locked = 3 no_change_authority = 4 no_display_authority = 5 no_change_allowed = 6 OTHERS = 7. IF sy-subrc <> 0. ENDIF. ENDIF. INSERT ls_orderadm_h INTO TABLE lt_orderadm_h. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'ORDERADM_H'. INSERT ls_input_field INTO TABLE lt_input_field. "******************************HEAD*************************END "******************************sales org********************begin IF headx-sales_org = 'X'. SELECT SINGLE * INTO gw_zbp_sales FROM zbp_sales WHERE sales_org = head-sales_org. ls_orgman-ref_guid = head-guid. ls_orgman-ref_kind = 'A'. ls_orgman-dis_channel = gw_zbp_sales-channel. ls_orgman-sales_org_ori = 'C'. ls_orgman-sales_org = gw_zbp_sales-sales_org. ls_orgman-sales_office = gw_zbp_sales-sales_office."默认sales office INSERT ls_orgman INTO TABLE lt_orgman. ls_field_names-fieldname = 'DIS_CHANNEL'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'SALES_ORG'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'SALES_OFFICE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'SALES_ORG_ORI'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'ORGMAN'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. "******************************sales org********************end "******************************SERVICE_H********************BEGIN IF headx-store_contact_person IS NOT INITIAL OR headx-store_contact_cellphone IS NOT INITIAL OR headx-store_contact_phone IS NOT INITIAL OR headx-store_contact_email IS NOT INITIAL. ls_service_h-ref_guid = head-guid. IF headx-store_contact_person IS NOT INITIAL. ls_service_h-zzcon_person = head-store_contact_person. ls_field_names-fieldname = 'ZZCON_PERSON'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-store_contact_cellphone IS NOT INITIAL. ls_service_h-zzcon_mob = head-store_contact_cellphone. ls_field_names-fieldname = 'ZZCON_MOB'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-store_contact_phone IS NOT INITIAL. ls_service_h-zzcon_phone = head-store_contact_phone. ls_field_names-fieldname = 'ZZCON_PHONE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-store_contact_email IS NOT INITIAL. ls_service_h-zzcon_email = head-store_contact_email. ls_field_names-fieldname = 'ZZCON_EMAIL'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'SERVICE_H'. INSERT ls_input_field INTO TABLE lt_input_field. INSERT ls_service_h INTO TABLE lt_service_h. CLEAR:ls_service_h, ls_orderadm_h. ENDIF. "******************************SERVICE_H********************end "******************************CUSTOMER_H********************BEGIN IF headx-zzord_origin IS NOT INITIAL. ls_customer_h-ref_guid = head-guid. ls_customer_h-zzord_origin = head-zzord_origin. ls_field_names-fieldname = 'ZZORD_ORIGIN'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'CUSTOMER_H'. INSERT ls_input_field INTO TABLE lt_input_field. INSERT ls_customer_h INTO TABLE lt_customer_h. CLEAR:ls_customer_h. ENDIF. "******************************CUSTOMER_H********************end "******************************SERVICE_OS*************************BEGIN IF headx-product_id = 'X'. SELECT SINGLE product_guid INTO ls_refobject-guid_object FROM comm_product WHERE product_id = head-product_id. IF sy-subrc = 0. ls_service_os-ref_guid = head-guid. ls_service_os-ref_kind = 'A'. ls_osset-ref_guid = head-guid. ls_osset-subject_profile = 'ZSERV'. ls_osset-profile_type = 'A'. ls_refobject-ref_guid = head-guid. ls_refobject-product_id = head-product_id. * ls_refobject-ib_ibase = ls_order_h-ib_ibase. * ls_refobject-ib_instance = ls_order_h-ib_instance. ls_refobject-main_object = 'X'. ls_refobject-mode = 'B'. INSERT ls_refobject INTO TABLE lt_refobject. ls_osset-refobject = lt_refobject. INSERT ls_osset INTO TABLE lt_osset. ls_service_os-osset = lt_osset. ls_service_os-ref_guid = head-guid. ls_service_os-ref_kind = 'A'. INSERT ls_service_os INTO TABLE lt_service_os. ls_field_names-fieldname = 'ALTID_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'IB_IBASE'. * INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'IB_INSTANCE'. * INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'ID_FROM'. * INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'ID_TO'. * INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'INST_DISM_INFO'. * INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'MAIN_OBJECT'. INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'PART_CAUS_FAIL'. * INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PRODUCT_ID'. INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'SERIAL_NUMBER'. * INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'SERVICE_OS'. INSERT ls_input_field INTO TABLE lt_input_field. * endif. CLEAR: lt_refobject,lt_osset. ENDIF. ENDIF. "*S*********************SALES******************************** IF headx-sp_order = 'X' OR headx-store_reference_no = 'X'.. REFRESH:lt_sales. CLEAR:ls_sales. ls_sales-ref_guid = head-guid. ls_sales-ref_kind = 'A'. IF headx-store_reference_no = 'X'. ls_sales-po_number_ship = head-store_reference_no. ls_field_names-fieldname = 'PO_NUMBER_SHIP'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-sp_order = 'X'. ls_sales-po_number_sold = head-sp_order. ls_field_names-fieldname = 'PO_NUMBER_SOLD'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-create_date = 'X'. ls_sales-po_date_sold = head-create_date. ls_field_names-fieldname = 'PO_DATE_SOLD'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. INSERT ls_sales INTO TABLE lt_sales. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'SALES'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. "*E*********************SALES******************************** "*S*********************TEXT************************************* "SET DEFAULT TIME ZONE IF head-sales_org = 'O 50000297'."法国 gv_zonlo = 'WAT'. ELSEIF head-sales_org = 'O 50000005'."西班牙 gv_zonlo = 'CAT'. ELSEIF head-sales_org = 'O 50000231'."日本 gv_zonlo = 'UTC+9'. ELSEIF head-sales_org = 'O 50000362'."英国 gv_zonlo = 'UK'. ELSE."其他以中国记 gv_zonlo = 'UTC+8'. ENDIF. CONVERT DATE sy-datum TIME sy-uzeit INTO TIME STAMP gv_timez TIME ZONE 'UTC+8'. CONVERT TIME STAMP gv_timez TIME ZONE gv_zonlo INTO DATE gv_date TIME gv_time. IF headx-repair_note = 'X'. CONCATENATE gv_date+6(2) '/' gv_date+4(2) '/' gv_date+0(4) ' RFC ' gv_time+0(2) ':' gv_time+2(2) ':' gv_time+4(2) ' ' head-repair_note INTO head-repair_note. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'A002'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'U'. READ TABLE ot_text INTO ow_text WITH KEY ref_guid = head-guid. IF sy-subrc = 0. IF ow_text-stxh-tdid = 'A002'. APPEND LINES OF ow_text-lines TO gt_ltxts. ENDIF. ENDIF. l_len = strlen( head-repair_note ). WHILE strlen( head-repair_note ) > 0. IF strlen( head-repair_note ) > 130. lw_ltxt-tdline = head-repair_note+0(130). l_len = l_len - 130. head-repair_note = head-repair_note+130(l_len). ELSE. lw_ltxt-tdline = head-repair_note. CLEAR:head-repair_note. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-unsolvedreason = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH16'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-unsolvedreason ). WHILE strlen( head-unsolvedreason ) > 0. IF strlen( head-unsolvedreason ) > 130. lw_ltxt-tdline = head-unsolvedreason+0(130). l_len = l_len - 130. head-repair_note = head-unsolvedreason+130(l_len). ELSE. lw_ltxt-tdline = head-unsolvedreason. CLEAR:head-unsolvedreason. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-can_reason = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH14'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-can_reason ). WHILE strlen( head-can_reason ) > 0. IF strlen( head-can_reason ) > 130. lw_ltxt-tdline = head-can_reason+0(130). l_len = l_len - 130. head-can_reason = head-can_reason+130(l_len). ELSE. lw_ltxt-tdline = head-can_reason. CLEAR:head-can_reason. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zh28 = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH28'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-zh28 ). WHILE strlen( head-zh28 ) > 0. IF strlen( head-zh28 ) > 130. lw_ltxt-tdline = head-zh28+0(130). l_len = l_len - 130. head-zh28 = head-zh28+130(l_len). ELSE. lw_ltxt-tdline = head-zh28. CLEAR:head-zh28. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zh30 = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH30'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-zh30 ). WHILE strlen( head-zh30 ) > 0. IF strlen( head-zh30 ) > 130. lw_ltxt-tdline = head-zh30+0(130). l_len = l_len - 130. head-zh30 = head-zh30+130(l_len). ELSE. lw_ltxt-tdline = head-zh30. CLEAR:head-zh30. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-problem_note = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH30'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-problem_note ). WHILE strlen( head-problem_note ) > 0. IF strlen( head-problem_note ) > 130. lw_ltxt-tdline = head-problem_note+0(130). l_len = l_len - 130. head-problem_note = head-problem_note+130(l_len). ELSE. lw_ltxt-tdline = head-problem_note. CLEAR:head-problem_note. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. "*E*********************TEXT************************************* "******************************SERVICE_OS*************************END *S*********************status************************************** CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-order_status = 'X'. ls_status-ref_guid = head-guid. ls_status-ref_kind = 'A'. READ TABLE gt_tj30t INTO gw_tj30t WITH KEY estat = head-order_status. IF sy-subrc = 0. ls_status-status = head-order_status. ELSE. READ TABLE gt_tj30t INTO gw_tj30t WITH KEY txt04 = head-order_status. IF sy-subrc = 0. ls_status-status = gw_tj30t-estat. ENDIF. ENDIF. ls_status-user_stat_proc = gw_profile-user_stat_proc. ls_status-activate = 'X'. INSERT ls_status INTO TABLE lt_status. ls_field_names-fieldname = 'ACTIVATE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'STATUS'. CONCATENATE ls_status-status ls_status-user_stat_proc INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. *E*********************status************************************** *S*********************APPOINTMENT-DATE********************************* CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-ack_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-ack_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZACKNOWLEG'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZACKNOWLEG'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-repair_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-repair_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZREPAIR'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZREPAIR'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-assign_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-assign_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZASSIGNMENT'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZASSIGNMENT'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-in_depot_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-in_depot_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZDELIVER'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZDELIVER'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-zfeedback = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-zfeedback i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZFEEDBACK'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZFEEDBACK'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-purchase_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-purchase_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZPURCHASE'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZPURCHASE'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-reservation_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-reservation_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZRESERVATION'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZRESERVATION'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-zrefund = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-zrefund i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZREFUND'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZREFUND'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zexchange = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-zexchange i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZEXCHANGE'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZEXCHANGE'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. *E*********************APPOINTMENT-DATE********************************* *S********************* *partnr ******************************************** IF headx-sp_partner = 'X'."服务商 CLEAR:ls_input_field,ls_field_names,lt_field_names[]. CLEAR:ls_partner,ow_partner. l_partner = head-sp_partner. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0001'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI00SP'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI00SP'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI00SP'. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0001'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI00SP' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0001'. INSERT ls_input_field INTO TABLE lt_input_field. "bill to pay to 都是服务商 "bill REFRESH:ls_input_field-field_names[]. ls_partner-ref_partner_handle = '0002'. ls_partner-partner_fct = '00000003'. INSERT ls_partner INTO TABLE lt_partner. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. ls_input_field-logical_key = '0002'. INSERT ls_input_field INTO TABLE lt_input_field. "payer REFRESH:ls_input_field-field_names[]. ls_partner-ref_partner_handle = '0003'. ls_partner-partner_fct = '00000004'. INSERT ls_partner INTO TABLE lt_partner. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. ls_input_field-logical_key = '0003'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-end_user_id = 'X'."终端用户 CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-end_user_id. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0004'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI00EU'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI00EU'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI00EU'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI00EU'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI00EU'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0004'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI00EU' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-sold_to = 'X'."售达方 CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-sold_to. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0005'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = '00000001'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000001'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = '00000001'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = '00000001'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = '00000001'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0005'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000001' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0005'. INSERT ls_input_field INTO TABLE lt_input_field. IF head-order_type+0(3) = 'ZSO' OR zcl_otr=>sold_as_bill = 'X'."销售的bill to payer都是sold to zcl_otr=>sold_as_bill = ''. REFRESH:ls_input_field-field_names[]. ls_partner-ref_partner_handle = '0002'. ls_partner-partner_fct = '00000003'. CLEAR:ow_partner. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000003'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_partner_fct = '00000003'. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0002'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000003' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0002'. INSERT ls_input_field INTO TABLE lt_input_field. "payer REFRESH:ls_input_field-field_names[]. ls_partner-ref_partner_handle = '0003'. ls_partner-partner_fct = '00000004'. CLEAR:ow_partner. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000004'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_partner_fct = '00000004'. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0003'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000004' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0003'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. ENDIF. IF headx-ship_to = 'X'."售达方 CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-ship_to. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0006'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = '00000002'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000002'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = '00000002'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = '00000002'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = '00000002'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0006'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000002' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0006'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-store_id = 'X'."Reatiler CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-store_id. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0000'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI00RT'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI00RT'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI00RT'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI00RT'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI00RT'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0000'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI00RT' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-bp09 = 'X'."Activity Partner CLEAR:ls_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-bp09. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0000'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = '00000009'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = '00000009'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = '00000009'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. *E********************* *partnr ******************************************** *S**************************ITEM ******************************************** READ TABLE ot_cond INTO ow_cond INDEX 1. LOOP AT item INTO gw_item. CLEAR:ow_schedlin."读取历史记录 READ TABLE ot_schedlin INTO ow_schedlin WITH KEY item_guid = gw_item-guid. IF sy-subrc = 0. * gw_item-guid = ow_schedlin-guid. ELSE. IF gw_item-guid IS INITIAL. CALL FUNCTION 'CRM_GUID_CREATE' IMPORTING ev_guid = gw_item-guid. ENDIF. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names, ls_orderadm_i, ls_schedlin_extdt, wk_schedlin, lt_schedlin_extdt. ls_service_i-ref_guid = gw_item-guid. INSERT ls_service_i INTO TABLE lt_service_i. ls_product_i-ref_guid = gw_item-guid. INSERT ls_product_i INTO TABLE lt_product_i. ls_pricing-ref_guid = gw_item-guid. ls_pricing-ref_kind = 'B'. INSERT ls_pricing INTO TABLE lt_pricing. ls_schedlin_i-ref_guid = gw_item-guid. ls_schedlin_extdt-quantity = gw_item-item_quantity. IF ow_schedlin IS NOT INITIAL. ls_schedlin_extdt-guid = ow_schedlin-guid. ls_schedlin_extdt-logical_key = ow_schedlin-guid. ELSE. ls_schedlin_extdt-logical_key = '00000000000000000000000000000000'. ENDIF. INSERT ls_schedlin_extdt INTO TABLE lt_schedlin_extdt. ls_schedlin_i-schedlines = lt_schedlin_extdt. INSERT ls_schedlin_i INTO TABLE lt_schedlin_i. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_field_names-fieldname = 'LOGICAL_KEY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'QUANTITY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = gw_item-guid. ls_input_field-ref_kind = 'B'. ls_input_field-objectname = 'SCHEDLIN'. IF ow_schedlin IS NOT INITIAL.. ls_input_field-logical_key = ow_schedlin-guid. ELSE. ls_input_field-logical_key = '00000000000000000000000000000000'. ENDIF. INSERT ls_input_field INTO TABLE lt_input_field. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_orderadm_i-guid = gw_item-guid. ls_orderadm_i-header = gw_item-head_guid. ls_orderadm_i-number_int = gw_item-item_number. ls_orderadm_i-itm_type = gw_item-item_category. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = ls_orderadm_i-number_int IMPORTING output = ls_orderadm_i-number_int. ls_orderadm_i-ordered_prod = gw_item-item_product_id. ls_orderadm_i-number_parent = gw_item-item_high_level. IF gw_item-item_high_level IS NOT INITIAL. READ TABLE item INTO gv_item WITH KEY guid = gw_item-guid item_number = gw_item-item_high_level. IF sy-subrc = 0. ls_orderadm_i-parent = gv_item-guid. ENDIF. ENDIF. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = ls_orderadm_i-ordered_prod IMPORTING output = ls_orderadm_i-ordered_prod. ls_orderadm_i-description = gw_item-item_product_des. ls_orderadm_i-zzzserialno = gw_item-item_serial_no. ls_orderadm_i-zzzserialno1 = gw_item-item_serial_no_1. ls_orderadm_i-zzzserialno2 = gw_item-item_serial_no_2. ls_orderadm_i-zzorderadm_i0403 = gw_item-zzorderadm_i0403. ls_orderadm_i-zzorderadm_i0404 = gw_item-zzorderadm_i0404. ls_orderadm_i-zzorderadm_i0405 = gw_item-item_imei_1. ls_orderadm_i-zzorderadm_i0406 = gw_item-item_imei_1. ls_orderadm_i-zzzcustmodeno = gw_item-zzzmodeno. ls_orderadm_i-zzplant = gw_item-item_plant. ls_orderadm_i-zzlgort = gw_item-item_storage_loc. ls_orderadm_i-zzcrm04p = gw_item-exre_reason. ls_orderadm_i-zzpurc_date = gw_item-purchase_date. ls_orderadm_i-zzreturn_process = gw_item-zzreturn_process. ls_orderadm_i-zzzgroup = gw_item-zzzgroup. ls_orderadm_i-zzsymp_grou = gw_item-zzsymp_grou. ls_orderadm_i-zzsymp_code = gw_item-zzsymp_code. ls_orderadm_i-zzzremark = gw_item-zzzremark. ls_orderadm_i-zzorderadm_i0407 = gw_item-item_zzorderadm_i0407. ls_orderadm_i-zzref_exh_date = gw_item-item_zzref_exh_date. ls_orderadm_i-zzsymp_text = gw_item-item_zzsymp_text. IF gw_item-mode = 'D'. ls_orderadm_i-mode = 'D'. ENDIF. INSERT ls_orderadm_i INTO TABLE lt_orderadm_i. ls_field_names-fieldname = 'DESCRIPTION'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ITM_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ORDERED_PROD'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'MODE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ITM_PROC_IDENT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NUMBER_INT'. INSERT ls_field_names INTO TABLE lt_field_names. READ TABLE itemx INTO gw_itemx WITH KEY guid = gw_item-guid. IF sy-subrc = 0. IF gw_itemx-item_high_level = 'X'. ls_field_names-fieldname = 'NUMBER_PARENT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_serial_no = 'X'. ls_field_names-fieldname = 'ZZZSERIALNO'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_serial_no_1 = 'X'. ls_field_names-fieldname = 'ZZZSERIALNO1'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_serial_no_2 = 'X'. ls_field_names-fieldname = 'ZZZSERIALNO2'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzmodeno = 'X'. ls_field_names-fieldname = 'ZZZCUSTMODENO'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_plant = 'X'. ls_field_names-fieldname = 'ZZPLANT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_storage_loc = 'X'. ls_field_names-fieldname = 'ZZLGORT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-exre_reason = 'X'. ls_field_names-fieldname = 'ZZCRM04P'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-purchase_date = 'X'. ls_field_names-fieldname = 'ZZPURC_DATE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzorderadm_i0403 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0403'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzorderadm_i0404 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0404'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_imei_1 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0405'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_imei_2 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0406'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzreturn_process = 'X'. ls_field_names-fieldname = 'ZZRETURN_PROCESS'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzgroup = 'X'. ls_field_names-fieldname = 'ZZZGROUP'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzsymp_grou = 'X'. ls_field_names-fieldname = 'ZZSYMP_GROU'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzsymp_code = 'X'. ls_field_names-fieldname = 'ZZSYMP_CODE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzremark = 'X'. ls_field_names-fieldname = 'ZZZREMARK'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_zzorderadm_i0407 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0407'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_zzref_exh_date = 'X'. ls_field_names-fieldname = 'ZZREF_EXH_DATE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_zzsymp_text = 'X'. ls_field_names-fieldname = 'ZZSYMP_TEXT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. ENDIF. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = gw_item-guid. ls_input_field-ref_kind = 'B'. ls_input_field-objectname = 'ORDERADM_I'. INSERT ls_input_field INTO TABLE lt_input_field. REFRESH:lt_pric_cond,lt_pric_chag. CLEAR:ls_pridoc. LOOP AT price INTO gw_price WHERE ref_guid = gw_item-guid. ot_price[] = ow_cond-pric_cond[]."add by ly 20180124 SORT ot_price[] BY kposn kschl stunr zaehk DESCENDING. READ TABLE ot_price INTO ow_price WITH KEY kposn = gw_item-guid kschl = gw_price-kschl. IF sy-subrc = 0. ls_pric_chag-stunr = ow_price-stunr. ls_pric_chag-zaehk = ow_price-zaehk. ls_pric_chag-kbetr = gw_price-kbetr. ls_pric_chag-kpein = 1. ls_pric_chag-kmein = ow_price-kmein. INSERT ls_pric_chag INTO TABLE lt_pric_chag. ls_pridoc-cond_change[] = lt_pric_chag[]. ELSE. ls_pric_cond-kschl = gw_price-kschl. ls_pric_cond-kbetr = gw_price-kbetr. ls_pric_cond-kwert = gw_price-kwert. INSERT ls_pric_cond INTO TABLE lt_pric_cond. ls_pridoc-cond_add[] = lt_pric_cond[]. ENDIF. ls_pridoc-ref_guid = gw_item-guid. ls_pridoc-ref_kind = 'B'. INSERT ls_pridoc INTO TABLE lt_pridoc. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_field_names-fieldname = 'KSCHL'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KBETR'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KWERT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-ref_guid = gw_item-guid. ls_input_field-ref_kind = 'B'. ls_input_field-objectname = 'PRIDOC'. ls_input_field-field_names = lt_field_names. INSERT ls_input_field INTO TABLE lt_input_field. ENDLOOP. ENDLOOP. *E**************************ITEM ******************************************** CALL FUNCTION 'CRM_ORDER_MAINTAIN' EXPORTING it_sales = lt_sales it_text = lt_text it_status = lt_status it_service_os = lt_service_os it_service_h = lt_service_h it_customer_h = lt_customer_h it_service_i = lt_service_i it_appointment = lt_appointment it_schedlin_i = lt_schedlin_i it_product_i = lt_product_i it_orgman = lt_orgman it_partner = lt_partner it_pridoc = lt_pridoc CHANGING ct_orderadm_h = lt_orderadm_h ct_orderadm_i = lt_orderadm_i ct_input_fields = lt_input_field EXCEPTIONS error_occurred = 1 document_locked = 2 no_change_allowed = 3 no_authority = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO error_log. error_type = 'E'. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF. CHECK error_type <> 'E'. CLEAR:lt_exception. is_objects_to_save = head-guid. INSERT is_objects_to_save INTO TABLE it_objects_to_save. CALL FUNCTION 'CRM_ORDER_SAVE' EXPORTING it_objects_to_save = it_objects_to_save IMPORTING et_saved_objects = lt_saved_objects et_exception = lt_exception et_objects_not_saved = lt_objects_not_saved EXCEPTIONS document_not_saved = 1 OTHERS = 2. IF lt_objects_not_saved IS NOT INITIAL. error_type = 'E'. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO error_log. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. CALL FUNCTION 'CRM_ORDER_DEQUEUE' EXPORTING iv_guid = head-guid. READ TABLE lt_saved_objects INTO ls_saved_objects INDEX 1. error_type = 'S'. MESSAGE s322(zcrm_msg) WITH ls_saved_objects-object_id INTO error_log. * error_log = 'Create Order:' && ls_saved_objects-object_id && ' successful'. object_o = ls_saved_objects-object_id. REFRESH: tk_orderadm_h, lt_orderadm_h, lt_input_field, it_objects_to_save, lt_saved_objects. CLEAR: tk_orderadm_h, wk_orderadm_h, lt_orderadm_h, ls_orderadm_h, lt_input_field, it_objects_to_save, lt_saved_objects. ENDIF. CALL FUNCTION 'CRM_ORDER_INITIALIZE' EXPORTING it_guids_to_init = lt_guid_init EXCEPTIONS error_occurred = 1 OTHERS = 2. IF sy-subrc <> 0. * MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno * WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO error_log. * error_type = sy-msgty. ENDIF. IF head-prov_guid IS NOT INITIAL."关联前序订单 CALL FUNCTION 'ZCRM_CREATE_DOC_FLOW' IN BACKGROUND TASK EXPORTING iv_guid_a = head-prov_guid iv_guid_b = head-guid iv_order_guid = head-guid. COMMIT WORK. ENDIF. IF error_type = 'S'. "add by ly 20170908 增加里程费项目 IF lv_zsrv_mileage_fee = abap_true. CALL FUNCTION 'ZSRV_MILEAGE_FEE' " IN BACKGROUND TASK EXPORTING iv_guid = head-guid. ENDIF. ENDIF. ENDFUNCTION.
"20181217封板:
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_activity_h TYPE crmt_activity_h_com, lt_activity_h TYPE crmt_activity_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). ls_orderadm_h-zzzsymptomsgroup = ls_prprdcatr-category_id+3(3). 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'. ls_orderadm_h-zzztrackreturn = head-tracking_no_to. ls_field_names-fieldname = 'ZZZTRACKRETURN'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ZZCON_TYPE IF headx-ztype = 'X'. ls_orderadm_h-zzcon_type = head-ztype. ls_field_names-fieldname = 'ZZCON_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Old object id IF headx-zzafld000004 = 'X'. ls_orderadm_h-zzafld000004 = head-zzafld000004. ls_field_names-fieldname = 'ZZAFLD000004'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Agent Invoice IF headx-zzagentinovice = 'X'. ls_orderadm_h-zzagentinovice = head-zzagentinovice. ls_field_names-fieldname = 'ZZAGENTINOVICE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Mobile Client Type IF headx-mbl_clt_type = 'X'. ls_orderadm_h-zzclient_type = head-mbl_clt_type. ls_field_names-fieldname = 'ZZCLIENT_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Packaging IF headx-pacakging = 'X'. ls_orderadm_h-zzontime = head-pacakging. ls_field_names-fieldname = 'ZZONTIME'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Customer Order Number IF headx-zzzcusordno = 'X'. ls_orderadm_h-zzzcusordno = head-zzzcusordno. ls_field_names-fieldname = 'ZZZCUSORDNO'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Transaction ID IF headx-zzztransaid = 'X'. ls_orderadm_h-zzztransaid = head-zzztransaid. ls_field_names-fieldname = 'ZZZTRANSAID'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Second level name code IF headx-zzlevelcode = 'X'. ls_orderadm_h-zzlevelcode = head-zzlevelcode. ls_field_names-fieldname = 'ZZLEVELCODE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Second level name code IF headx-store_name1 = 'X'. ls_orderadm_h-zzretailer_name = head-store_name1. ls_field_names-fieldname = 'ZZRETAILER_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Questionnaires IF headx-zzzquestnairid = 'X'. ls_orderadm_h-zzzquestnairid = head-zzzquestnairid. ls_field_names-fieldname = 'ZZZQUESTNAIRID'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "Sales Order Header Product ID IF headx-zzfld000003 = 'X'. ls_orderadm_h-zzfld000003 = head-zzfld000003. ls_field_names-fieldname = 'ZZFLD000003'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "complain type IF headx-zzafld000015 = 'X'. ls_orderadm_h-zzafld000015 = head-zzafld000015. ls_field_names-fieldname = 'ZZAFLD000015'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzfld00000o = 'X'. ls_orderadm_h-zzfld00000o = head-zzfld00000o. ls_field_names-fieldname = 'ZZFLD00000O'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ZZSOURCE IF headx-zzsource = 'X'. ls_orderadm_h-zzsource = head-zzsource. ls_field_names-fieldname = 'ZZSOURCE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "ZZLOGI_STATUS IF headx-zzlogi_status = 'X'. ls_orderadm_h-zzlogi_status = head-zzlogi_status. ls_field_names-fieldname = 'ZZLOGI_STATUS'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzrepchg_type = 'X'. ls_orderadm_h-zzrepchg_type = head-zzrepchg_type. ls_field_names-fieldname = 'ZZREPCHG_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzrprepair = 'X'. ls_orderadm_h-zzzrprepair = head-zzzrprepair. ls_field_names-fieldname = 'ZZZRPREPAIR'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzfld00000i = 'X'. ls_orderadm_h-zzfld00000i = head-zzfld00000i. ls_field_names-fieldname = 'ZZFLD00000I'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzpre_conct = 'X'. ls_orderadm_h-zzpre_conct = head-zzpre_conct. ls_field_names-fieldname = 'ZZPRE_CONCT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzafld000005 = 'X'. ls_orderadm_h-zzafld000005 = head-zzafld000005. ls_field_names-fieldname = 'ZZAFLD000005'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzcharg_type = 'X'. ls_orderadm_h-zzcharg_type = head-zzcharg_type. ls_field_names-fieldname = 'ZZCHARG_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzis_charged = 'X'. ls_orderadm_h-zzis_charged = head-zzis_charged. ls_field_names-fieldname = 'ZZIS_CHARGED'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzafld000017 = 'X'. ls_orderadm_h-zzafld000017 = head-zzafld000017. ls_field_names-fieldname = 'ZZAFLD000017'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzpurpr = 'X'. ls_orderadm_h-zzzpurpr = head-zzzpurpr / 100. ls_field_names-fieldname = 'ZZZPURPR'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzafld00001p = 'X'. ls_orderadm_h-zzafld00001p = head-zzafld00001p. ls_field_names-fieldname = 'ZZAFLD00001P'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzafld00002v = 'X'. ls_orderadm_h-zzafld00002v = head-zzafld00002v. ls_field_names-fieldname = 'ZZAFLD00002V'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzsectioncode = 'X'. ls_orderadm_h-zzsectioncode = head-zzsectioncode. ls_field_names-fieldname = 'ZZSECTIONCODE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzfld00000p = 'X'. ls_orderadm_h-zzfld00000p = head-zzfld00000p. ls_field_names-fieldname = 'ZZFLD00000P'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zoutother = 'X'. ls_orderadm_h-zzzoutother = head-zoutother / 100. ls_field_names-fieldname = 'ZZZOUTOTHER'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzoutparts = 'X'. ls_orderadm_h-zzzoutparts = head-zzzoutparts. IF head-sales_org = 'O 50000231'. ls_orderadm_h-zzzoutparts = ls_orderadm_h-zzzoutparts / 100. ENDIF. ls_field_names-fieldname = 'ZZZOUTPARTS'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzoutlabor = 'X'. ls_orderadm_h-zzzoutlabor = head-zzzoutlabor / 100. ls_field_names-fieldname = 'ZZZOUTLABOR'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzfld00000j = 'X'. ls_orderadm_h-zzfld00000j = head-zzfld00000j / 100. ls_field_names-fieldname = 'ZZFLD00000J'. INSERT ls_field_names INTO TABLE lt_field_names. ls_orderadm_h-zzfld00000k = 'JPY'. ls_field_names-fieldname = 'ZZFLD00000K'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzafld000018 = 'X'. ls_orderadm_h-zzafld000018 = head-zzafld000018. ls_field_names-fieldname = 'ZZAFLD000018'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzafld000019 = 'X'. ls_orderadm_h-zzzafld000019 = head-zzzafld000019 / 100. ls_field_names-fieldname = 'ZZZAFLD000019'. INSERT ls_field_names INTO TABLE lt_field_names. ls_orderadm_h-zzafld00001j = 'JPY'. ls_field_names-fieldname = 'ZZAFLD00001J'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzafld00001a = 'X'. ls_orderadm_h-zzzafld00001a = head-zzzafld00001a / 100. ls_field_names-fieldname = 'ZZZAFLD00001A'. INSERT ls_field_names INTO TABLE lt_field_names. ls_orderadm_h-zzafld00001k = 'JPY'. ls_field_names-fieldname = 'ZZAFLD00001K'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzafld00001b = 'X'. ls_orderadm_h-zzzafld00001b = head-zzzafld00001b / 100. ls_field_names-fieldname = 'ZZZAFLD00001B'. INSERT ls_field_names INTO TABLE lt_field_names. ls_orderadm_h-zzafld00001l = 'JPY'. ls_field_names-fieldname = 'ZZAFLD00001L'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzafld00001c = 'X'. ls_orderadm_h-zzzafld00001c = head-zzzafld00001c / 100. ls_field_names-fieldname = 'ZZZAFLD00001C'. INSERT ls_field_names INTO TABLE lt_field_names. ls_orderadm_h-zzafld00001m = 'JPY'. ls_field_names-fieldname = 'ZZAFLD00001M'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzzsettleamt = 'X'. ls_orderadm_h-zzzsettleamt = head-zzzsettleamt. IF head-sales_org = 'O 50000231'. ls_orderadm_h-zzzsettleamt = ls_orderadm_h-zzzsettleamt / 100. ENDIF. ls_field_names-fieldname = 'ZZZSETTLEAMT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzfld000009 = 'X'. ls_orderadm_h-zzfld000009 = head-zzfld000009. IF head-sales_org = 'O 50000231'. ls_orderadm_h-zzfld000009 = ls_orderadm_h-zzfld000009 / 100. ENDIF. ls_field_names-fieldname = 'ZZFLD000009'. INSERT ls_field_names INTO TABLE lt_field_names. ls_orderadm_h-zzfld00000a = 'JPY'. ls_field_names-fieldname = 'ZZFLD00000A'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-quota_for_retailer = 'X'. ls_orderadm_h-zzzquota_rtl = head-quota_for_retailer / 100. ls_field_names-fieldname = 'ZZZQUOTA_RTL'. INSERT ls_field_names INTO TABLE lt_field_names. ls_orderadm_h-zzafld00001h = 'JPY'. ls_field_names-fieldname = 'ZZAFLD00001H'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-quota_for_end_user = 'X'. ls_orderadm_h-zzzquota_usr = head-quota_for_end_user / 100. ls_field_names-fieldname = 'ZZZQUOTA_USR'. INSERT ls_field_names INTO TABLE lt_field_names. ls_orderadm_h-zzafld00001i = 'JPY'. ls_field_names-fieldname = 'ZZAFLD00001I'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzafld00001r = 'X'. ls_orderadm_h-zzafld00001r = head-zzafld00001r. ls_field_names-fieldname = 'ZZAFLD00001R'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzafld00001t = 'X'. ls_orderadm_h-zzafld00001t = head-zzafld00001t. ls_field_names-fieldname = 'ZZAFLD00001T'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. "DISTANCEIF head-object_id IS INITIAL."工单创建 ls_orderadm_h-mode = 'A'. ELSE. ow_header = head-guid. INSERT ow_header INTO TABLE ot_header. CALL FUNCTION 'CRM_ORDER_READ' EXPORTING it_header_guid = ot_header * IT_ITEM_GUID = * IV_MODE = * IV_ONLY_SPEC_ITEMS = * IT_REQUESTED_OBJECTS = * IV_NO_AUTH_CHECK = * IT_ITEM_USAGE_RANGE = * IV_SUBITEM_DEPTH = -1 * IT_OBJECT_FILTER = * IV_ONLY_CHANGED_OBJ = FALSE * IV_STATUS_H_CHECK_RELEVANCE = FALSE * IV_TEXT_LOG_SINGLE = FALSE IMPORTING et_orderadm_h = ot_order_h * ET_OPPORT_H = * ET_LEAD_H = * ET_ACTIVITY_H = * ET_LAWREF_H = * ET_ORDERADM_I = * ET_OPPORT_I = * ET_ACTIVITY_I = * ET_PRODUCT_I = * ET_FINPROD_I = * ET_BATCH = * ET_CONFIG = * ET_STRUCT_I = * ET_SALES = * ET_PRICING = * ET_PRICING_I = * ET_ORGMAN = * ET_SHIPPING = * ET_CUSTOMER_H = * ET_CUSTOMER_I = * ET_SERVICE_H = * ET_SERVICE_I = * ET_SERVICE_ASSIGN = * ET_QUALIF = * ET_PAYPLAN = * ET_PAYPLAN_D = * ET_APPOINTMENT = et_text = ot_text et_schedlin = ot_schedlin et_partner = ot_partner * ET_SERVICE_OS = * ET_REFOBJ = * ET_SUBJECT = * ET_CUMULAT_H = * ET_STATUS = * ET_STATUS_H = * ET_SCHEDLIN_I = * ET_CANCEL = * ET_CANCEL_IR = * ET_CANCEL_CR = * ET_BILLPLAN = * ET_BILLING = * ET_ORDPRP_I = * ET_ORDPRP_I_D = * ET_ORDPRP_OBJL_I_D = * ET_CUMULATED_I = * ET_DOC_FLOW = * ET_EXCEPTION = et_pridoc = ot_cond * ET_PRICE_AGREEMENTS_CRM = * ET_PRICE_AGREEMENTS_BBP = * ET_CONFIG_FILTER = * ET_SERVICEPLAN_I = * ET_SERVICEPLAN_IE = * ET_EXTENSION = * ET_CREDITVALUES = * ET_SURVEY = * ET_AC_ASSIGN = * ET_APO_I = * ET_EXT_REF = * ET_UBB_CTR_I = * ET_UBB_CR_I = * ET_UBB_VOL_I = * ET_CHNGPROC_H = * ET_CHNGPROC_I = * ET_DOC_FLOW_PNT = * ET_FUND_H = * ET_CLA_H = * ET_SRV_REQ_H = * ET_APPROVAL = * ET_EXTENSION2 = * ET_CLA_I = * CHANGING * CV_LOG_HANDLE = EXCEPTIONS document_not_found = 1 error_occurred = 2 document_locked = 3 no_change_authority = 4 no_display_authority = 5 no_change_allowed = 6 OTHERS = 7. IF sy-subrc <> 0. ENDIF. ENDIF. INSERT ls_orderadm_h INTO TABLE lt_orderadm_h. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'ORDERADM_H'. INSERT ls_input_field INTO TABLE lt_input_field. "******************************HEAD*************************END "******************************sales org********************begin IF headx-sales_org = 'X'. SELECT SINGLE * INTO gw_zbp_sales FROM zbp_sales WHERE sales_org = head-sales_org. ls_orgman-ref_guid = head-guid. ls_orgman-ref_kind = 'A'. ls_orgman-dis_channel = gw_zbp_sales-channel. ls_orgman-sales_org_ori = 'C'. ls_orgman-sales_org = gw_zbp_sales-sales_org. ls_orgman-sales_office = gw_zbp_sales-sales_office."默认sales office INSERT ls_orgman INTO TABLE lt_orgman. ls_field_names-fieldname = 'DIS_CHANNEL'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'SALES_ORG'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'SALES_OFFICE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'SALES_ORG_ORI'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'ORGMAN'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. "******************************sales org********************end "******************************SERVICE_H********************BEGIN IF headx-store_contact_person IS NOT INITIAL OR headx-store_contact_cellphone IS NOT INITIAL OR headx-store_contact_phone IS NOT INITIAL OR headx-store_contact_email IS NOT INITIAL OR headx-zzcon_fax IS NOT INITIAL.. ls_service_h-ref_guid = head-guid. IF headx-store_contact_person IS NOT INITIAL. ls_service_h-zzcon_person = head-store_contact_person. ls_field_names-fieldname = 'ZZCON_PERSON'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-store_contact_cellphone IS NOT INITIAL. ls_service_h-zzcon_mob = head-store_contact_cellphone. ls_field_names-fieldname = 'ZZCON_MOB'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-store_contact_phone IS NOT INITIAL. ls_service_h-zzcon_phone = head-store_contact_phone. ls_field_names-fieldname = 'ZZCON_PHONE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-store_contact_email IS NOT INITIAL. ls_service_h-zzcon_email = head-store_contact_email. ls_field_names-fieldname = 'ZZCON_EMAIL'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-zzcon_fax IS NOT INITIAL. ls_service_h-zzcon_fax = head-zzcon_fax. ls_field_names-fieldname = 'ZZCON_FAX'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'SERVICE_H'. INSERT ls_input_field INTO TABLE lt_input_field. INSERT ls_service_h INTO TABLE lt_service_h. CLEAR:ls_service_h, ls_orderadm_h. ENDIF. "******************************SERVICE_H********************end "******************************activity_H********************BEGIN IF HEADX-priority IS NOT INITIAL. CLEAR: ls_input_field,lt_activity_h[],ls_activity_h. ls_activity_h-category = '202'. ls_activity_h-ref_guid = head-guid. ls_activity_h-priority = head-priority. INSERT ls_activity_h INTO TABLE lt_activity_h. CLEAR: lt_field_names,ls_field_names. ls_field_names-fieldname = 'CATEGORY'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR: lt_field_names,ls_field_names. ls_field_names-fieldname = 'PRIORITY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'ACTIVITY_H'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. "******************************activity_H********************end "******************************CUSTOMER_H********************BEGIN IF headx-zzord_origin IS NOT INITIAL. ls_customer_h-ref_guid = head-guid. ls_customer_h-zzord_origin = head-zzord_origin. ls_field_names-fieldname = 'ZZORD_ORIGIN'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'CUSTOMER_H'. INSERT ls_input_field INTO TABLE lt_input_field. INSERT ls_customer_h INTO TABLE lt_customer_h. CLEAR:ls_customer_h. ENDIF. "******************************CUSTOMER_H********************end "******************************SERVICE_OS*************************BEGIN IF headx-product_id = 'X'. SELECT SINGLE product_guid INTO ls_refobject-guid_object FROM comm_product WHERE product_id = head-product_id. IF sy-subrc = 0. ls_service_os-ref_guid = head-guid. ls_service_os-ref_kind = 'A'. ls_osset-ref_guid = head-guid. ls_osset-subject_profile = 'ZSERV'. ls_osset-profile_type = 'A'. ls_refobject-ref_guid = head-guid. ls_refobject-product_id = head-product_id. * ls_refobject-ib_ibase = ls_order_h-ib_ibase. * ls_refobject-ib_instance = ls_order_h-ib_instance. ls_refobject-main_object = 'X'. ls_refobject-mode = 'B'. INSERT ls_refobject INTO TABLE lt_refobject. ls_osset-refobject = lt_refobject. INSERT ls_osset INTO TABLE lt_osset. ls_service_os-osset = lt_osset. ls_service_os-ref_guid = head-guid. ls_service_os-ref_kind = 'A'. INSERT ls_service_os INTO TABLE lt_service_os. ls_field_names-fieldname = 'ALTID_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'IB_IBASE'. * INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'IB_INSTANCE'. * INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'ID_FROM'. * INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'ID_TO'. * INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'INST_DISM_INFO'. * INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'MAIN_OBJECT'. INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'PART_CAUS_FAIL'. * INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PRODUCT_ID'. INSERT ls_field_names INTO TABLE lt_field_names. * ls_field_names-fieldname = 'SERIAL_NUMBER'. * INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'SERVICE_OS'. INSERT ls_input_field INTO TABLE lt_input_field. * endif. CLEAR: lt_refobject,lt_osset. ENDIF. ENDIF. "*S*********************SALES******************************** IF headx-sp_order = 'X' OR headx-store_reference_no = 'X'.. REFRESH:lt_sales. CLEAR:ls_sales. ls_sales-ref_guid = head-guid. ls_sales-ref_kind = 'A'. IF headx-store_reference_no = 'X'. ls_sales-po_number_ship = head-store_reference_no. ls_field_names-fieldname = 'PO_NUMBER_SHIP'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-sp_order = 'X'. ls_sales-po_number_sold = head-sp_order. ls_field_names-fieldname = 'PO_NUMBER_SOLD'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF headx-create_date = 'X'. ls_sales-po_date_sold = head-create_date. ls_field_names-fieldname = 'PO_DATE_SOLD'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. INSERT ls_sales INTO TABLE lt_sales. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'SALES'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. "*E*********************SALES******************************** "*S*********************TEXT************************************* "SET DEFAULT TIME ZONE IF head-sales_org = 'O 50000297'."法国 gv_zonlo = 'WAT'. ELSEIF head-sales_org = 'O 50000005'."西班牙 gv_zonlo = 'CAT'. ELSEIF head-sales_org = 'O 50000231'."日本 gv_zonlo = 'UTC+9'. ELSEIF head-sales_org = 'O 50000362'."英国 gv_zonlo = 'UK'. ELSE."其他以中国记 gv_zonlo = 'UTC+8'. ENDIF. CONVERT DATE sy-datum TIME sy-uzeit INTO TIME STAMP gv_timez TIME ZONE 'UTC+8'. CONVERT TIME STAMP gv_timez TIME ZONE gv_zonlo INTO DATE gv_date TIME gv_time. IF headx-repair_note = 'X'. CONCATENATE gv_date+6(2) '/' gv_date+4(2) '/' gv_date+0(4) ' RFC ' gv_time+0(2) ':' gv_time+2(2) ':' gv_time+4(2) ' ' head-repair_note INTO head-repair_note. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'A002'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'U'. READ TABLE ot_text INTO ow_text WITH KEY ref_guid = head-guid. IF sy-subrc = 0. IF ow_text-stxh-tdid = 'A002'. APPEND LINES OF ow_text-lines TO gt_ltxts. ENDIF. ENDIF. l_len = strlen( head-repair_note ). WHILE strlen( head-repair_note ) > 0. IF strlen( head-repair_note ) > 130. lw_ltxt-tdline = head-repair_note+0(130). l_len = l_len - 130. head-repair_note = head-repair_note+130(l_len). ELSE. lw_ltxt-tdline = head-repair_note. CLEAR:head-repair_note. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-unsolvedreason = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH16'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-unsolvedreason ). WHILE strlen( head-unsolvedreason ) > 0. IF strlen( head-unsolvedreason ) > 130. lw_ltxt-tdline = head-unsolvedreason+0(130). l_len = l_len - 130. head-repair_note = head-unsolvedreason+130(l_len). ELSE. lw_ltxt-tdline = head-unsolvedreason. CLEAR:head-unsolvedreason. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-can_reason = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH14'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-can_reason ). WHILE strlen( head-can_reason ) > 0. IF strlen( head-can_reason ) > 130. lw_ltxt-tdline = head-can_reason+0(130). l_len = l_len - 130. head-can_reason = head-can_reason+130(l_len). ELSE. lw_ltxt-tdline = head-can_reason. CLEAR:head-can_reason. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zh28 = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH28'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-zh28 ). WHILE strlen( head-zh28 ) > 0. IF strlen( head-zh28 ) > 130. lw_ltxt-tdline = head-zh28+0(130). l_len = l_len - 130. head-zh28 = head-zh28+130(l_len). ELSE. lw_ltxt-tdline = head-zh28. CLEAR:head-zh28. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zh30 = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH30'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-zh30 ). WHILE strlen( head-zh30 ) > 0. IF strlen( head-zh30 ) > 130. lw_ltxt-tdline = head-zh30+0(130). l_len = l_len - 130. head-zh30 = head-zh30+130(l_len). ELSE. lw_ltxt-tdline = head-zh30. CLEAR:head-zh30. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zh24 = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH24'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-zh24 ). WHILE strlen( head-zh24 ) > 0. IF strlen( head-zh24 ) > 130. lw_ltxt-tdline = head-zh24+0(130). l_len = l_len - 130. head-zh24 = head-zh24+130(l_len). ELSE. lw_ltxt-tdline = head-zh24. CLEAR:head-zh24. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zh32 = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH32'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-zh32 ). WHILE strlen( head-zh32 ) > 0. IF strlen( head-zh32 ) > 130. lw_ltxt-tdline = head-zh32+0(130). l_len = l_len - 130. head-zh32 = head-zh32+130(l_len). ELSE. lw_ltxt-tdline = head-zh32. CLEAR:head-zh32. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-problem_note = 'X'. REFRESH:gt_ltxts. CLEAR:ls_text,lw_ltxt. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_text-ref_guid = head-guid. ls_text-ref_kind = 'A'. ls_text-tdid = 'ZH30'. ls_text-tdspras = 'E'. ls_text-tdstyle = 'SYSTEM'. ls_text-tdform = 'SYSTEM'. ls_text-tdtexttype = ''. ls_text-mode = 'A'. l_len = strlen( head-problem_note ). WHILE strlen( head-problem_note ) > 0. IF strlen( head-problem_note ) > 130. lw_ltxt-tdline = head-problem_note+0(130). l_len = l_len - 130. head-problem_note = head-problem_note+130(l_len). ELSE. lw_ltxt-tdline = head-problem_note. CLEAR:head-problem_note. ENDIF. lw_ltxt-tdformat = '*'. APPEND lw_ltxt TO gt_ltxts. ENDWHILE. ls_text-lines = gt_ltxts. INSERT ls_text INTO TABLE lt_text. ls_field_names-fieldname = 'LINES'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'TEXTS'. l_ref_guid = ls_input_field-ref_guid. CONCATENATE 'CRM_ORDERH' l_ref_guid INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. "*E*********************TEXT************************************* "******************************SERVICE_OS*************************END *S*********************status************************************** CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-order_status = 'X'. ls_status-ref_guid = head-guid. ls_status-ref_kind = 'A'. READ TABLE gt_tj30t INTO gw_tj30t WITH KEY estat = head-order_status. IF sy-subrc = 0. ls_status-status = head-order_status. ELSE. READ TABLE gt_tj30t INTO gw_tj30t WITH KEY txt04 = head-order_status. IF sy-subrc = 0. ls_status-status = gw_tj30t-estat. ENDIF. ENDIF. ls_status-user_stat_proc = gw_profile-user_stat_proc. ls_status-activate = 'X'. INSERT ls_status INTO TABLE lt_status. ls_field_names-fieldname = 'ACTIVATE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'STATUS'. CONCATENATE ls_status-status ls_status-user_stat_proc INTO ls_input_field-logical_key. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. *E*********************status************************************** *S*********************APPOINTMENT-DATE********************************* CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-ack_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-ack_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZACKNOWLEG'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZACKNOWLEG'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-repair_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-repair_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZREPAIR'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZREPAIR'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-assign_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-assign_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZASSIGNMENT'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZASSIGNMENT'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-in_depot_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-in_depot_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZDELIVER'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZDELIVER'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-zfeedback = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-zfeedback i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZFEEDBACK'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZFEEDBACK'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-purchase_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-purchase_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZPURCHASE'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZPURCHASE'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-reservation_date = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-reservation_date i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZRESERVATION'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZRESERVATION'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names. IF headx-zrefund = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-zrefund i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZREFUND'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZREFUND'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zexchange = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-zexchange i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZEXCHANGE'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZEXCHANGE'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-ZTAKNUMSENT = 'X'. ls_appointment-ref_guid = head-guid. ls_appointment-ref_kind = 'A'. ls_appointment-timezone_from = gv_zonlo. CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' EXPORTING i_datlo = head-ZTAKNUMSENT i_timlo = sy-uzeit i_tzone = gv_zonlo IMPORTING e_timestamp = ls_appointment-timestamp_from. ls_appointment-appt_type = 'ZTAKNUMSENT'. INSERT ls_appointment INTO TABLE lt_appointment. CLEAR: ls_field_names, lt_field_names. ls_field_names-fieldname = 'DOMINANT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'DURATION'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'RULE_NAME'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'SHOW_LOCAL'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMESTAMP_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIMEZONE_FROM'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_field_names. ls_field_names-fieldname = 'TIME_UNIT'. INSERT ls_field_names INTO TABLE lt_field_names. CLEAR ls_input_field. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-logical_key = 'ZTAKNUMSENT'. ls_input_field-objectname = 'APPOINTMENT'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. *E*********************APPOINTMENT-DATE********************************* *S********************* *partnr ******************************************** IF headx-sp_partner = 'X'."服务商 CLEAR:ls_input_field,ls_field_names,lt_field_names[]. CLEAR:ls_partner,ow_partner. l_partner = head-sp_partner. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0001'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI00SP'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI00SP'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI00SP'. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0001'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI00SP' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0001'. INSERT ls_input_field INTO TABLE lt_input_field. "bill to pay to 都是服务商 "bill IF zcl_otr=>jp_sp = 'X'. ELSE. REFRESH:ls_input_field-field_names[]. ls_partner-ref_partner_handle = '0002'. ls_partner-partner_fct = '00000003'. INSERT ls_partner INTO TABLE lt_partner. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. ls_input_field-logical_key = '0002'. INSERT ls_input_field INTO TABLE lt_input_field. "payer REFRESH:ls_input_field-field_names[]. ls_partner-ref_partner_handle = '0003'. ls_partner-partner_fct = '00000004'. INSERT ls_partner INTO TABLE lt_partner. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. ls_input_field-logical_key = '0003'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. ENDIF. IF headx-end_user_id = 'X'."终端用户 CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-end_user_id. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0004'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI00EU'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI00EU'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI00EU'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI00EU'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI00EU'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0004'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI00EU' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-sold_to = 'X'."售达方 CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-sold_to. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0005'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = '00000001'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000001'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = '00000001'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = '00000001'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = '00000001'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0005'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000001' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0005'. INSERT ls_input_field INTO TABLE lt_input_field. IF head-order_type+0(3) = 'ZSO' OR zcl_otr=>sold_as_bill = 'X'."销售的bill to payer都是sold to zcl_otr=>sold_as_bill = ''. REFRESH:ls_input_field-field_names[]. ls_partner-ref_partner_handle = '0002'. ls_partner-partner_fct = '00000003'. CLEAR:ow_partner. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000003'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_partner_fct = '00000003'. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0002'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000003' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0002'. INSERT ls_input_field INTO TABLE lt_input_field. "payer REFRESH:ls_input_field-field_names[]. ls_partner-ref_partner_handle = '0003'. ls_partner-partner_fct = '00000004'. CLEAR:ow_partner. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000004'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_partner_fct = '00000004'. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0003'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000004' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0003'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. ENDIF. IF headx-ship_to = 'X'."售达方 CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-ship_to. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0006'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = '00000002'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000002'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = '00000002'. ELSEIF sy-subrc = 0 AND ow_partner-partner_no = ls_partner-partner_no AND ZCL_OTR=>JP_IF = 'X'. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = '00000002'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = '00000002'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = '00000002'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0006'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000002' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0006'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-store_id = 'X'."Reatiler CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-store_id. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0000'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI00RT'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI00RT'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI00RT'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI00RT'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI00RT'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0000'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI00RT' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-bp09 = 'X'."Activity Partner CLEAR:ls_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-bp09. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0000'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = '00000009'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = '00000009'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = '00000009'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zzser_network = 'X'." CLEAR:ls_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-zzser_network. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0007'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI00SN'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI00SN'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI00SN'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. ls_input_field-logical_key = '0007'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-logistics = 'X'." CLEAR:ls_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-logistics. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0008'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI0LGC'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI0LGC'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI0LGC'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. ls_input_field-logical_key = '0008'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zhsi0con = 'X'."ZHSI0CON CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-zhsi0con. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0009'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI0CON'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI0CON'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI0CON'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI0CON'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI0CON'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0009'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI0CON' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-zhsi0cnn = 'X'."ZHSI0CNN CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-zhsi0cnn. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0010'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI0CNN'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI0CNN'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI0CNN'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI0CNN'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI0CNN'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0010'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI0CNN' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-ZHSI0DEL = 'X'."ZHSI0DEL CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-ZHSI0DEL. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0011'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = 'ZHSI0DEL'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = 'ZHSI0DEL'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = 'ZHSI0DEL'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = 'ZHSI0DEL'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = 'ZHSI0DEL'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0011'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '0000ZHSI0DEL' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-bill_to_party = 'X'."00000003 CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-payer. DELETE lt_partner WHERE ref_guid = head-guid AND partner_fct = '00000003'. DELETE lt_input_field WHERE logical_key = '0002'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0002'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = '00000003'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000003'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = '00000003'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = '00000003'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = '00000003'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0002'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000003' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. IF headx-payer = 'X'."00000004 CLEAR:ls_partner,ow_partner. CLEAR:ls_input_field,ls_field_names,lt_field_names[]. l_partner = head-payer. DELETE lt_partner WHERE ref_guid = head-guid AND partner_fct = '00000004'. DELETE lt_input_field WHERE logical_key = '0003'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_partner IMPORTING output = l_partner. ls_partner-ref_guid = head-guid. ls_partner-ref_kind = 'A'. ls_partner-ref_partner_handle = '0003'. ls_partner-kind_of_entry = 'C'. ls_partner-partner_fct = '00000004'. ls_partner-partner_no = l_partner. ls_partner-display_type = 'BP'. ls_partner-no_type = 'BP'. ls_partner-mainpartner = 'X'. READ TABLE ot_partner INTO ow_partner WITH KEY partner_fct = '00000004'. IF sy-subrc = 0 AND ow_partner-partner_no <> ls_partner-partner_no. ls_partner-ref_partner_no = ow_partner-partner_no. ls_partner-ref_partner_handle = '0000'. ls_partner-ref_no_type = 'BP'. ls_partner-ref_display_type = 'BP'. ls_partner-ref_partner_fct = '00000004'. ENDIF. READ TABLE partner INTO gw_partner WITH KEY ref_partner_fct = '00000004'. IF sy-subrc = 0. READ TABLE partnerx INTO gw_partnerx WITH KEY ref_partner_fct = '00000004'. SELECT * INTO TABLE gt_dd03l FROM dd03l WHERE tabname = 'ZCRM_MAINTAIN_P'. DELETE gt_dd03l WHERE fieldname = 'REF_GUID'. DELETE gt_dd03l WHERE fieldname = 'REF_PARTNER_FCT'. LOOP AT gt_dd03l INTO gw_dd03l. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partnerx TO <fsx>. IF <fsx> IS ASSIGNED. IF <fsx> = 'X'. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE ls_partner TO <partner>. IF <partner> IS ASSIGNED. ls_field_names-fieldname = gw_dd03l-fieldname. INSERT ls_field_names INTO TABLE lt_field_names. ASSIGN COMPONENT gw_dd03l-fieldname OF STRUCTURE gw_partner TO <fs>. IF <fs> IS ASSIGNED. <partner> = <fs>. ENDIF. ENDIF. ENDIF. ENDIF. ENDLOOP. ENDIF. INSERT ls_partner INTO TABLE lt_partner. IF ow_partner IS INITIAL. ls_input_field-logical_key = '0003'. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ELSE. CONCATENATE '000000000004' ls_partner-ref_partner_no ls_partner-ref_no_type ls_partner-ref_display_type INTO ls_input_field-logical_key RESPECTING BLANKS. ENDIF. ls_field_names-fieldname = 'DISPLAY_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KIND_OF_ENTRY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NO_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_FCT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'PARTNER_NO'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PARTNER'. * ls_input_field-logical_key = '0000'. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. *E********************* *partnr ******************************************** *S**************************ITEM ******************************************** READ TABLE ot_cond INTO ow_cond INDEX 1. LOOP AT item INTO gw_item. CLEAR:ow_schedlin."读取历史记录 READ TABLE ot_schedlin INTO ow_schedlin WITH KEY item_guid = gw_item-guid. IF sy-subrc = 0. * gw_item-guid = ow_schedlin-guid. ELSE. IF gw_item-guid IS INITIAL. CALL FUNCTION 'CRM_GUID_CREATE' IMPORTING ev_guid = gw_item-guid. ENDIF. ENDIF. CLEAR: ls_input_field, ls_field_names, lt_field_names, ls_orderadm_i, ls_schedlin_extdt, wk_schedlin, lt_schedlin_extdt. ls_service_i-ref_guid = gw_item-guid. INSERT ls_service_i INTO TABLE lt_service_i. ls_product_i-ref_guid = gw_item-guid. INSERT ls_product_i INTO TABLE lt_product_i. IF gw_item-price_list IS NOT INITIAL. ls_pricing-ref_guid = gw_item-guid. ls_pricing-price_list = gw_item-price_list. ls_pricing-ref_kind = 'B'. INSERT ls_pricing INTO TABLE lt_pricing. ENDIF. ls_schedlin_i-ref_guid = gw_item-guid. ls_schedlin_extdt-quantity = gw_item-item_quantity. IF ow_schedlin IS NOT INITIAL. ls_schedlin_extdt-guid = ow_schedlin-guid. ls_schedlin_extdt-logical_key = ow_schedlin-guid. ELSE. ls_schedlin_extdt-logical_key = '00000000000000000000000000000000'. ENDIF. INSERT ls_schedlin_extdt INTO TABLE lt_schedlin_extdt. ls_schedlin_i-schedlines = lt_schedlin_extdt. INSERT ls_schedlin_i INTO TABLE lt_schedlin_i. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_field_names-fieldname = 'LOGICAL_KEY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'QUANTITY'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = gw_item-guid. ls_input_field-ref_kind = 'B'. ls_input_field-objectname = 'SCHEDLIN'. IF ow_schedlin IS NOT INITIAL.. ls_input_field-logical_key = ow_schedlin-guid. ELSE. ls_input_field-logical_key = '00000000000000000000000000000000'. ENDIF. INSERT ls_input_field INTO TABLE lt_input_field. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_orderadm_i-guid = gw_item-guid. ls_orderadm_i-header = gw_item-head_guid. ls_orderadm_i-number_int = gw_item-item_number. ls_orderadm_i-itm_type = gw_item-item_category. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = ls_orderadm_i-number_int IMPORTING output = ls_orderadm_i-number_int. ls_orderadm_i-ordered_prod = gw_item-item_product_id. ls_orderadm_i-number_parent = gw_item-item_high_level. IF gw_item-item_high_level IS NOT INITIAL. READ TABLE item INTO gv_item WITH KEY guid = gw_item-guid item_number = gw_item-item_high_level. IF sy-subrc = 0. ls_orderadm_i-parent = gv_item-guid. ENDIF. ENDIF. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = ls_orderadm_i-ordered_prod IMPORTING output = ls_orderadm_i-ordered_prod. ls_orderadm_i-description = gw_item-item_product_des. ls_orderadm_i-zzzserialno = gw_item-item_serial_no. ls_orderadm_i-zzzserialno1 = gw_item-item_serial_no_1. ls_orderadm_i-zzzserialno2 = gw_item-item_serial_no_2. ls_orderadm_i-zzorderadm_i0403 = gw_item-zzorderadm_i0403. ls_orderadm_i-zzorderadm_i0404 = gw_item-zzorderadm_i0404. ls_orderadm_i-zzorderadm_i0405 = gw_item-item_imei_1. ls_orderadm_i-zzorderadm_i0406 = gw_item-item_imei_1. ls_orderadm_i-zzzcustmodeno = gw_item-zzzmodeno. ls_orderadm_i-zzplant = gw_item-item_plant. ls_orderadm_i-zzlgort = gw_item-item_storage_loc. ls_orderadm_i-zzcrm04p = gw_item-exre_reason. ls_orderadm_i-zzpurc_date = gw_item-purchase_date. ls_orderadm_i-zzreturn_process = gw_item-zzreturn_process. ls_orderadm_i-zzzgroup = gw_item-zzzgroup. ls_orderadm_i-zzzbrand = gw_item-zzzbrand. ls_orderadm_i-zzsymp_grou = gw_item-zzsymp_grou. ls_orderadm_i-zzsymp_code = gw_item-zzsymp_code. ls_orderadm_i-zzzremark = gw_item-zzzremark. ls_orderadm_i-zzorderadm_i0407 = gw_item-item_zzorderadm_i0407. ls_orderadm_i-zzref_exh_date = gw_item-item_zzref_exh_date. ls_orderadm_i-zzsymp_text = gw_item-item_zzsymp_text. ls_orderadm_i-partner_prod = gw_item-item_partner_prod. ls_orderadm_i-ZZORDERADM_I0412 = gw_item-ZZORDERADM_I0412."ADD BY LY 20181018 批次 ls_orderadm_i-zzzclnt_price = gw_item-zzzclnt_price / 100. ls_orderadm_i-zzafld00001d = 'JPY'. ls_orderadm_i-zzzrtl_price = gw_item-zzzrtl_price / 100. ls_orderadm_i-zzafld00001g = 'JPY'. ls_orderadm_i-zzzsp_price = gw_item-zzzsp_price / 100. ls_orderadm_i-zzafld00001f = 'JPY'. IF gw_item-mode = 'D'. ls_orderadm_i-mode = 'D'. ENDIF. INSERT ls_orderadm_i INTO TABLE lt_orderadm_i. ls_field_names-fieldname = 'DESCRIPTION'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ITM_TYPE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ORDERED_PROD'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'MODE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ITM_PROC_IDENT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'NUMBER_INT'. INSERT ls_field_names INTO TABLE lt_field_names. READ TABLE itemx INTO gw_itemx WITH KEY guid = gw_item-guid. IF sy-subrc = 0. IF gw_itemx-item_high_level = 'X'. ls_field_names-fieldname = 'NUMBER_PARENT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_serial_no = 'X'. ls_field_names-fieldname = 'ZZZSERIALNO'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_serial_no_1 = 'X'. ls_field_names-fieldname = 'ZZZSERIALNO1'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_serial_no_2 = 'X'. ls_field_names-fieldname = 'ZZZSERIALNO2'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzmodeno = 'X'. ls_field_names-fieldname = 'ZZZCUSTMODENO'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_plant = 'X'. ls_field_names-fieldname = 'ZZPLANT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_storage_loc = 'X'. ls_field_names-fieldname = 'ZZLGORT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-exre_reason = 'X'. ls_field_names-fieldname = 'ZZCRM04P'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-purchase_date = 'X'. ls_field_names-fieldname = 'ZZPURC_DATE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzorderadm_i0403 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0403'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzorderadm_i0404 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0404'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_imei_1 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0405'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_imei_2 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0406'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzreturn_process = 'X'. ls_field_names-fieldname = 'ZZRETURN_PROCESS'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzgroup = 'X'. ls_field_names-fieldname = 'ZZZGROUP'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzbrand = 'X'. ls_field_names-fieldname = 'ZZZBRAND'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzsymp_grou = 'X'. ls_field_names-fieldname = 'ZZSYMP_GROU'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzsymp_code = 'X'. ls_field_names-fieldname = 'ZZSYMP_CODE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzremark = 'X'. ls_field_names-fieldname = 'ZZZREMARK'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_zzorderadm_i0407 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0407'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_zzref_exh_date = 'X'. ls_field_names-fieldname = 'ZZREF_EXH_DATE'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_zzsymp_text = 'X'. ls_field_names-fieldname = 'ZZSYMP_TEXT'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-item_partner_prod = 'X'. ls_field_names-fieldname = 'PARTNER_PROD'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzorderadm_i0412 = 'X'. ls_field_names-fieldname = 'ZZORDERADM_I0412'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzclnt_price = 'X'. ls_field_names-fieldname = 'ZZZCLNT_PRICE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ZZAFLD00001D'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzrtl_price = 'X'. ls_field_names-fieldname = 'ZZZRTL_PRICE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ZZAFLD00001G'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-zzzsp_price = 'X'. ls_field_names-fieldname = 'ZZZSP_PRICE'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'ZZAFLD00001F'. INSERT ls_field_names INTO TABLE lt_field_names. ENDIF. IF gw_itemx-rejection = 'X'. CLEAR:ls_sales. ls_sales-ref_guid = gw_item-guid. ls_sales-ref_kind = 'B'. ls_sales-rejection = gw_item-rejection." INSERT ls_sales INTO TABLE lt_sales. ls_input_field-ref_guid = gw_item-guid. ls_input_field-ref_kind = 'B'. ls_input_field-objectname = 'SALES'. ls_field_names-fieldname = 'REJECTION'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-field_names = lt_field_names. INSERT ls_input_field INTO TABLE lt_input_field. CLEAR: lt_field_names. ENDIF. ENDIF. ls_input_field-field_names = lt_field_names. ls_input_field-ref_guid = gw_item-guid. ls_input_field-ref_kind = 'B'. ls_input_field-objectname = 'ORDERADM_I'. INSERT ls_input_field INTO TABLE lt_input_field. REFRESH:lt_pric_cond,lt_pric_chag. CLEAR:ls_pridoc. LOOP AT price INTO gw_price WHERE ref_guid = gw_item-guid. ot_price[] = ow_cond-pric_cond[]."add by ly 20180124 SORT ot_price[] BY kposn kschl stunr zaehk DESCENDING. READ TABLE ot_price INTO ow_price WITH KEY kposn = gw_item-guid kschl = gw_price-kschl. IF sy-subrc = 0. ls_pric_chag-stunr = ow_price-stunr. ls_pric_chag-zaehk = ow_price-zaehk. ls_pric_chag-kbetr = gw_price-kbetr. IF head-sales_org = 'O 50000231'. ls_pric_chag-kbetr = ls_pric_chag-kbetr / 100. ENDIF. ls_pric_chag-kpein = 1. ls_pric_chag-kmein = ow_price-kmein. INSERT ls_pric_chag INTO TABLE lt_pric_chag. ls_pridoc-cond_change[] = lt_pric_chag[]. ELSE. ls_pric_cond-kschl = gw_price-kschl. ls_pric_cond-kbetr = gw_price-kbetr. ls_pric_cond-kwert = gw_price-kwert. IF head-sales_org = 'O 50000231'. ls_pric_cond-kbetr = ls_pric_cond-kbetr / 100. ls_pric_cond-kwert = ls_pric_cond-kwert / 100. ENDIF. INSERT ls_pric_cond INTO TABLE lt_pric_cond. ls_pridoc-cond_add[] = lt_pric_cond[]. ENDIF. ls_pridoc-ref_guid = gw_item-guid. ls_pridoc-ref_kind = 'B'. INSERT ls_pridoc INTO TABLE lt_pridoc. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_field_names-fieldname = 'KSCHL'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KBETR'. INSERT ls_field_names INTO TABLE lt_field_names. ls_field_names-fieldname = 'KWERT'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-ref_guid = gw_item-guid. ls_input_field-ref_kind = 'B'. ls_input_field-objectname = 'PRIDOC'. ls_input_field-field_names = lt_field_names. INSERT ls_input_field INTO TABLE lt_input_field. ENDLOOP. ENDLOOP. *E**************************ITEM ******************************************** *B**************************PRICING ******************************************** IF headx-price_list = 'X'. ls_pricing-ref_guid = head-guid. ls_pricing-price_list = head-price_list. ls_pricing-ref_kind = 'A'. INSERT ls_pricing INTO TABLE lt_pricing. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_field_names-fieldname = 'PRICE_LIST'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'A'. ls_input_field-objectname = 'PRICING'. ls_input_field-field_names = lt_field_names. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. LOOP AT item INTO gw_item. IF gw_item-price_list IS NOT INITIAL. ls_pricing-ref_guid = gw_item-guid. ls_pricing-price_list = gw_item-price_list. ls_pricing-ref_kind = 'B'. INSERT ls_pricing INTO TABLE lt_pricing. CLEAR: ls_input_field, ls_field_names, lt_field_names. ls_field_names-fieldname = 'PRICE_LIST'. INSERT ls_field_names INTO TABLE lt_field_names. ls_input_field-ref_guid = head-guid. ls_input_field-ref_kind = 'B'. ls_input_field-objectname = 'PRICING'. ls_input_field-field_names = lt_field_names. INSERT ls_input_field INTO TABLE lt_input_field. ENDIF. ENDLOOP. *E**************************PRICING ******************************************** CALL FUNCTION 'CRM_ORDER_MAINTAIN' EXPORTING it_activity_h = lt_activity_h it_sales = lt_sales it_text = lt_text it_status = lt_status it_service_os = lt_service_os it_service_h = lt_service_h it_customer_h = lt_customer_h it_service_i = lt_service_i it_pricing = lt_pricing it_appointment = lt_appointment it_schedlin_i = lt_schedlin_i it_product_i = lt_product_i it_orgman = lt_orgman it_partner = lt_partner it_pridoc = lt_pridoc CHANGING ct_orderadm_h = lt_orderadm_h ct_orderadm_i = lt_orderadm_i ct_input_fields = lt_input_field EXCEPTIONS error_occurred = 1 document_locked = 2 no_change_allowed = 3 no_authority = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO error_log. error_type = 'E'. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF. CHECK error_type <> 'E'. CLEAR:lt_exception. is_objects_to_save = head-guid. INSERT is_objects_to_save INTO TABLE it_objects_to_save. CALL FUNCTION 'CRM_ORDER_SAVE' EXPORTING it_objects_to_save = it_objects_to_save IMPORTING et_saved_objects = lt_saved_objects et_exception = lt_exception et_objects_not_saved = lt_objects_not_saved EXCEPTIONS document_not_saved = 1 OTHERS = 2. IF lt_objects_not_saved IS NOT INITIAL. error_type = 'E'. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO error_log. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'. CALL FUNCTION 'CRM_ORDER_DEQUEUE' EXPORTING iv_guid = head-guid. READ TABLE lt_saved_objects INTO ls_saved_objects INDEX 1. error_type = 'S'. IF head-object_id IS INITIAL. MESSAGE s322(zcrm_msg) WITH ls_saved_objects-object_id INTO error_log. ELSE. MESSAGE s368(zcrm_msg) WITH ls_saved_objects-object_id INTO error_log. ENDIF. * error_log = 'Create Order:' && ls_saved_objects-object_id && ' successful'. object_o = ls_saved_objects-object_id. REFRESH: tk_orderadm_h, lt_orderadm_h, lt_input_field, it_objects_to_save, lt_saved_objects. CLEAR: tk_orderadm_h, wk_orderadm_h, lt_orderadm_h, ls_orderadm_h, lt_input_field, it_objects_to_save, lt_saved_objects. ENDIF. CALL FUNCTION 'CRM_ORDER_INITIALIZE' EXPORTING it_guids_to_init = lt_guid_init EXCEPTIONS error_occurred = 1 OTHERS = 2. IF sy-subrc <> 0. * MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno * WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO error_log. * error_type = sy-msgty. ENDIF. IF head-prov_guid IS NOT INITIAL."关联前序订单 CALL FUNCTION 'ZCRM_CREATE_DOC_FLOW' IN BACKGROUND TASK EXPORTING iv_guid_a = head-prov_guid iv_guid_b = head-guid iv_order_guid = head-guid. COMMIT WORK. ENDIF. ENDFUNCTION.