您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页ABAP 工艺路线,新增,删除,修改 BAPI CPCC_S_TASK_LIST_MAINTAIN ,项目代码记录,分享给大家

ABAP 工艺路线,新增,删除,修改 BAPI CPCC_S_TASK_LIST_MAINTAIN ,项目代码记录,分享给大家

来源:华佗养生网
FUNCTION z_fmpp061.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(INPUT) TYPE  ZCLMT_PP061_ROUTE_SAP_REQ OPTIONAL
*"     VALUE(IV_MSGID) TYPE  ZEMSGID OPTIONAL
*"     VALUE(IS_CONFIG) TYPE  ZCMT0001 OPTIONAL
*"  EXPORTING
*"     VALUE(OUTPUT) TYPE  ZCLMT_PP061_ROUTE_SAP_RES
*"     VALUE(ES_IFMSG) TYPE  ZCMS0001
*"----------------------------------------------------------------------
*----------------------------------------------------------------------*
* PROGRAM ID          : RICEF-PP-061                                   *
* APPLICATION NAME    : PP                                             *
* AUTHOR              : CG018                                          *
* TRANSACTION         : N/A                                            *
* PROGRAM TYPE        : Interface                                      *
* INPUT FILES         : N/A                                            *
* OUTPUT FILES        : N/A                                            *
* Development class   : ZDEV                                           *
* Message class       : N/A                                            *
* DESCRIPTION         : MES-SAP 工艺路线主数据同步接口                 *
*----------------------------------------------------------------------*
*  000  2024/08/25   NEW PROGRAM                                       *
*----------------------------------------------------------------------*

  "BAPI所需参数定义
  DATA:lv_maintain_mode   TYPE cp_task_list_maint_mode,
       lv_flag_bar        TYPE cp_task_list_maint_pointer,
       lv_no              TYPE plnfolge,
       lv_change_no       TYPE cps_task_list_maint_hdr-change_no,
       lv_key_date        TYPE cps_task_list_maint_hdr-key_date,
       lv_task_list_group TYPE cps_task_list_maint_hdr-task_list_group,
       lv_group_counter   TYPE cps_task_list_maint_hdr-group_counter,
       lv_list_type       TYPE cps_task_list_maint_hdr-task_list_type,
       lv_material        TYPE cps_task_list_maint_hdr-material,
       lv_bom_usage       TYPE stlan,
       lv_plant           TYPE cps_task_list_maint_hdr-plant,
       ls_task            TYPE cps_task_list_maint_tsk,
       ls_task_x          TYPE cps_task_list_maint_tsk_x,
       lt_material_task   TYPE cpt_task_list_maint_mtk,
       ls_material_task   TYPE cps_task_list_maint_mtk,
       lt_material_task_x TYPE cpt_task_list_maint_mtk_x,
       ls_material_task_x TYPE cps_task_list_maint_mtk_x,
       lt_operations      TYPE cpt_task_list_maint_opr,
       ls_operations      TYPE cps_task_list_maint_opr,
       lt_operations_x    TYPE cpt_task_list_maint_opr_x,
       ls_operations_x    TYPE cps_task_list_maint_opr_x,
       lt_return          TYPE bapiret2_t,
       ls_return          TYPE bapiret2.

  DATA:lv_msg TYPE char220.
  DATA:lv_line1 TYPE n.
  DATA:lv_line2 TYPE n.
  DATA:lv_check TYPE flag.
  DATA:lt_werks TYPE STANDARD TABLE OF zscmwerks.
  DATA:ls_log TYPE ztpp061_log.
  DATA:lt_opr TYPE  capp_opr OCCURS 0,
       lt_com TYPE  capp_com OCCURS 0.
  "数据校验
  CALL FUNCTION 'Z_FM_CM_CHECK_SYSTEM_COMPANY'
    EXPORTING
      im_system    = 'MES' "传入系统
      im_flg_werks = abap_on
      im_flg_vkorg = abap_on
    TABLES
      it_werks     = lt_werks.


  IF lt_werks IS NOT INITIAL.
    SELECT * FROM plpo INTO TABLE @DATA(lt_plpo).
    LOOP AT input-mt_pp061_route_sap_req-head ASSIGNING FIELD-SYMBOL(<fs_head>).
      READ TABLE lt_werks TRANSPORTING NO FIELDS WITH KEY werks = <fs_head>-werks.
      IF sy-subrc = 0.
        "抬头数据
        CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
          EXPORTING
            input        = <fs_head>-matnr
          IMPORTING
            output       = <fs_head>-matnr
          EXCEPTIONS
            length_error = 1
            OTHERS       = 2.

        "创建工艺路线
        lv_key_date        = <fs_head>-datuv."有效开始日
        lv_task_list_group = <fs_head>-plnnr."工艺路线组号(新增的情况为固定空)
        lv_group_counter   = <fs_head>-plnal."工艺路线计数器 (新增的情况为固定空)
        lv_material        = <fs_head>-matnr."物料编码
        lv_plant           = <fs_head>-werks."工厂
        lv_list_type       = <fs_head>-plnty ."任务清单类型固定值“N”
        lv_bom_usage       = <fs_head>-verwe."工艺路线用途 1”(生产)

        "通过BAPI创建工艺路线,需要不同的赋值条件。
        IF  <fs_head>-zflg = '1'..

          IF lv_bom_usage IS NOT INITIAL.
            ls_task-task_list_usage     = lv_bom_usage.
            ls_task_x-task_list_usage   = abap_on.
          ENDIF.
          IF lv_plant IS NOT INITIAL.
            ls_task-plant               = lv_plant.
            ls_task_x-plant             = abap_on.
          ENDIF.
          "工艺路线描述
          IF <fs_head>-ktext IS NOT INITIAL.
            ls_task-description         = <fs_head>-ktext.
            ls_task_x-description       = abap_on.
          ENDIF.
          ls_task-task_list_status    = '1'.
          ls_task_x-task_list_status  = abap_true.
          ls_task-task_measure_unit   = 'EA'.
          ls_task_x-task_measure_unit = abap_true.
          ls_task-lot_size_to         = '99999999'.
          ls_task_x-lot_size_to       = abap_true.
          lv_maintain_mode = 'C'.

*   Material routing assignment
          ls_material_task-maintain_mode = lv_maintain_mode.
          ls_material_task-material      = <fs_head>-matnr.
          ls_material_task-plant         = <fs_head>-werks.
          APPEND ls_material_task TO lt_material_task.
        ENDIF.

        "读取工艺路线工序数据
        CALL FUNCTION 'CARO_ROUTING_READ'
          EXPORTING
            date_from      = sy-datum
            plnty          = 'N'
            plnnr          = lv_task_list_group "任务清单类型
            plnal          = lv_group_counter "任务清单类型
            matnr          = lv_material
            buffer_del_flg = 'X'
          TABLES
            opr_tab        = lt_opr  "工序数据(每道工序的控制码,工作中心,时间等)
            com_tab        = lt_COM "工艺路线的组件
          EXCEPTIONS
            not_found      = 1
            ref_not_exp    = 2
            not_valid      = 3
            no_authority   = 4
            OTHERS         = 5.

        IF sy-subrc <> 0.
        ENDIF.

        DESCRIBE TABLE lt_opr LINES lv_line2."获取行数
        DESCRIBE TABLE <fs_head>-item LINES lv_line1."获取行数


        IF <fs_head>-zflg = '2'.."本程序需要三种不同的逻辑进行处理

          IF lv_line2 = lv_line1.  "当行数一致时全部数据进行更新
            LOOP AT <fs_head>-item ASSIGNING FIELD-SYMBOL(<fs_item>)..
              "修改
              lv_maintain_mode = 'M'.
              ls_operations-sequence_no = '000000'.
              ADD 1 TO lv_flag_bar.
              ls_operations-flag_bar_pointer = lv_flag_bar.
              "工序编码
              ls_operations-activity    = <fs_item>-vornr.
              ls_operations-activity_old  = <fs_item>-vornr."更新数据必须填写数据,否则不进行更新
              ls_operations-maintain_mode = 'M'.
              ls_operations-nominator   = lv_flag_bar.
              ls_operations-denominator = lv_flag_bar.
              ls_operations_x-activity     = abap_on.
              ls_operations_x-denominator           = abap_on.
              ls_operations_x-nominator           = abap_on.
              "工作中心内部工序:工作中心代码 委外工序:固定为空
              IF <fs_item>-arbpl IS NOT INITIAL.
                ls_operations-work_cntr                = <fs_item>-arbpl.
                ls_operations_x-work_cntr              = abap_on.
              ENDIF.
              "工厂
              IF <fs_head>-werks IS NOT INITIAL.
                ls_operations-plant                    = <fs_head>-werks.
                ls_operations_x-plant                  = abap_on.
              ENDIF.
              "控制码 针对内部工序:ZPP1 针对委外工序:ZPP2
              IF <fs_item>-steus IS NOT INITIAL.
                ls_operations-control_key              = <fs_item>-steus.
                ls_operations_x-control_key            = abap_on.
              ENDIF.
              "工序描述
              IF <fs_item>-ltxa1 IS NOT INITIAL.
                ls_operations-description              = <fs_item>-ltxa1.
                ls_operations_x-description            = abap_on.
              ENDIF.
              "输入工序产出的成品完成 实际品数量
              IF <fs_item>-bmsch IS NOT INITIAL.
                ls_operations-base_quantity            = <fs_item>-bmsch.
                ls_operations_x-base_quantity          = abap_true.
              ENDIF.
              "产成品的数量单位
              IF <fs_item>-meinh IS NOT INITIAL.
                ls_operations-operation_measure_unit =  <fs_item>-meinh.
                ls_operations_x-operation_measure_unit = abap_true.
              ENDIF.
              "活动类型-人工
              IF <fs_item>-lstar_man IS NOT INITIAL.
                ls_operations-acttype_01 = <fs_item>-lstar_man.
                ls_operations_x-acttype_01 = abap_true.
              ENDIF.
              "标准值单位-人工
              IF <fs_item>-vgwrteh_man IS NOT INITIAL.
                ls_operations-std_unit_01 = <fs_item>-vgwrteh_man.
                ls_operations_x-std_unit_01 = abap_true.
              ENDIF.
              "标准值-人工
              IF <fs_item>-vgwrt_man IS NOT INITIAL.
                ls_operations-std_value_01 = <fs_item>-vgwrt_man.
                ls_operations_x-std_value_01 = abap_true.
              ENDIF.
              "活动类型-机器
              IF <fs_item>-lstar_mach IS NOT INITIAL.
                ls_operations-acttype_02 = <fs_item>-lstar_mach.
                ls_operations_x-acttype_02 = abap_true.
              ENDIF.
              "标准值单位-机器
              IF <fs_item>-vgwrteh_mach IS NOT INITIAL.
                ls_operations-std_unit_02 = <fs_item>-vgwrteh_mach.
                ls_operations_x-std_unit_02 = abap_true.
              ENDIF.
              "标准值-机器
              IF <fs_item>-vgwrt_mach IS NOT INITIAL.
                ls_operations-std_value_02 = <fs_item>-vgwrt_mach.
                ls_operations_x-std_value_02 = abap_true.
              ENDIF.
              "------------------预留字段,默认空------------------"
              "------------------预留字段,默认空------------------"
              "------------------预留字段,默认空------------------"
              "标准值-机器
              IF <fs_item>-lstar_hour IS NOT INITIAL..
                ls_operations-acttype_03 = <fs_item>-lstar_hour.
                ls_operations_x-acttype_03 = abap_true.
              ENDIF.
              "活动类型-工时
              IF <fs_item>-vgwrteh_hour  IS NOT INITIAL..
                ls_operations-std_unit_03 = <fs_item>-vgwrteh_hour .
                ls_operations_x-std_unit_03 = abap_true.
              ENDIF.
              "标准值-工时
              IF <fs_item>-lstar_hour IS NOT INITIAL..
                ls_operations-acttype_03 = <fs_item>-lstar_hour.
                ls_operations_x-acttype_03 = abap_true.
              ENDIF.
              "标准值单位-工时
              IF <fs_item>-vgwrt_hour IS NOT INITIAL..
                ls_operations-std_value_03  = <fs_item>-vgwrt_hour.
                ls_operations_x-std_value_03  = abap_true.
              ENDIF.
              "标准值-工时
              IF <fs_item>-lstar_proc IS NOT INITIAL..
                ls_operations-acttype_04 = <fs_item>-lstar_proc.
                ls_operations_x-acttype_04 = abap_true.
              ENDIF.
              "活动类型-处理
              IF <fs_item>-vgwrteh_proc IS NOT INITIAL..
                ls_operations-std_unit_04 = <fs_item>-vgwrteh_proc.
                ls_operations_x-std_unit_04 = abap_true.
              ENDIF.
              "标准值单位-处理
              IF <fs_item>-vgwrt_proc IS NOT INITIAL..
                ls_operations-std_value_04 = <fs_item>-vgwrt_proc.
                ls_operations_x-std_value_04 = abap_true.
              ENDIF.
              "标准值-处理
              IF <fs_item>-lstar_qc IS NOT INITIAL..
                ls_operations-acttype_05 = <fs_item>-lstar_qc.
                ls_operations_x-acttype_05 = abap_true.
              ENDIF.
              "活动类型-质检
              IF <fs_item>-vgwrteh_qc IS NOT INITIAL..
                ls_operations-std_unit_05 = <fs_item>-vgwrteh_qc.
                ls_operations_x-std_unit_05 = abap_true.
              ENDIF.
              "标准值单位-质检 -
              IF <fs_item>-vgwrt_qc  IS NOT INITIAL..
                ls_operations-std_value_05 = <fs_item>-vgwrt_qc .
                ls_operations_x-std_value_05 = abap_true.
              ENDIF.
              "标准值-质检
              IF <fs_item>-lstar_tech  IS NOT INITIAL..
                ls_operations-acttype_06 = <fs_item>-lstar_tech .
                ls_operations_x-acttype_06 = abap_true.
              ENDIF.
              "标准值单位-工程
              IF <fs_item>-vgwrteh_tech IS NOT INITIAL..
                ls_operations-std_unit_06 = <fs_item>-vgwrteh_tech.
                ls_operations_x-std_unit_06 = abap_true.
              ENDIF.
              "标准值-工程
              IF <fs_item>-vgwrt_tech IS NOT INITIAL..
                ls_operations-std_value_06 = <fs_item>-vgwrt_tech.
                ls_operations_x-std_value_06 = abap_true.
              ENDIF.
              "------------------委外工序与内制工序------------------"
              IF <fs_item>-steus = 'ZPP1'."内制工序
              ELSEIF <fs_item>-steus = 'ZPP2'."委外工序.
                "分包
                ls_operations-ext_proc_with_subcontract_ind = abap_on.
                ls_operations_x-ext_proc_with_subcontract_ind = abap_on.

                ls_operations-cost_elem = '1475000000'.
                ls_operations_x-cost_elem = abap_on.

                ls_operations-operation_measure_unit = <fs_item>-meinh.
                ls_operations_x-operation_measure_unit = abap_on.
                "采购信息记录
                CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                  EXPORTING
                    input  = <fs_item>-infnr
                  IMPORTING
                    output = ls_operations-info_rec.
                ls_operations_x-info_rec = abap_on.
                "采购组织
                ls_operations-purch_org = <fs_item>-ekorg.
                ls_operations_x-purch_org = abap_on.
                "排序字符串
                ls_operations-sorted_by  = <fs_item>-sortl.
                ls_operations_x-sorted_by = abap_on.
                "物料组
                ls_operations-matl_group  = <fs_item>-matkl.
                ls_operations_x-matl_group = abap_on.
                "计划交货时间
                ls_operations-plnd_delry  = <fs_item>-plifz.
                ls_operations_x-plnd_delry = abap_on.
                "货币
                ls_operations-currency  = <fs_item>-waers.
                ls_operations_x-currency  = abap_on.
                "净价
                ls_operations-info_rec_net_price  = <fs_item>-preis.
                ls_operations_x-info_rec_net_price  = abap_on.
              ENDIF.
              APPEND ls_operations TO lt_operations.
              APPEND ls_operations_x TO lt_operations_x.
              CLEAR:ls_operations,ls_operations_x.
            ENDLOOP.
            IF sy-subrc NE 0.

            ENDIF.
          ELSEIF lv_line2 > lv_line1."说明有需要删除的数据
            LOOP AT lt_opr ASSIGNING FIELD-SYMBOL(<fs_opr>).
              LOOP AT <fs_head>-item ASSIGNING <fs_item> WHERE vornr = <fs_opr>-vornr."如果数据被读取到就是进行修改,没有就是进行删除.
                "修改
                lv_maintain_mode = 'M'.
                ls_operations-sequence_no = '000000'.
                ADD 1 TO lv_flag_bar.
                ls_operations-flag_bar_pointer = lv_flag_bar.
                "工序编码
                ls_operations-activity    = <fs_item>-vornr.
                ls_operations-activity_old  = <fs_item>-vornr."更新数据必须填写数据,否则不进行更新
                ls_operations-maintain_mode = 'M'.
                ls_operations-nominator   = lv_flag_bar.
                ls_operations-denominator = lv_flag_bar.
                ls_operations_x-activity     = abap_on.
                ls_operations_x-denominator           = abap_on.
                ls_operations_x-nominator           = abap_on.
                "工作中心内部工序:工作中心代码 委外工序:固定为空
                IF <fs_item>-arbpl IS NOT INITIAL.
                  ls_operations-work_cntr                = <fs_item>-arbpl.
                  ls_operations_x-work_cntr              = abap_on.
                ENDIF.
                "工厂
                IF <fs_head>-werks IS NOT INITIAL.
                  ls_operations-plant                    = <fs_head>-werks.
                  ls_operations_x-plant                  = abap_on.
                ENDIF.
                "控制码 针对内部工序:ZPP1 针对委外工序:ZPP2
                IF <fs_item>-steus IS NOT INITIAL.
                  ls_operations-control_key              = <fs_item>-steus.
                  ls_operations_x-control_key            = abap_on.
                ENDIF.
                "工序描述
                IF <fs_item>-ltxa1 IS NOT INITIAL.
                  ls_operations-description              = <fs_item>-ltxa1.
                  ls_operations_x-description            = abap_on.
                ENDIF.
                "输入工序产出的成品完成 实际品数量
                IF <fs_item>-bmsch IS NOT INITIAL.
                  ls_operations-base_quantity            = <fs_item>-bmsch.
                  ls_operations_x-base_quantity          = abap_true.
                ENDIF.
                "产成品的数量单位
                IF <fs_item>-meinh IS NOT INITIAL.
                  ls_operations-operation_measure_unit =  <fs_item>-meinh.
                  ls_operations_x-operation_measure_unit = abap_true.
                ENDIF.
                "活动类型-人工
                IF <fs_item>-lstar_man IS NOT INITIAL.
                  ls_operations-acttype_01 = <fs_item>-lstar_man.
                  ls_operations_x-acttype_01 = abap_true.
                ENDIF.
                "标准值单位-人工
                IF <fs_item>-vgwrteh_man IS NOT INITIAL.
                  ls_operations-std_unit_01 = <fs_item>-vgwrteh_man.
                  ls_operations_x-std_unit_01 = abap_true.
                ENDIF.
                "标准值-人工
                IF <fs_item>-vgwrt_man IS NOT INITIAL.
                  ls_operations-std_value_01 = <fs_item>-vgwrt_man.
                  ls_operations_x-std_value_01 = abap_true.
                ENDIF.
                "活动类型-机器
                IF <fs_item>-lstar_mach IS NOT INITIAL.
                  ls_operations-acttype_02 = <fs_item>-lstar_mach.
                  ls_operations_x-acttype_02 = abap_true.
                ENDIF.
                "标准值单位-机器
                IF <fs_item>-vgwrteh_mach IS NOT INITIAL.
                  ls_operations-std_unit_02 = <fs_item>-vgwrteh_mach.
                  ls_operations_x-std_unit_02 = abap_true.
                ENDIF.
                "标准值-机器
                IF <fs_item>-vgwrt_mach IS NOT INITIAL.
                  ls_operations-std_value_02 = <fs_item>-vgwrt_mach.
                  ls_operations_x-std_value_02 = abap_true.
                ENDIF.
                "------------------预留字段,默认空------------------"
                "------------------预留字段,默认空------------------"
                "------------------预留字段,默认空------------------"
                "标准值-机器
                IF <fs_item>-lstar_hour IS NOT INITIAL..
                  ls_operations-acttype_03 = <fs_item>-lstar_hour.
                  ls_operations_x-acttype_03 = abap_true.
                ENDIF.
                "活动类型-工时
                IF <fs_item>-vgwrteh_hour  IS NOT INITIAL..
                  ls_operations-std_unit_03 = <fs_item>-vgwrteh_hour .
                  ls_operations_x-std_unit_03 = abap_true.
                ENDIF.
                "标准值-工时
                IF <fs_item>-lstar_hour IS NOT INITIAL..
                  ls_operations-acttype_03 = <fs_item>-lstar_hour.
                  ls_operations_x-acttype_03 = abap_true.
                ENDIF.
                "标准值单位-工时
                IF <fs_item>-vgwrt_hour IS NOT INITIAL..
                  ls_operations-std_value_03  = <fs_item>-vgwrt_hour.
                  ls_operations_x-std_value_03  = abap_true.
                ENDIF.
                "标准值-工时
                IF <fs_item>-lstar_proc IS NOT INITIAL..
                  ls_operations-acttype_04 = <fs_item>-lstar_proc.
                  ls_operations_x-acttype_04 = abap_true.
                ENDIF.
                "活动类型-处理
                IF <fs_item>-vgwrteh_proc IS NOT INITIAL..
                  ls_operations-std_unit_04 = <fs_item>-vgwrteh_proc.
                  ls_operations_x-std_unit_04 = abap_true.
                ENDIF.
                "标准值单位-处理
                IF <fs_item>-vgwrt_proc IS NOT INITIAL..
                  ls_operations-std_value_04 = <fs_item>-vgwrt_proc.
                  ls_operations_x-std_value_04 = abap_true.
                ENDIF.
                "标准值-处理
                IF <fs_item>-lstar_qc IS NOT INITIAL..
                  ls_operations-acttype_05 = <fs_item>-lstar_qc.
                  ls_operations_x-acttype_05 = abap_true.
                ENDIF.
                "活动类型-质检
                IF <fs_item>-vgwrteh_qc IS NOT INITIAL..
                  ls_operations-std_unit_05 = <fs_item>-vgwrteh_qc.
                  ls_operations_x-std_unit_05 = abap_true.
                ENDIF.
                "标准值单位-质检 -
                IF <fs_item>-vgwrt_qc  IS NOT INITIAL..
                  ls_operations-std_value_05 = <fs_item>-vgwrt_qc .
                  ls_operations_x-std_value_05 = abap_true.
                ENDIF.
                "标准值-质检
                IF <fs_item>-lstar_tech  IS NOT INITIAL..
                  ls_operations-acttype_06 = <fs_item>-lstar_tech .
                  ls_operations_x-acttype_06 = abap_true.
                ENDIF.
                "标准值单位-工程
                IF <fs_item>-vgwrteh_tech IS NOT INITIAL..
                  ls_operations-std_unit_06 = <fs_item>-vgwrteh_tech.
                  ls_operations_x-std_unit_06 = abap_true.
                ENDIF.
                "标准值-工程
                IF <fs_item>-vgwrt_tech IS NOT INITIAL..
                  ls_operations-std_value_06 = <fs_item>-vgwrt_tech.
                  ls_operations_x-std_value_06 = abap_true.
                ENDIF.
                "------------------委外工序与内制工序------------------"
                IF <fs_item>-steus = 'ZPP1'."内制工序
                ELSEIF <fs_item>-steus = 'ZPP2'."委外工序.
                  "分包
                  ls_operations-ext_proc_with_subcontract_ind = abap_on.
                  ls_operations_x-ext_proc_with_subcontract_ind = abap_on.

                  ls_operations-cost_elem = '1475000000'.
                  ls_operations_x-cost_elem = abap_on.

                  ls_operations-operation_measure_unit = <fs_item>-meinh.
                  ls_operations_x-operation_measure_unit = abap_on.
                  "采购信息记录
                  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                    EXPORTING
                      input  = <fs_item>-infnr
                    IMPORTING
                      output = ls_operations-info_rec.
                  ls_operations_x-info_rec = abap_on.
                  "采购组织
                  ls_operations-purch_org = <fs_item>-ekorg.
                  ls_operations_x-purch_org = abap_on.
                  "排序字符串
                  ls_operations-sorted_by  = <fs_item>-sortl.
                  ls_operations_x-sorted_by = abap_on.
                  "物料组
                  ls_operations-matl_group  = <fs_item>-matkl.
                  ls_operations_x-matl_group = abap_on.
                  "计划交货时间
                  ls_operations-plnd_delry  = <fs_item>-plifz.
                  ls_operations_x-plnd_delry = abap_on.
                  "货币
                  ls_operations-currency  = <fs_item>-waers.
                  ls_operations_x-currency  = abap_on.
                  "净价
                  ls_operations-info_rec_net_price  = <fs_item>-preis.
                  ls_operations_x-info_rec_net_price  = abap_on.
                ENDIF.
                APPEND ls_operations TO lt_operations.
                APPEND ls_operations_x TO lt_operations_x.
                CLEAR:ls_operations,ls_operations_x.
              ENDLOOP.
              IF sy-subrc NE 0.
*                READ TABLE <fs_head>-item INTO DATA(ls_item) WITH KEY VORNR = <FS_OPR>-VORNR.
                "修改
                lv_maintain_mode = 'M'.
                ls_operations-sequence_no = '000000'.
                ADD 1 TO lv_flag_bar.
                ls_operations-flag_bar_pointer = lv_flag_bar.
                "工序编码
                ls_operations-activity    = <fs_opr>-vornr.
                ls_operations-activity_old  = <fs_opr>-vornr."更新数据必须填写数据,否则不进行更新
                ls_operations-maintain_mode = 'D'.
                ls_operations-nominator   = lv_flag_bar.
                ls_operations-denominator = lv_flag_bar.
                ls_operations_x-activity     = abap_on.
                ls_operations_x-denominator           = abap_on.
                ls_operations_x-nominator           = abap_on.
                APPEND ls_operations TO lt_operations.
                APPEND ls_operations_x TO lt_operations_x.
                CLEAR:ls_operations,ls_operations_x.
              ENDIF.
            ENDLOOP.
          ELSEIF lv_line2 < lv_line1."说明有需要创建的数据
            LOOP AT <fs_head>-item ASSIGNING <fs_item>.
              READ TABLE lt_opr INTO DATA(ls_opr) WITH KEY vornr = <fs_item>-vornr."如果行号没有被获取到就是进行创建,如果被获取到就是进行修改
              IF sy-subrc = 0."创建新的行数据
                "修改
                lv_maintain_mode = 'M'.
                ls_operations-sequence_no = '000000'.
                ADD 1 TO lv_flag_bar.
                ls_operations-flag_bar_pointer = lv_flag_bar.
                "工序编码
                ls_operations-activity    = <fs_item>-vornr.
                ls_operations-activity_old  = <fs_item>-vornr."更新数据必须填写数据,否则不进行更新
                ls_operations-maintain_mode = 'M'.
                ls_operations-nominator   = lv_flag_bar.
                ls_operations-denominator = lv_flag_bar.
                ls_operations_x-activity     = abap_on.
                ls_operations_x-denominator           = abap_on.
                ls_operations_x-nominator           = abap_on.
                "工作中心内部工序:工作中心代码 委外工序:固定为空
                IF <fs_item>-arbpl IS NOT INITIAL.
                  ls_operations-work_cntr                = <fs_item>-arbpl.
                  ls_operations_x-work_cntr              = abap_on.
                ENDIF.
                "工厂
                IF <fs_head>-werks IS NOT INITIAL.
                  ls_operations-plant                    = <fs_head>-werks.
                  ls_operations_x-plant                  = abap_on.
                ENDIF.
                "控制码 针对内部工序:ZPP1 针对委外工序:ZPP2
                IF <fs_item>-steus IS NOT INITIAL.
                  ls_operations-control_key              = <fs_item>-steus.
                  ls_operations_x-control_key            = abap_on.
                ENDIF.
                "工序描述
                IF <fs_item>-ltxa1 IS NOT INITIAL.
                  ls_operations-description              = <fs_item>-ltxa1.
                  ls_operations_x-description            = abap_on.
                ENDIF.
                "输入工序产出的成品完成 实际品数量
                IF <fs_item>-bmsch IS NOT INITIAL.
                  ls_operations-base_quantity            = <fs_item>-bmsch.
                  ls_operations_x-base_quantity          = abap_true.
                ENDIF.
                "产成品的数量单位
                IF <fs_item>-meinh IS NOT INITIAL.
                  ls_operations-operation_measure_unit =  <fs_item>-meinh.
                  ls_operations_x-operation_measure_unit = abap_true.
                ENDIF.
                "活动类型-人工
                IF <fs_item>-lstar_man IS NOT INITIAL.
                  ls_operations-acttype_01 = <fs_item>-lstar_man.
                  ls_operations_x-acttype_01 = abap_true.
                ENDIF.
                "标准值单位-人工
                IF <fs_item>-vgwrteh_man IS NOT INITIAL.
                  ls_operations-std_unit_01 = <fs_item>-vgwrteh_man.
                  ls_operations_x-std_unit_01 = abap_true.
                ENDIF.
                "标准值-人工
                IF <fs_item>-vgwrt_man IS NOT INITIAL.
                  ls_operations-std_value_01 = <fs_item>-vgwrt_man.
                  ls_operations_x-std_value_01 = abap_true.
                ENDIF.
                "活动类型-机器
                IF <fs_item>-lstar_mach IS NOT INITIAL.
                  ls_operations-acttype_02 = <fs_item>-lstar_mach.
                  ls_operations_x-acttype_02 = abap_true.
                ENDIF.
                "标准值单位-机器
                IF <fs_item>-vgwrteh_mach IS NOT INITIAL.
                  ls_operations-std_unit_02 = <fs_item>-vgwrteh_mach.
                  ls_operations_x-std_unit_02 = abap_true.
                ENDIF.
                "标准值-机器
                IF <fs_item>-vgwrt_mach IS NOT INITIAL.
                  ls_operations-std_value_02 = <fs_item>-vgwrt_mach.
                  ls_operations_x-std_value_02 = abap_true.
                ENDIF.
                "------------------预留字段,默认空------------------"
                "------------------预留字段,默认空------------------"
                "------------------预留字段,默认空------------------"
                "标准值-机器
                IF <fs_item>-lstar_hour IS NOT INITIAL..
                  ls_operations-acttype_03 = <fs_item>-lstar_hour.
                  ls_operations_x-acttype_03 = abap_true.
                ENDIF.
                "活动类型-工时
                IF <fs_item>-vgwrteh_hour  IS NOT INITIAL..
                  ls_operations-std_unit_03 = <fs_item>-vgwrteh_hour .
                  ls_operations_x-std_unit_03 = abap_true.
                ENDIF.
                "标准值-工时
                IF <fs_item>-lstar_hour IS NOT INITIAL..
                  ls_operations-acttype_03 = <fs_item>-lstar_hour.
                  ls_operations_x-acttype_03 = abap_true.
                ENDIF.
                "标准值单位-工时
                IF <fs_item>-vgwrt_hour IS NOT INITIAL..
                  ls_operations-std_value_03  = <fs_item>-vgwrt_hour.
                  ls_operations_x-std_value_03  = abap_true.
                ENDIF.
                "标准值-工时
                IF <fs_item>-lstar_proc IS NOT INITIAL..
                  ls_operations-acttype_04 = <fs_item>-lstar_proc.
                  ls_operations_x-acttype_04 = abap_true.
                ENDIF.
                "活动类型-处理
                IF <fs_item>-vgwrteh_proc IS NOT INITIAL..
                  ls_operations-std_unit_04 = <fs_item>-vgwrteh_proc.
                  ls_operations_x-std_unit_04 = abap_true.
                ENDIF.
                "标准值单位-处理
                IF <fs_item>-vgwrt_proc IS NOT INITIAL..
                  ls_operations-std_value_04 = <fs_item>-vgwrt_proc.
                  ls_operations_x-std_value_04 = abap_true.
                ENDIF.
                "标准值-处理
                IF <fs_item>-lstar_qc IS NOT INITIAL..
                  ls_operations-acttype_05 = <fs_item>-lstar_qc.
                  ls_operations_x-acttype_05 = abap_true.
                ENDIF.
                "活动类型-质检
                IF <fs_item>-vgwrteh_qc IS NOT INITIAL..
                  ls_operations-std_unit_05 = <fs_item>-vgwrteh_qc.
                  ls_operations_x-std_unit_05 = abap_true.
                ENDIF.
                "标准值单位-质检 -
                IF <fs_item>-vgwrt_qc  IS NOT INITIAL..
                  ls_operations-std_value_05 = <fs_item>-vgwrt_qc .
                  ls_operations_x-std_value_05 = abap_true.
                ENDIF.
                "标准值-质检
                IF <fs_item>-lstar_tech  IS NOT INITIAL..
                  ls_operations-acttype_06 = <fs_item>-lstar_tech .
                  ls_operations_x-acttype_06 = abap_true.
                ENDIF.
                "标准值单位-工程
                IF <fs_item>-vgwrteh_tech IS NOT INITIAL..
                  ls_operations-std_unit_06 = <fs_item>-vgwrteh_tech.
                  ls_operations_x-std_unit_06 = abap_true.
                ENDIF.
                "标准值-工程
                IF <fs_item>-vgwrt_tech IS NOT INITIAL..
                  ls_operations-std_value_06 = <fs_item>-vgwrt_tech.
                  ls_operations_x-std_value_06 = abap_true.
                ENDIF.
                "------------------委外工序与内制工序------------------"
                IF <fs_item>-steus = 'ZPP1'."内制工序
                ELSEIF <fs_item>-steus = 'ZPP2'."委外工序.
                  "分包
                  ls_operations-ext_proc_with_subcontract_ind = abap_on.
                  ls_operations_x-ext_proc_with_subcontract_ind = abap_on.

                  ls_operations-cost_elem = '1475000000'.
                  ls_operations_x-cost_elem = abap_on.

                  ls_operations-operation_measure_unit = <fs_item>-meinh.
                  ls_operations_x-operation_measure_unit = abap_on.
                  "采购信息记录
                  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                    EXPORTING
                      input  = <fs_item>-infnr
                    IMPORTING
                      output = ls_operations-info_rec.
                  ls_operations_x-info_rec = abap_on.
                  "采购组织
                  ls_operations-purch_org = <fs_item>-ekorg.
                  ls_operations_x-purch_org = abap_on.
                  "排序字符串
                  ls_operations-sorted_by  = <fs_item>-sortl.
                  ls_operations_x-sorted_by = abap_on.
                  "物料组
                  ls_operations-matl_group  = <fs_item>-matkl.
                  ls_operations_x-matl_group = abap_on.
                  "计划交货时间
                  ls_operations-plnd_delry  = <fs_item>-plifz.
                  ls_operations_x-plnd_delry = abap_on.
                  "货币
                  ls_operations-currency  = <fs_item>-waers.
                  ls_operations_x-currency  = abap_on.
                  "净价
                  ls_operations-info_rec_net_price  = <fs_item>-preis.
                  ls_operations_x-info_rec_net_price  = abap_on.
                ENDIF.
                APPEND ls_operations TO lt_operations.
                APPEND ls_operations_x TO lt_operations_x.
                CLEAR:ls_operations,ls_operations_x.
              ELSE."修改新的行数据
                "修改
                lv_maintain_mode = 'M'.
                ls_operations-sequence_no = '000000'.
                ADD 1 TO lv_flag_bar.
                ls_operations-flag_bar_pointer = lv_flag_bar.
                "工序编码
                ls_operations-activity    = <fs_item>-vornr.
                ls_operations-activity_old  = <fs_item>-vornr."更新数据必须填写数据,否则不进行更新
                ls_operations-maintain_mode = 'C'.
                ls_operations-nominator   = lv_flag_bar.
                ls_operations-denominator = lv_flag_bar.
                ls_operations_x-activity     = abap_on.
                ls_operations_x-denominator           = abap_on.
                ls_operations_x-nominator           = abap_on.
                "工作中心内部工序:工作中心代码 委外工序:固定为空
                IF <fs_item>-arbpl IS NOT INITIAL.
                  ls_operations-work_cntr                = <fs_item>-arbpl.
                  ls_operations_x-work_cntr              = abap_on.
                ENDIF.
                "工厂
                IF <fs_head>-werks IS NOT INITIAL.
                  ls_operations-plant                    = <fs_head>-werks.
                  ls_operations_x-plant                  = abap_on.
                ENDIF.
                "控制码 针对内部工序:ZPP1 针对委外工序:ZPP2
                IF <fs_item>-steus IS NOT INITIAL.
                  ls_operations-control_key              = <fs_item>-steus.
                  ls_operations_x-control_key            = abap_on.
                ENDIF.
                "工序描述
                IF <fs_item>-ltxa1 IS NOT INITIAL.
                  ls_operations-description              = <fs_item>-ltxa1.
                  ls_operations_x-description            = abap_on.
                ENDIF.
                "输入工序产出的成品完成 实际品数量
                IF <fs_item>-bmsch IS NOT INITIAL.
                  ls_operations-base_quantity            = <fs_item>-bmsch.
                  ls_operations_x-base_quantity          = abap_true.
                ENDIF.
                "产成品的数量单位
                IF <fs_item>-meinh IS NOT INITIAL.
                  ls_operations-operation_measure_unit =  <fs_item>-meinh.
                  ls_operations_x-operation_measure_unit = abap_true.
                ENDIF.
                "活动类型-人工
                IF <fs_item>-lstar_man IS NOT INITIAL.
                  ls_operations-acttype_01 = <fs_item>-lstar_man.
                  ls_operations_x-acttype_01 = abap_true.
                ENDIF.
                "标准值单位-人工
                IF <fs_item>-vgwrteh_man IS NOT INITIAL.
                  ls_operations-std_unit_01 = <fs_item>-vgwrteh_man.
                  ls_operations_x-std_unit_01 = abap_true.
                ENDIF.
                "标准值-人工
                IF <fs_item>-vgwrt_man IS NOT INITIAL.
                  ls_operations-std_value_01 = <fs_item>-vgwrt_man.
                  ls_operations_x-std_value_01 = abap_true.
                ENDIF.
                "活动类型-机器
                IF <fs_item>-lstar_mach IS NOT INITIAL.
                  ls_operations-acttype_02 = <fs_item>-lstar_mach.
                  ls_operations_x-acttype_02 = abap_true.
                ENDIF.
                "标准值单位-机器
                IF <fs_item>-vgwrteh_mach IS NOT INITIAL.
                  ls_operations-std_unit_02 = <fs_item>-vgwrteh_mach.
                  ls_operations_x-std_unit_02 = abap_true.
                ENDIF.
                "标准值-机器
                IF <fs_item>-vgwrt_mach IS NOT INITIAL.
                  ls_operations-std_value_02 = <fs_item>-vgwrt_mach.
                  ls_operations_x-std_value_02 = abap_true.
                ENDIF.
                "------------------预留字段,默认空------------------"
                "------------------预留字段,默认空------------------"
                "------------------预留字段,默认空------------------"
                "标准值-机器
                IF <fs_item>-lstar_hour IS NOT INITIAL..
                  ls_operations-acttype_03 = <fs_item>-lstar_hour.
                  ls_operations_x-acttype_03 = abap_true.
                ENDIF.
                "活动类型-工时
                IF <fs_item>-vgwrteh_hour  IS NOT INITIAL..
                  ls_operations-std_unit_03 = <fs_item>-vgwrteh_hour .
                  ls_operations_x-std_unit_03 = abap_true.
                ENDIF.
                "标准值-工时
                IF <fs_item>-lstar_hour IS NOT INITIAL..
                  ls_operations-acttype_03 = <fs_item>-lstar_hour.
                  ls_operations_x-acttype_03 = abap_true.
                ENDIF.
                "标准值单位-工时
                IF <fs_item>-vgwrt_hour IS NOT INITIAL..
                  ls_operations-std_value_03  = <fs_item>-vgwrt_hour.
                  ls_operations_x-std_value_03  = abap_true.
                ENDIF.
                "标准值-工时
                IF <fs_item>-lstar_proc IS NOT INITIAL..
                  ls_operations-acttype_04 = <fs_item>-lstar_proc.
                  ls_operations_x-acttype_04 = abap_true.
                ENDIF.
                "活动类型-处理
                IF <fs_item>-vgwrteh_proc IS NOT INITIAL..
                  ls_operations-std_unit_04 = <fs_item>-vgwrteh_proc.
                  ls_operations_x-std_unit_04 = abap_true.
                ENDIF.
                "标准值单位-处理
                IF <fs_item>-vgwrt_proc IS NOT INITIAL..
                  ls_operations-std_value_04 = <fs_item>-vgwrt_proc.
                  ls_operations_x-std_value_04 = abap_true.
                ENDIF.
                "标准值-处理
                IF <fs_item>-lstar_qc IS NOT INITIAL..
                  ls_operations-acttype_05 = <fs_item>-lstar_qc.
                  ls_operations_x-acttype_05 = abap_true.
                ENDIF.
                "活动类型-质检
                IF <fs_item>-vgwrteh_qc IS NOT INITIAL..
                  ls_operations-std_unit_05 = <fs_item>-vgwrteh_qc.
                  ls_operations_x-std_unit_05 = abap_true.
                ENDIF.
                "标准值单位-质检 -
                IF <fs_item>-vgwrt_qc  IS NOT INITIAL..
                  ls_operations-std_value_05 = <fs_item>-vgwrt_qc .
                  ls_operations_x-std_value_05 = abap_true.
                ENDIF.
                "标准值-质检
                IF <fs_item>-lstar_tech  IS NOT INITIAL..
                  ls_operations-acttype_06 = <fs_item>-lstar_tech .
                  ls_operations_x-acttype_06 = abap_true.
                ENDIF.
                "标准值单位-工程
                IF <fs_item>-vgwrteh_tech IS NOT INITIAL..
                  ls_operations-std_unit_06 = <fs_item>-vgwrteh_tech.
                  ls_operations_x-std_unit_06 = abap_true.
                ENDIF.
                "标准值-工程
                IF <fs_item>-vgwrt_tech IS NOT INITIAL..
                  ls_operations-std_value_06 = <fs_item>-vgwrt_tech.
                  ls_operations_x-std_value_06 = abap_true.
                ENDIF.
                "------------------委外工序与内制工序------------------"
                IF <fs_item>-steus = 'ZPP1'."内制工序
                ELSEIF <fs_item>-steus = 'ZPP2'."委外工序.
                  "分包
                  ls_operations-ext_proc_with_subcontract_ind = abap_on.
                  ls_operations_x-ext_proc_with_subcontract_ind = abap_on.

                  ls_operations-cost_elem = '1475000000'.
                  ls_operations_x-cost_elem = abap_on.

                  ls_operations-operation_measure_unit = <fs_item>-meinh.
                  ls_operations_x-operation_measure_unit = abap_on.
                  "采购信息记录
                  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                    EXPORTING
                      input  = <fs_item>-infnr
                    IMPORTING
                      output = ls_operations-info_rec.
                  ls_operations_x-info_rec = abap_on.
                  "采购组织
                  ls_operations-purch_org = <fs_item>-ekorg.
                  ls_operations_x-purch_org = abap_on.
                  "排序字符串
                  ls_operations-sorted_by  = <fs_item>-sortl.
                  ls_operations_x-sorted_by = abap_on.
                  "物料组
                  ls_operations-matl_group  = <fs_item>-matkl.
                  ls_operations_x-matl_group = abap_on.
                  "计划交货时间
                  ls_operations-plnd_delry  = <fs_item>-plifz.
                  ls_operations_x-plnd_delry = abap_on.
                  "货币
                  ls_operations-currency  = <fs_item>-waers.
                  ls_operations_x-currency  = abap_on.
                  "净价
                  ls_operations-info_rec_net_price  = <fs_item>-preis.
                  ls_operations_x-info_rec_net_price  = abap_on.
                ENDIF.
                APPEND ls_operations TO lt_operations.
                APPEND ls_operations_x TO lt_operations_x.
                CLEAR:ls_operations,ls_operations_x.
              ENDIF.
            ENDLOOP.
          ENDIF.
        ELSEIF <fs_head>-zflg = '1'.
          "修改
          LOOP AT <fs_head>-item ASSIGNING <fs_item>.
            lv_maintain_mode = 'C'.
            ls_operations-sequence_no = '000000'.
            ADD 1 TO lv_flag_bar.
            ls_operations-flag_bar_pointer = lv_flag_bar.
            "工序编码
            ls_operations-activity    = <fs_item>-vornr.
            ls_operations-activity_old  = <fs_item>-vornr."更新数据必须填写数据,否则不进行更新
            ls_operations-maintain_mode = 'C'.
            ls_operations-nominator   = lv_flag_bar.
            ls_operations-denominator = lv_flag_bar.
            ls_operations_x-activity     = abap_on.
            ls_operations_x-denominator           = abap_on.
            ls_operations_x-nominator           = abap_on.
            "工作中心内部工序:工作中心代码 委外工序:固定为空
            IF <fs_item>-arbpl IS NOT INITIAL.
              ls_operations-work_cntr                = <fs_item>-arbpl.
              ls_operations_x-work_cntr              = abap_on.
            ENDIF.
            "工厂
            IF <fs_head>-werks IS NOT INITIAL.
              ls_operations-plant                    = <fs_head>-werks.
              ls_operations_x-plant                  = abap_on.
            ENDIF.
            "控制码 针对内部工序:ZPP1 针对委外工序:ZPP2
            IF <fs_item>-steus IS NOT INITIAL.
              ls_operations-control_key              = <fs_item>-steus.
              ls_operations_x-control_key            = abap_on.
            ENDIF.
            "工序描述
            IF <fs_item>-ltxa1 IS NOT INITIAL.
              ls_operations-description              = <fs_item>-ltxa1.
              ls_operations_x-description            = abap_on.
            ENDIF.
            "输入工序产出的成品完成 实际品数量
            IF <fs_item>-bmsch IS NOT INITIAL.
              ls_operations-base_quantity            = <fs_item>-bmsch.
              ls_operations_x-base_quantity          = abap_true.
            ENDIF.
            "产成品的数量单位
            IF <fs_item>-meinh IS NOT INITIAL.
              ls_operations-operation_measure_unit =  <fs_item>-meinh.
              ls_operations_x-operation_measure_unit = abap_true.
            ENDIF.
            "活动类型-人工
            IF <fs_item>-lstar_man IS NOT INITIAL.
              ls_operations-acttype_01 = <fs_item>-lstar_man.
              ls_operations_x-acttype_01 = abap_true.
            ENDIF.
            "标准值单位-人工
            IF <fs_item>-vgwrteh_man IS NOT INITIAL.
              ls_operations-std_unit_01 = <fs_item>-vgwrteh_man.
              ls_operations_x-std_unit_01 = abap_true.
            ENDIF.
            "标准值-人工
            IF <fs_item>-vgwrt_man IS NOT INITIAL.
              ls_operations-std_value_01 = <fs_item>-vgwrt_man.
              ls_operations_x-std_value_01 = abap_true.
            ENDIF.
            "活动类型-机器
            IF <fs_item>-lstar_mach IS NOT INITIAL.
              ls_operations-acttype_02 = <fs_item>-lstar_mach.
              ls_operations_x-acttype_02 = abap_true.
            ENDIF.
            "标准值单位-机器
            IF <fs_item>-vgwrteh_mach IS NOT INITIAL.
              ls_operations-std_unit_02 = <fs_item>-vgwrteh_mach.
              ls_operations_x-std_unit_02 = abap_true.
            ENDIF.
            "标准值-机器
            IF <fs_item>-vgwrt_mach IS NOT INITIAL.
              ls_operations-std_value_02 = <fs_item>-vgwrt_mach.
              ls_operations_x-std_value_02 = abap_true.
            ENDIF.
            "------------------预留字段,默认空------------------"
            "------------------预留字段,默认空------------------"
            "------------------预留字段,默认空------------------"
            "标准值-机器
            IF <fs_item>-lstar_hour IS NOT INITIAL..
              ls_operations-acttype_03 = <fs_item>-lstar_hour.
              ls_operations_x-acttype_03 = abap_true.
            ENDIF.
            "活动类型-工时
            IF <fs_item>-vgwrteh_hour  IS NOT INITIAL..
              ls_operations-std_unit_03 = <fs_item>-vgwrteh_hour .
              ls_operations_x-std_unit_03 = abap_true.
            ENDIF.
            "标准值-工时
            IF <fs_item>-lstar_hour IS NOT INITIAL..
              ls_operations-acttype_03 = <fs_item>-lstar_hour.
              ls_operations_x-acttype_03 = abap_true.
            ENDIF.
            "标准值单位-工时
            IF <fs_item>-vgwrt_hour IS NOT INITIAL..
              ls_operations-std_value_03  = <fs_item>-vgwrt_hour.
              ls_operations_x-std_value_03  = abap_true.
            ENDIF.
            "标准值-工时
            IF <fs_item>-lstar_proc IS NOT INITIAL..
              ls_operations-acttype_04 = <fs_item>-lstar_proc.
              ls_operations_x-acttype_04 = abap_true.
            ENDIF.
            "活动类型-处理
            IF <fs_item>-vgwrteh_proc IS NOT INITIAL..
              ls_operations-std_unit_04 = <fs_item>-vgwrteh_proc.
              ls_operations_x-std_unit_04 = abap_true.
            ENDIF.
            "标准值单位-处理
            IF <fs_item>-vgwrt_proc IS NOT INITIAL..
              ls_operations-std_value_04 = <fs_item>-vgwrt_proc.
              ls_operations_x-std_value_04 = abap_true.
            ENDIF.
            "标准值-处理
            IF <fs_item>-lstar_qc IS NOT INITIAL..
              ls_operations-acttype_05 = <fs_item>-lstar_qc.
              ls_operations_x-acttype_05 = abap_true.
            ENDIF.
            "活动类型-质检
            IF <fs_item>-vgwrteh_qc IS NOT INITIAL..
              ls_operations-std_unit_05 = <fs_item>-vgwrteh_qc.
              ls_operations_x-std_unit_05 = abap_true.
            ENDIF.
            "标准值单位-质检 -
            IF <fs_item>-vgwrt_qc  IS NOT INITIAL..
              ls_operations-std_value_05 = <fs_item>-vgwrt_qc .
              ls_operations_x-std_value_05 = abap_true.
            ENDIF.
            "标准值-质检
            IF <fs_item>-lstar_tech  IS NOT INITIAL..
              ls_operations-acttype_06 = <fs_item>-lstar_tech .
              ls_operations_x-acttype_06 = abap_true.
            ENDIF.
            "标准值单位-工程
            IF <fs_item>-vgwrteh_tech IS NOT INITIAL..
              ls_operations-std_unit_06 = <fs_item>-vgwrteh_tech.
              ls_operations_x-std_unit_06 = abap_true.
            ENDIF.
            "标准值-工程
            IF <fs_item>-vgwrt_tech IS NOT INITIAL..
              ls_operations-std_value_06 = <fs_item>-vgwrt_tech.
              ls_operations_x-std_value_06 = abap_true.
            ENDIF.
            "------------------委外工序与内制工序------------------"
            IF <fs_item>-steus = 'ZPP1'."内制工序
            ELSEIF <fs_item>-steus = 'ZPP2'."委外工序.
              "分包
              ls_operations-ext_proc_with_subcontract_ind = abap_on.
              ls_operations_x-ext_proc_with_subcontract_ind = abap_on.

              ls_operations-cost_elem = '1475000000'.
              ls_operations_x-cost_elem = abap_on.

              ls_operations-operation_measure_unit = <fs_item>-meinh.
              ls_operations_x-operation_measure_unit = abap_on.
              "采购信息记录
              CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                EXPORTING
                  input  = <fs_item>-infnr
                IMPORTING
                  output = ls_operations-info_rec.
              ls_operations_x-info_rec = abap_on.
              "采购组织
              ls_operations-purch_org = <fs_item>-ekorg.
              ls_operations_x-purch_org = abap_on.
              "排序字符串
              ls_operations-sorted_by  = <fs_item>-sortl.
              ls_operations_x-sorted_by = abap_on.
              "物料组
              ls_operations-matl_group  = <fs_item>-matkl.
              ls_operations_x-matl_group = abap_on.
              "计划交货时间
              ls_operations-plnd_delry  = <fs_item>-plifz.
              ls_operations_x-plnd_delry = abap_on.
              "货币
              ls_operations-currency  = <fs_item>-waers.
              ls_operations_x-currency  = abap_on.
              "净价
              ls_operations-info_rec_net_price  = <fs_item>-preis.
              ls_operations_x-info_rec_net_price  = abap_on.
            ENDIF.
            APPEND ls_operations TO lt_operations.
            APPEND ls_operations_x TO lt_operations_x.
            CLEAR:ls_operations,ls_operations_x.

          ENDLOOP.
        ELSEIF <fs_head>-zflg = '3'."数据删除
          lv_maintain_mode = 'M'.
          ls_task-del_flag         = abap_on.
          ls_task_x-del_flag       = abap_on.
        ENDIF.

        "根据不同的数据情况调用BAPI
        IF <fs_head>-zflg = '1'.
          CALL FUNCTION 'CPCC_S_TASK_LIST_MAINTAIN'
            EXPORTING
              change_no                   = lv_change_no
              key_date                    = lv_key_date
              task_list_type              = lv_list_type
              task_list_group             = lv_task_list_group
              group_counter               = lv_group_counter
              material                    = lv_material
              plant                       = lv_plant
              task_maintain_mode          = lv_maintain_mode
              task                        = ls_task
              task_x                      = ls_task_x
              bom_usage                   = lv_bom_usage
            TABLES
              material_task_allocations   = lt_material_task
              material_task_allocations_x = lt_material_task_x
              operations                  = lt_operations
              operations_x                = lt_operations_x
              return                      = lt_return.
        ELSEIF <fs_head>-zflg = '2'.
          CALL FUNCTION 'CPCC_S_TASK_LIST_MAINTAIN'
            EXPORTING
              change_no          = lv_change_no
              key_date           = lv_key_date
              task_list_type     = lv_list_type
              task_list_group    = lv_task_list_group
              group_counter      = lv_group_counter
              task_maintain_mode = lv_maintain_mode
              task               = ls_task
              task_x             = ls_task_x
              bom_usage          = lv_bom_usage
            TABLES
              operations         = lt_operations
              operations_x       = lt_operations_x
              return             = lt_return.
        ELSEIF <fs_head>-zflg = '3'.
          CALL FUNCTION 'CPCC_S_TASK_LIST_MAINTAIN'
            EXPORTING
              change_no          = lv_change_no
              key_date           = lv_key_date
              task_list_type     = lv_list_type
              task_list_group    = lv_task_list_group
              group_counter      = lv_group_counter
              material           = lv_material
              plant              = lv_plant
              task_maintain_mode = lv_maintain_mode
              task               = ls_task
              task_x             = ls_task_x
              bom_usage          = lv_bom_usage
            TABLES
              return             = lt_return.
        ENDIF.

        LOOP AT lt_return INTO ls_return WHERE type CA 'EAX'.
          READ TABLE output-mt_pp061_route_sap_res-head INTO DATA(ls_out) INDEX 1.
          ls_out-type = 'E'.
          CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
            EXPORTING
              input  = <fs_head>-matnr
            IMPORTING
              output = <fs_head>-matnr.
          ls_out-matnr = <fs_head>-matnr.
          ls_out-werks = <fs_head>-werks.
          ls_out-ktext = <fs_head>-ktext.
          CONCATENATE ls_out-message ls_return-message INTO ls_out-message.
          APPEND ls_out TO  output-mt_pp061_route_sap_res-head..

          ls_log-type = 'E'.
          ls_log-matnr = <fs_head>-matnr.
          ls_log-message = ls_out-message.
          ls_log-aedat1 = sy-datum.
          ls_log-aedat2 = sy-uzeit.
          MODIFY ztpp061_log FROM ls_log.
          IF sy-subrc = 0.
            COMMIT WORK AND WAIT .
          ELSE.
            ROLLBACK WORK.
          ENDIF.
        ENDLOOP.
        IF sy-subrc NE 0.
          LOOP AT lt_return INTO ls_return WHERE type = 'S' AND ( number = '059' OR number = '068' ).
            READ TABLE output-mt_pp061_route_sap_res-head  INTO DATA(fs_ret) INDEX 1.
            fs_ret-type = 'S'.
            fs_ret-message = ls_return-message.
            fs_ret-plnnr = ls_return-message_v2.
            fs_ret-plnal = ls_return-message_v3.
            CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
              EXPORTING
                input  = <fs_head>-matnr
              IMPORTING
                output = <fs_head>-matnr.
            fs_ret-matnr = <fs_head>-matnr.
            fs_ret-werks = <fs_head>-werks.
            fs_ret-ktext = <fs_head>-ktext.
            APPEND fs_ret TO  output-mt_pp061_route_sap_res-head .

            ls_log-type = 'S'.
            ls_log-matnr = <fs_head>-matnr.
            ls_log-plnnr = ls_return-message_v2.
            ls_log-plnal = ls_return-message_v3.
            ls_log-message = ls_return-message.
            ls_log-aedat1 = sy-datum.
            ls_log-aedat2 = sy-uzeit.
            MODIFY ztpp061_log FROM ls_log.
            IF sy-subrc = 0.
              COMMIT WORK AND WAIT .
            ELSE.
              ROLLBACK WORK.
            ENDIF.

            CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
              EXPORTING
                wait = 'X'.
            EXIT.
          ENDLOOP.
        ELSE.
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ENDIF.
      ENDIF.
    ENDLOOP.
  ELSE.
    READ TABLE output-mt_pp061_route_sap_res-head INTO ls_out INDEX 1.
    ls_out-type = 'E'.
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
      EXPORTING
        input  = <fs_head>-matnr
      IMPORTING
        output = <fs_head>-matnr.
    ls_out-matnr = <fs_head>-matnr.
    ls_out-werks = <fs_head>-werks.
    ls_out-ktext = <fs_head>-ktext.
    ls_out-message = TEXT-m01.
    APPEND ls_out TO  output-mt_pp061_route_sap_res-head..

    ls_log-type = 'E'.
    ls_log-matnr = <fs_head>-matnr.
    ls_log-message = ls_out-message.
    ls_log-aedat1 = sy-datum.
    ls_log-aedat2 = sy-uzeit.
    MODIFY ztpp061_log FROM ls_log.
    IF sy-subrc = 0.
      COMMIT WORK AND WAIT .
    ELSE.
      ROLLBACK WORK.
    ENDIF.
  ENDIF.
ENDFUNCTION.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务