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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务