" 生产订单组件单条变更物料, 数量, 工厂, 库存等信息
PERFORM frm_update_co02.
*&---------------------------------------------------------------------*
*& Form frm_update_co02
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_update_co02.
DATA: is_order_key TYPE coxt_ord_key,
is_order_component_key TYPE coxt_s_ord_comp_key,
is_requirement_quantity TYPE coxt_s_quantity,
is_requirement_quantityx TYPE coxt_s_quantityx,
is_confirmed_quantity TYPE coxt_s_quantity,
is_confirmed_quantityx TYPE coxt_s_quantityx,
i_material TYPE coxt_material,
i_materialx TYPE coxt_materialx,
is_storage_location TYPE coxt_s_storage_location,
is_storage_locationx TYPE coxt_s_storage_locationx,
i_batch TYPE coxt_batch,
i_batchx TYPE coxt_batchx,
i_mi_configuration_object TYPE coxt_config_object,
i_mi_configuration_objectx TYPE coxt_config_objectx,
i_vornr TYPE coxt_vornr,
i_vornrx TYPE coxt_vornrx,
ls_return TYPE bapiret2,
lv_error TYPE c.
" 锁定生产订单组件数据
CALL FUNCTION 'ENQUEUE_EMRESB'
EXPORTING
rsnum = 'RSNUM'
rspos = 'RSPOS'
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
INTO DATA(lv_zmsg) .
RETURN.
ENDIF.
*--------------------------------------------------------------------*
is_order_key = 'AUFNR'. " 订单
is_order_component_key-rsnum = 'RSNUM'. " 预留
is_order_component_key-rspos = 'RSPOS'. " 预留行
is_requirement_quantity-quantity = 'MENGE'. " 数量
is_requirement_quantity-uom = 'MEINS'. " 单位
is_requirement_quantityx-quantity = abap_true.
is_requirement_quantityx-uom = abap_true.
i_material = 'IDNRK'. " 组件
i_materialx = abap_true.
is_storage_location-werks = 'WERKS'. " 工厂
is_storage_location-lgort = 'LGORT'. " 库存地
is_storage_locationx-werks = abap_true.
is_storage_locationx-lgort = abap_true.
IF 'BATCH' IS NOT INITIAL.
i_batch = 'BATCH'.
i_batchx = abap_true.
ENDIF.
IF 'VORNR' IS NOT INITIAL.
i_vornr = 'VORNR'.
i_vornrx = abap_true.
ENDIF.
CALL FUNCTION 'CO_XT_COMPONENT_CHANGE'
EXPORTING
is_order_key = is_order_key
is_order_component_key = is_order_component_key
is_requirement_quantity = is_requirement_quantity
is_requirement_quantityx = is_requirement_quantityx
is_confirmed_quantity = is_confirmed_quantity
is_confirmed_quantityx = is_confirmed_quantityx
i_material = i_material
i_materialx = i_materialx
is_storage_location = is_storage_location
is_storage_locationx = is_storage_locationx
i_batch = i_batch
i_batchx = i_batchx
i_vornr = i_vornr
i_vornrx = i_vornrx
i_mi_configuration_object = i_mi_configuration_object
i_mi_configuration_objectx = i_mi_configuration_objectx
IMPORTING
es_bapireturn = ls_return
e_error_occurred = lv_error.
IF lv_error IS NOT INITIAL OR ls_return-type CA 'EAX'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
lv_zmsg = '替换生产订单组件失败'.
ELSE.
CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'
IMPORTING
es_bapireturn = ls_return
e_error_occurred = lv_error.
IF lv_error IS NOT INITIAL OR ls_return-type CA 'EAX'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
lv_zmsg = '替换生产订单组件失败'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
CALL FUNCTION 'CO_XT_ORDER_INITIALIZE'.
lv_zmsg = '替换生产订单组件成功'.
ENDIF.
ENDIF.
*--------------------------------------------------------------------*
CALL FUNCTION 'DEQUEUE_EMRESB'
EXPORTING
rsnum = 'RSNUM'
rspos = 'RSPOS'.
ENDFORM.
CO02 工单修改组件
最新推荐文章于 2024-09-11 11:53:23 发布