CO_XT_COMPONENT_CHANGE 修改工单组件行

  DATA :
    is_order_key           TYPE  coxt_ord_key,
    is_order_component_key TYPE  coxt_s_ord_comp_key,
    l_mode                 TYPE char1 VALUE 'A'.
 
  DATA  :
    wa_resb          TYPE resb,
    es_bapireturn    TYPE  coxt_bapireturn,
    e_error_occurred TYPE  c,
    l_dyn_lgort      TYPE string,
    l_tag            TYPE char2.
 
  is_order_key = uv_aufnr.
 
  SELECT *
    INTO TABLE @DATA(lt_resb)
    FROM resb
    WHERE aufnr EQ @is_order_key.
 
 
  DATA:ls_resb TYPE resb.
*  DATA is_order_key               TYPE coxt_ord_key.
*  DATA is_order_component_key     TYPE coxt_s_ord_comp_key.
  DATA is_requirement_quantity    TYPE coxt_s_quantity.
  DATA is_requirement_quantityx   TYPE coxt_s_quantityx.
  DATA is_confirmed_quantity      TYPE coxt_s_quantity.
  DATA is_confirmed_quantityx     TYPE coxt_s_quantityx.
  DATA i_material                 TYPE coxt_material.
  DATA i_materialx                TYPE coxt_materialx.
  DATA is_storage_location        TYPE coxt_s_storage_location.
  DATA is_storage_locationx       TYPE coxt_s_storage_locationx.
  DATA i_batch                    TYPE coxt_batch.
  DATA:is_order_operation_key     TYPE coxt_s_ord_opr_key.
  DATA:is_order_operation_keyx     TYPE coxt_s_ord_opr_keyx.
  DATA i_batchx                   TYPE coxt_batchx.
  DATA i_mi_configuration_object  TYPE coxt_config_object.
  DATA i_mi_configuration_objectx TYPE coxt_config_objectx.
 
 
  LOOP AT lt_resb INTO ls_resb.
 
    " 锁定预留.
*  "锁定预留.
    CALL FUNCTION 'ENQUEUE_EMRESB'
      EXPORTING
        mode_resb      = 'E'
        mandt          = sy-mandt
        rsnum          = ls_resb-rsnum
        rspos          = ls_resb-rspos
        rsart          = ls_resb-rsart
      EXCEPTIONS
        foreign_lock   = 1
        system_failure = 2
        OTHERS         = 3.
    IF sy-subrc <> 0.
      e_error_occurred = 'X'.
 
      es_bapireturn-type = 'E'.
      es_bapireturn-id   = '00'.
      es_bapireturn-number  = '001'.
      es_bapireturn-message = '预留锁定失败!'.
      RETURN.
    ENDIF.
 
    is_order_component_key-rsnum   =   ls_resb-rsnum.
    is_order_component_key-rspos   =   ls_resb-rspos.
    is_order_component_key-rsart   =   ls_resb-rsart.
 
*  is_requirement_quantity-quantity =  zcoxt_s_quantity-menge.
*  is_requirement_quantity-uom   =  ls_resb-meins.
*  is_requirement_quantityx-quantity = 'X'.
    i_material = ls_resb-matnr.
 
    is_storage_location-werks = ls_resb-werks.
    is_storage_locationx-werks = 'X'.
    is_storage_location-lgort = uv_lgort.
    is_storage_locationx-lgort = 'X'.
*  i_batch = ls_resb-charg.
 
*  is_order_operation_key
    DATA:ls_afko TYPE afko.
    SELECT SINGLE * INTO ls_afko  FROM afko WHERE aufnr = is_order_key.
    IF sy-subrc  = 0.
      SELECT  SINGLE aplzl INTO is_order_operation_key-aplzl  FROM afvc WHERE aufpl = ls_afko-aufpl AND vornr = ls_resb-vornr.
    ENDIF.
    is_order_operation_key-aufnr  = uv_aufnr.
 
    is_order_operation_keyx-aufnr  = 'X'.
    is_order_operation_keyx-aplzl  = 'X'.
 
 
    CALL FUNCTION 'CO_XT_ORDER_INITIALIZE'.
 
    CALL FUNCTION 'CO_XT_COMPONENT_CHANGE'
      EXPORTING
        is_order_key               = ls_resb-aufnr
        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_order_operation_key     = is_order_operation_key
        is_order_operation_keyx    = is_order_operation_keyx
*       IS_REQUIREMENT_DATE        = IS_REQUIREMENT_DATE
*       IS_REQUIREMENT_DATEX       = IS_REQUIREMENT_DATEX
        is_storage_location        = is_storage_location
        is_storage_locationx       = is_storage_locationx
        i_batch                    = i_batch
        i_batchx                   = i_batchx
        i_mi_configuration_object  = i_mi_configuration_object
        i_mi_configuration_objectx = i_mi_configuration_objectx
      IMPORTING
        es_bapireturn              = es_bapireturn
        e_error_occurred           = e_error_occurred.
    IF sy-subrc <> 0.
      RETURN.
    ELSE.
      DATA e_order_key      TYPE coxt_ord_key.
      DATA et_ord_key_map   TYPE coxt_t_ord_key_map.
      DATA et_bapireturn    TYPE coxt_t_bapireturn.
 
      CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'
        IMPORTING
          e_order_key      = e_order_key
          es_bapireturn    = es_bapireturn
          e_error_occurred = e_error_occurred
        TABLES
          et_ord_key_map   = et_ord_key_map
          et_bapireturn    = et_bapireturn.
      IF sy-subrc = 0.
        COMMIT WORK AND WAIT.
      ELSE.
        DELETE et_bapireturn WHERE type <> 'E' OR type <> 'A'.
        READ TABLE et_bapireturn INTO es_bapireturn  INDEX 1.
      ENDIF.
    ENDIF.
 
*解锁
    CALL FUNCTION 'DEQUEUE_EMRESB'
      EXPORTING
        mode_resb = 'E'
        mandt     = sy-mandt
        rsnum     = ls_resb-rsnum
        rspos     = ls_resb-rspos
        rsart     = ls_resb-rsart.
 
  ENDLOOP.
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampaignWolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值