ABAP DEMO CO_XT_COMPONENT_CHANGE CO02生产订单组件变更

" 生产订单组件单条变更物料, 数量, 工厂, 库存等信息
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.
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值