zoukankan      html  css  js  c++  java
  • CRM函数CRM_ORDER_MAINTAIN封装

    抬头结构:ZCRM_MAINTAIN_H

    flag header:

    项目表:ZCRM_MAINTAIN_I

    合作伙伴:ZCRM_MAINTAIN_P

     

    price:ZCRM_MAINTAIN_PR

    FUNCTION zcrm_order_maintain_bk.
    *"----------------------------------------------------------------------
    *"*"Local Interface:
    *"  IMPORTING
    *"     VALUE(HEAD) TYPE  ZCRM_MAINTAIN_H OPTIONAL
    *"     VALUE(HEADX) TYPE  ZCRM_MAINTAIN_HX OPTIONAL
    *"  EXPORTING
    *"     REFERENCE(ERROR_TYPE) TYPE  STRING
    *"     REFERENCE(ERROR_LOG) TYPE  STRING
    *"     REFERENCE(OBJECT_O) TYPE  CRMT_OBJECT_ID
    *"  TABLES
    *"      ITEM STRUCTURE  ZCRM_MAINTAIN_I OPTIONAL
    *"      ITEMX STRUCTURE  ZCRM_MAINTAIN_IX OPTIONAL
    *"      PARTNER STRUCTURE  ZCRM_MAINTAIN_P OPTIONAL
    *"      PARTNERX STRUCTURE  ZCRM_MAINTAIN_PX OPTIONAL
    *"      PRICE STRUCTURE  ZCRM_MAINTAIN_PR OPTIONAL
    *"      PRICEX STRUCTURE  ZCRM_MAINTAIN_PRX OPTIONAL
    *"----------------------------------------------------------------------
    
      DATA : lv_text(800) TYPE c.
      DATA:
        wk_orderadm_h     TYPE crmt_orderadm_h_wrk,
        tk_orderadm_h     TYPE crmt_orderadm_h_wrkt,
        wk_schedlin       TYPE crmt_schedlin_wrk,
        tk_schedlin       TYPE crmt_schedlin_wrkt,
        wk_status         TYPE crmt_status_wrk,
        tk_status         TYPE crmt_status_wrkt,
        ls_service_os     TYPE crmt_srv_osset_com,
        lt_service_os     TYPE crmt_srv_osset_comt,
        wk_osset          TYPE crmt_srv_osset_wrk1,
        tk_osset          TYPE crmt_srv_osset_wrkt1,
        ls_text           TYPE crmt_text_com,
        lt_text           TYPE crmt_text_comt,
        ls_sales          TYPE crmt_sales_com,
        lt_sales          TYPE crmt_sales_comt,
        ls_partner        TYPE crmt_partner_com,
        lt_partner        TYPE crmt_partner_comt,
        gt_partner        TYPE crmt_partner_comt,
        ls_appointment    TYPE crmt_appointment_com,
        lt_appointment    TYPE crmt_appointment_comt,
        wk_refobject      TYPE crmt_srv_refobj_wrk,
        tk_refobject      TYPE crmt_srv_refobj_wrkt,
        wk_srv_subject    TYPE crmt_srv_subject_wrk,
        tk_srv_subject    TYPE crmt_srv_subject_wrkt,
        ls_osset          TYPE crmt_srv_osset_com1,
        lt_osset          TYPE crmt_srv_osset_comt1,
        ls_refobject      TYPE crmt_srv_refobj_com,
        lt_refobject      TYPE crmt_srv_refobj_comt,
        ls_service_h      TYPE crmt_service_h_com,
        lt_service_h      TYPE crmt_service_h_comt,
        ls_customer_h     TYPE crmt_customer_h_com,
        lt_customer_h     TYPE crmt_customer_h_comt,
        ls_service_i      TYPE crmt_service_i_com,
        lt_service_i      TYPE crmt_service_i_comt,
        ls_pricing        TYPE crmt_pricing_com,
        lt_pricing        TYPE crmt_pricing_comt,
        ls_schedlin_extdt TYPE crmt_schedlin_extd,
        lt_schedlin_extdt TYPE crmt_schedlin_extdt,
        ls_orderadm_i     TYPE crmt_orderadm_i_com,
        lt_orderadm_i     TYPE crmt_orderadm_i_comt,
        ls_product_i      TYPE crmt_product_i_com,
        lt_product_i      TYPE crmt_product_i_comt,
        ls_schedlin_i     TYPE crmt_schedlin_i_com,
        lt_schedlin_i     TYPE crmt_schedlin_i_comt,
        ls_pric_cond      TYPE prct_cond_external_input,
        lt_pric_cond      TYPE prct_cond_external_input_t,
        lt_pric_chag      TYPE prct_cond_external_change_t, "add by ly 20180124
        ls_pric_chag      TYPE prct_cond_external_change,
        ls_pridoc         TYPE crmt_pridoc_com,
        lt_pridoc         TYPE crmt_pridoc_comt.
      DATA: wk_header             TYPE  crmt_object_guid_tab.
      DATA: ls_orderadm_h TYPE crmt_orderadm_h_com,
            lt_orderadm_h TYPE crmt_orderadm_h_comt,
            vs_orderadm_h TYPE crmt_orderadm_h_com,
            vt_orderadm_h TYPE crmt_orderadm_h_comt,
            ls_doc_flow   TYPE crmt_doc_flow_com,
            lt_doc_flow   TYPE crmt_doc_flow_comt,
            ls_orgman     TYPE crmt_orgman_com,
            lt_orgman     TYPE crmt_orgman_comt,
            ls_status     TYPE crmt_status_com,
            lt_status     TYPE crmt_status_comt,
            lt_error_log  TYPE zerror_log_tab,
            ls_error_log  TYPE zerror_log.
      DATA: w_orderadm_h          TYPE crmd_orderadm_h.
      "定义全局时区,根据销售组织来判断
      DATA:gv_zonlo TYPE syst_zonlo.
      DATA:gv_date  TYPE datum,
           gv_time  TYPE uzeit,
           gv_timez TYPE comt_created_at_usr.
    
      DATA: l_len               TYPE i,
            l_start             TYPE i,
            l_char_tmp(130)     TYPE c,
            l_handle            TYPE crmt_handle,
            ls_ztakg_num_upload TYPE ztakg_num_upload,
            l_ref_guid(16)      TYPE c,
            l_mode              TYPE crmt_mode,
            l_partner           TYPE bu_partner.
    
      DATA: ls_input_field  TYPE crmt_input_field.
      DATA: lt_input_field  TYPE crmt_input_field_tab.
      DATA: gt_input_field  TYPE crmt_input_field_tab.
      DATA: lt_field_names  TYPE crmt_input_field_names_tab.
      DATA: ls_field_names  TYPE crmt_input_field_names.
    
      DATA: lt_exception         TYPE crmt_exception_t,
            it_objects_to_save   TYPE crmt_object_guid_tab,
            is_objects_to_save   TYPE LINE OF crmt_object_guid_tab,
            lt_saved_objects     TYPE crmt_return_objects,
            ls_saved_objects     TYPE crmt_return_objects_struc,
            lt_objects_not_saved TYPE crmt_object_guid_tab,
            ls_objects_not_saved TYPE crmt_object_guid.
      DATA: gt_ltxts TYPE STANDARD TABLE OF tline .
      DATA: lw_ltxt  TYPE tline .
    
      CLEAR: ls_input_field, lt_input_field,
             ls_field_names, lt_field_names.
    
      DATA:gt_tj30t   TYPE TABLE OF tj30t,
           gw_tj30t   LIKE LINE OF gt_tj30t,
           gw_profile TYPE crmc_proc_type,
           gw_index   TYPE zhsb_order_index,
           gw_sale    TYPE zhsb_sales_index.
      DATA: lv_productguid TYPE comt_product_guid.
      DATA: ls_hierarchy   TYPE comm_hierarchy.
      DATA: ls_prprdcatr   TYPE comm_prprdcatr.
      DATA: lt_pr_frg_rel  TYPE TABLE OF comm_pr_frg_rel.
      DATA: ls_addsettype  TYPE zaddsettype.
      DATA: lt_addsettype  TYPE TABLE OF zaddsettype.
      DATA:gw_zbp_sales TYPE zbp_sales,
           gw_item      TYPE zcrm_maintain_i,
           gv_item      TYPE zcrm_maintain_i,
           gw_itemx     TYPE zcrm_maintain_ix,
           gw_partner   TYPE zcrm_maintain_p,
           gw_partnerx  TYPE zcrm_maintain_px,
           gw_price     TYPE zcrm_maintain_pr,
           gw_pricex    TYPE zcrm_maintain_prx,
           gt_dd03l     TYPE TABLE OF dd03l,
           gw_dd03l     LIKE LINE OF gt_dd03l.
      DATA:lt_guid_init TYPE crmt_object_guid_tab,
           ls_guid_init LIKE LINE OF lt_guid_init.
      DATA:
        lv_sum_crmt_schedlin_quan TYPE crmt_schedlin_quan,
        lv_sum_prct_cond_rate     TYPE  prct_cond_rate,
        lv_zsrv_mileage_fee       TYPE flag,
        lt_zsrvt_mil_rule02       TYPE TABLE OF zsrvt_mil_rule02,
        ls_zsrvt_mil_rule02       TYPE zsrvt_mil_rule02,
        ls_zsrvt_mil_rule01       TYPE zsrvt_mil_rule01.
    
      "取order数据定义
      DATA:ot_header   TYPE  crmt_object_guid_tab,
           ow_header   TYPE crmt_object_guid,
           ot_order_h  TYPE crmt_orderadm_h_wrkt,
           ot_schedlin TYPE crmt_schedlin_wrkt,
           ow_schedlin TYPE crmt_schedlin_wrk,
           ot_cond     TYPE crmt_pric_cond_t,
           ow_cond     TYPE crmt_pric_cond,
           ot_price    TYPE prct_cond_du_tab,
           ow_price    TYPE prct_cond_du,
           ot_partner  TYPE crmt_partner_external_wrkt,
           ow_partner  TYPE crmt_partner_external_wrk,
           ow_text     TYPE crmt_text_wrk,
           ot_text     TYPE crmt_text_wrkt.
      FIELD-SYMBOLS:<fs>      TYPE any,
                    <fsx>     TYPE any,
                    <partner> TYPE any.
    
    
      CHECK head-guid IS NOT INITIAL.
      REFRESH:lt_guid_init.
      ls_guid_init = head-guid.
      APPEND ls_guid_init TO lt_guid_init.
    
      SELECT SINGLE * INTO gw_index FROM zhsb_order_index WHERE guid = head-guid.
      IF sy-subrc = 0.
        SELECT SINGLE * INTO gw_profile FROM crmc_proc_type WHERE process_type = gw_index-process_type.
      ELSE.
        SELECT SINGLE * INTO gw_sale FROM zhsb_sales_index WHERE guid = head-guid.
        IF sy-subrc = 0.
          SELECT SINGLE * INTO gw_profile FROM crmc_proc_type WHERE process_type = gw_sale-process_type.
        ELSE.
          SELECT SINGLE * INTO gw_profile FROM crmc_proc_type WHERE process_type = head-order_type.
        ENDIF.
      ENDIF.
    
      SELECT * INTO TABLE gt_tj30t FROM tj30t WHERE stsma = gw_profile-user_stat_proc AND spras = 'E'.
    
    
      ls_orderadm_h-guid              = head-guid.
      "******************************HEAD*************************BEGIN
      "CUSTOMER_MODEL
      IF headx-customer_model = 'X'.
    *    CONCATENATE head-factory_model head-customer_model INTO ls_orderadm_h-zzzmodeno SEPARATED BY '.'.
        ls_orderadm_h-zzzmodeno = head-customer_model.
        ls_field_names-fieldname = 'ZZZMODENO'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "FACTORY_MODEL
      IF headx-factory_model = 'X'.
        ls_orderadm_h-zzfld00000h = head-factory_model.
        ls_field_names-fieldname = 'ZZFLD00000H'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "DELAYREASONCODE
      IF headx-delayreasoncode = 'X'.
        ls_orderadm_h-zzafld000002 = head-delayreasoncode.
        ls_field_names-fieldname = 'ZZAFLD000002'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "UNSOLVEDCODE
      IF headx-unsolvedcode = 'X'.
        ls_orderadm_h-zzafld000003 = head-unsolvedcode.
        ls_field_names-fieldname = 'ZZAFLD000003'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "WARRANTY
      IF headx-warrantype = 'X'.
        ls_orderadm_h-zzwarranty = head-warrantype.
        ls_field_names-fieldname = 'ZZWARRANTY'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "SERIALNO
      IF headx-serialno = 'X'.
        ls_orderadm_h-zzzserialno = head-serialno.
        ls_field_names-fieldname = 'ZZZSERIALNO'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "SERIALNO1
      IF headx-zzzserialno1 = 'X'.
        ls_orderadm_h-zzzserialno1 = head-zzzserialno1.
        ls_field_names-fieldname = 'ZZZSERIALNO1'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "SERIALNO2
      IF headx-zzzserialno2 = 'X'.
        ls_orderadm_h-zzzserialno2 = head-zzzserialno2.
        ls_field_names-fieldname = 'ZZZSERIALNO2'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "SYMPTOMS_CODE
      IF headx-symptoms_code = 'X'.
        ls_orderadm_h-zzzsymptomscode = head-symptoms_code.
        ls_field_names-fieldname = 'ZZZSYMPTOMSCODE'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "SYMPTOMS_CODE_G
      IF headx-symptoms_code_g = 'X'.
        ls_orderadm_h-zzzsymptomsgroup = head-symptoms_code_g.
        ls_field_names-fieldname = 'ZZZSYMPTOMSGROUP'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "DEFECT_CODE
      IF headx-defect_code = 'X'.
        ls_orderadm_h-zzzdefectcode = head-defect_code.
        ls_field_names-fieldname = 'ZZZDEFECTCODE'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "DEFECT_CODE_G
      IF headx-defect_code_g = 'X'.
        ls_orderadm_h-zzzdefectgroup = head-defect_code_g.
        ls_field_names-fieldname = 'ZZZDEFECTGROUP'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "REPAIR_CODE
      IF headx-repair_code = 'X'.
        ls_orderadm_h-zzzrepaircode = head-repair_code.
        ls_field_names-fieldname = 'ZZZREPAIRCODE'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "REPAIR_CODE_G
      IF headx-repair_code_g = 'X'.
        ls_orderadm_h-zzzrepairgroup = head-repair_code_g.
        ls_field_names-fieldname = 'ZZZREPAIRGROUP'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "HEAD DESCRIPTION
      IF headx-problem_des = 'X'.
        ls_orderadm_h-description = head-problem_des.
        ls_field_names-fieldname = 'DESCRIPTION'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "ORDER TYPE
      IF headx-order_type = 'X'.
        ls_orderadm_h-process_type = head-order_type.
        ls_field_names-fieldname = 'PROCESS_TYPE'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "CREATE USER
      IF headx-create_user = 'X'.
        ls_orderadm_h-created_by = head-create_user.
        ls_field_names-fieldname = 'CREATED_BY'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "POSTING DATE
      IF headx-create_date = 'X'.
        ls_orderadm_h-posting_date = sy-datum.
        ls_field_names-fieldname = 'POSTING_DATE'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ELSE.
        IF headx-posting_date = 'X'.
          ls_orderadm_h-posting_date = head-posting_date.
          ls_field_names-fieldname = 'POSTING_DATE'.
          INSERT ls_field_names INTO TABLE lt_field_names.
        ENDIF.
      ENDIF.
    
      "PRODUCT ID->group brand
      IF headx-product_id = 'X'.
        SELECT SINGLE product_guid INTO  lv_productguid
          FROM comm_product
          WHERE product_id = head-product_id.
        SELECT SINGLE *
          FROM comm_hierarchy
          INTO ls_hierarchy
          WHERE hierarchy_id = 'R3PRODHIER'.
        IF sy-subrc = 0.
          CLEAR ls_prprdcatr.
          SELECT SINGLE  * INTO CORRESPONDING FIELDS OF  ls_prprdcatr
            FROM comm_prprdcatr
            WHERE product_guid = lv_productguid
            AND hierarchy_guid = ls_hierarchy-hierarchy_guid.
          ls_orderadm_h-zzzgroup    = ls_prprdcatr-category_id+0(1).
          ls_orderadm_h-zzzbrand    = ls_prprdcatr-category_id+1(2).
        ENDIF.
    
        ls_field_names-fieldname = 'ZZZGROUP'.
        INSERT ls_field_names INTO TABLE lt_field_names.
        ls_field_names-fieldname = 'ZZZBRAND'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      IF headx-zzzgroup = 'X'.
        DELETE lt_field_names WHERE fieldname = 'ZZZGROUP'.
        ls_orderadm_h-zzzgroup = head-zzzgroup.
        ls_field_names-fieldname = 'ZZZGROUP'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      IF headx-zzzbrand = 'X'.
        DELETE lt_field_names WHERE fieldname = 'ZZZBRAND'.
        ls_orderadm_h-zzzbrand = head-zzzbrand.
        ls_field_names-fieldname = 'ZZZBRAND'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
    
      "SERVICE_TYPE
      IF headx-service_type = 'X'.
        ls_orderadm_h-zzfld00000n = head-service_type.
        ls_field_names-fieldname = 'ZZFLD00000N'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "IN_PROGRESS
      IF headx-in_progress = 'X'.
        ls_orderadm_h-zzdlyrsn = head-in_progress.
        ls_field_names-fieldname = 'ZZDLYRSN'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "ZZIMEI
      IF headx-zzimei = 'X'.
        ls_orderadm_h-zzimei = head-zzimei.
        ls_field_names-fieldname = 'ZZIMEI'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "ZZIMEI1
      IF headx-zzimei1 = 'X'.
        ls_orderadm_h-zzimei1 = head-zzimei1.
        ls_field_names-fieldname = 'ZZIMEI1'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "COLLECT_POINT
      IF headx-collect_point = 'X'.
        ls_orderadm_h-zzafld000008 = head-collect_point.
        ls_field_names-fieldname = 'ZZAFLD000008'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "TRACKING_NO_FR_COM
      IF headx-tracking_no_fr_com = 'X'.
        ls_orderadm_h-zzafld000000 = head-tracking_no_fr_com.
        ls_field_names-fieldname = 'ZZAFLD000000'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "TRACKING_NO_FR
      IF headx-tracking_no_fr = 'X'.
        ls_orderadm_h-zzztracksent = head-tracking_no_fr.
        ls_field_names-fieldname = 'ZZZTRACKSENT'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "TRACKING_NO_TO_COM
      IF headx-tracking_no_to_com = 'X'.
        ls_orderadm_h-zzafld000001 = head-tracking_no_to_com.
        ls_field_names-fieldname = 'ZZAFLD000001'.
        INSERT ls_field_names INTO TABLE lt_field_names.
      ENDIF.
      "TRACKING_NO_TO
      IF headx-tracking_no_to = 'X'.
        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.
  • 相关阅读:
    通联支付相关注意事项
    账号配置vue版本的扫码下单以及对店铺进行装修的步骤
    银盒子扫码下单在线订单开启商品售卖时段使用说明
    ERP承接新后台优惠规则问题
    简易付安装后无法使用
    ASP.NET没有魔法——ASP.NET Identity 的“多重”身份验证代码篇
    ASP.NET没有魔法——ASP.NET Identity 的“多重”身份验证
    ASP.NET没有魔法——ASP.NET MVC 过滤器(Filter)
    ASP.NET没有魔法——ASP.NET Identity与授权
    ASP.NET没有魔法——ASP.NET Identity的加密与解密
  • 原文地址:https://www.cnblogs.com/sapSB/p/7770890.html
Copyright © 2011-2022 走看看