CO02修改组件物料

修改组件物料有2种方法,一种是BDC,一种是通过BAPI ‘CO_XT_COMPONENT_CHANGE’

下面说一下‘CO_XT_COMPONENT_CHANGE’的用法,例子里只修改组件里面的物料

DATA: lv_po        TYPE coxt_ord_key,
        ls_component TYPE coxt_s_ord_comp_key,
        ls_requ      TYPE coxt_s_quantity,
        ls_requx     TYPE coxt_s_quantityx,
        ls_conf      TYPE coxt_s_quantity,
        ls_confx     TYPE coxt_s_quantityx,
        lv_matnr     TYPE coxt_material,
        lv_matnrx    TYPE coxt_materialx,
        ls_oper      TYPE coxt_s_ord_opr_key,
        ls_operx     TYPE coxt_s_ord_opr_keyx,
        ls_storage   TYPE coxt_s_storage_location,
        ls_storagex  TYPE coxt_s_storage_locationx,
        lv_charg     TYPE coxt_batch,
        lv_chargx    TYPE coxt_batchx,
        lv_cuobj     TYPE coxt_config_object,
        lv_cuobjx    TYPE coxt_config_objectx,
        ls_return    TYPE coxt_bapireturn.

lv_po = <lfs_comp>-aufnr."生产订单号

    "预留单项次
    ls_component-rsnum = <lfs_comp>-rsnum.
    ls_component-rspos = <lfs_comp>-rspos.
    ls_component-rsart = <lfs_comp>-rsart.
    "组件
    lv_matnr = gs_zjth-matnr_zj_new.”修改后的物料
    lv_matnrx = 'X'.

    "数量
*ls_conf-quantity = '5'.
*ls_conf-uom = <lfs_comp>-MEINS.
*ls_confX-quantity = 'X'.
*ls_confX-uom = 'X'.

*"组件领料仓库
    ls_storage-werks = <lfs_comp>-werks.“当修改物料的时候,这里的工厂必填,要不然会报错
    ls_storagex-werks = 'X'.

*ls_storage-lgort = <lfs_comp>-LGORT.
*ls_storagex-lgort = 'X'.

    CALL FUNCTION 'CO_XT_COMPONENT_CHANGE'
      EXPORTING
        is_order_key               = lv_po          "生产订单
        is_order_component_key     = ls_component   "组件
        is_requirement_quantity    = ls_requ        "组件需求数量
        is_requirement_quantityx   = ls_requx
        is_confirmed_quantity      = ls_conf        "生产数量
        is_confirmed_quantityx     = ls_confx
        i_material                 = lv_matnr       "组件物料
        i_materialx                = lv_matnrx
        is_order_operation_key     = ls_oper        "组件指派工序
        is_order_operation_keyx    = ls_operx
        is_storage_location        = ls_storage     "组件领料仓库
        is_storage_locationx       = ls_storagex
        i_batch                    = lv_charg       "批次
        i_batchx                   = lv_chargx
        i_mi_configuration_object  = lv_cuobj       "内置对象号码
        i_mi_configuration_objectx = lv_cuobjx
      IMPORTING
        es_bapireturn              = ls_return.

      IF  ls_return-type CA 'EAX'.
            ROLLBACK WORK.
            lv_zmsg = '替换生产订单组件失败'.
      ELSE.
    CALL FUNCTION 'CO_ZV_ORDER_POST'
        EXPORTING
          commit_flag             = space
          ext_flg                 = 'X'
          trans_typ               = 'V'
          no_dialog               = 'X'
          iv_commit_work_and_wait = 'X'
        EXCEPTIONS
          no_change               = 01
          update_reject           = 02
          error_message           = 03.

*      CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'
*        IMPORTING
*          es_bapireturn = ls_return.


        COMMIT WORK AND WAIT.
        lv_zmsg = '修改成功'.

      CALL FUNCTION 'CO_XT_ORDER_INITIALIZE'."这个一定要写,要不然再次处理的时候,会报错
        ENDIF.
 
         

CO_XT_ORDER_PREPARE_COMMIT 和 CO_ZV_ORDER_POST 作用一样,但是前者会有弹窗,所以程序里面用了后者,设置 no_dialog = ‘X’,就不会弹窗了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值