ABAP DEMO CO01 生产订单创建_修改_删除

BAPI_PRODORD_CREATE 生产订单创建
BAPI_PRODORD_CHANGE 生产订单修改
BAPI_PRODORD_SET_DELETION_FLAG 生产订单删除

PERFORM frm_create_co01 USING 'I'.   " I Insert U Update D Delete
*&---------------------------------------------------------------------*
*& Form frm_create_co01
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_create_co01 USING iv_updkz TYPE updkz_d.
  DEFINE df_ins.
    IF &2 IS NOT INITIAL.
      &1 = &2.
      &3 = &4.
    ENDIF.
  END-OF-DEFINITION.

  " 新建
  DATA: ls_orderdata          TYPE bapi_pp_order_create,
        ls_fsh_prodord_season TYPE fsh_s_bapi_prodord_season.

  " 修改
  DATA: ls_orderdata_u  TYPE bapi_pp_order_change,
        ls_orderdatax_u TYPE bapi_pp_order_changex.
  " 删除
  DATA: lt_orderdata_d TYPE TABLE OF bapi_order_key,
        lt_return      TYPE TABLE OF bapi_order_return.

  " 通用
  DATA: ls_return TYPE bapiret2,
        lv_aufnr  TYPE aufnr.

  CASE iv_updkz.
    WHEN 'I'.   " 新建

      ls_orderdata = VALUE #(
         material          = 'MATNR18'      " 物料18长度
         material_long     = 'MATNR'        " 物料(如果物料不算前置0长度超过18, 需要往material_long放值)
         goods_recipient   = 'WEMPF'        " 收货方
         unloading_point   = 'ABLAD'        " 卸货点
         storage_location  = 'LGORT'        " 库存地点
         plant             = 'WERKS'        " 工厂
         order_type        = 'AUART'        " 订单类型
         basic_start_date  = 'GSTRP'        " 基本开始日期
         basic_end_date    = 'GLTRP'        " 基本结束日期
         quantity          = 'GAMNG'        " 数量
         quantity_uom      = 'GMEIN'        " 单位
         mrp_controller    = 'DISPO'        " MRP控制员
         order_priority    = 'APRIO'        " 优先级
         profit_center     = 'PRCTR'        " 利润中心
         routing_type      = 'PLNTY'        " 任务清单类型
         routing_group     = 'PLNNR'        " 任务清单组码
         routing_counter   = 'PLNAL'        " 组计算器
         prod_version      = 'VERID'        " 版本
      ).

      CALL FUNCTION 'BAPI_PRODORD_CREATE'
        EXPORTING
          orderdata    = ls_orderdata
        IMPORTING
          return       = ls_return
          order_number = lv_aufnr.

      IF ls_return-type CA 'EAX'.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        CONCATENATE '生产订单创建失败' lv_zmsg ls_return-message INTO DATA(lv_zmsg) SEPARATED BY '/'.
      ELSE.
        IF lv_aufnr IS NOT INITIAL.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = abap_true.
          CONCATENATE '生产订单' lv_aufnr '创建成功' INTO lv_zmsg SEPARATED BY '/'..
        ELSE.
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
          lv_zmsg = '生产订单创建失败, 返回消息丢失'.
        ENDIF.
      ENDIF.

    WHEN 'U'.  " 修改


      lv_aufnr = 'AUFNR'.

      df_ins ls_orderdata_u-basic_start_date      'GSTRP  ' ls_orderdatax_u-basic_start_date      abap_true.        " 基本开始日期
      df_ins ls_orderdata_u-basic_end_date        'GLTRP  ' ls_orderdatax_u-basic_end_date        abap_true.        " 基本完成日期
      df_ins ls_orderdata_u-quantity              'GAMNG  ' ls_orderdatax_u-quantity              abap_true.        " 总订单数量
      df_ins ls_orderdata_u-scrap_quantity        'GASMG  ' ls_orderdatax_u-scrap_quantity        abap_true.        " 订单中的总报废数量
      df_ins ls_orderdata_u-quantity_uom          'GMEIN  ' ls_orderdatax_u-quantity_uom          abap_true.        " 全部订单项通用单位
      df_ins ls_orderdata_u-prod_version          'VERID  ' ls_orderdatax_u-prod_version          abap_true.        " 生产版本
      df_ins ls_orderdata_u-explosion_date        'AUFLD  ' ls_orderdatax_u-explosion_date        abap_true.        " BOM展开/工艺路线转换的日期
      df_ins ls_orderdata_u-order_priority        'APRIO  ' ls_orderdatax_u-order_priority        abap_true.        " 订单优先级
      df_ins ls_orderdata_u-mrp_controller        'DISPO  ' ls_orderdatax_u-mrp_controller        abap_true.        " MRP 控制员
      df_ins ls_orderdata_u-business_area         'GSBER  ' ls_orderdatax_u-business_area         abap_true.        " 业务范围
      df_ins ls_orderdata_u-profit_center         'PRCTR  ' ls_orderdatax_u-profit_center         abap_true.        " 利润中心
      df_ins ls_orderdata_u-sequence_number       'SEQNR  ' ls_orderdatax_u-sequence_number       abap_true.        " 序号顺序
      df_ins ls_orderdata_u-stock_type            'INSMK  ' ls_orderdatax_u-stock_type            abap_true.        " 库存类型
      df_ins ls_orderdata_u-gr_proc_time          'WEBAZ  ' ls_orderdatax_u-gr_proc_time          abap_true.        " 以天计的收货处理时间
      df_ins ls_orderdata_u-storage_location      'LGORT  ' ls_orderdatax_u-storage_location      abap_true.        " 存储地点
      df_ins ls_orderdata_u-mrp_distr_key         'VERTL  ' ls_orderdatax_u-mrp_distr_key         abap_true.        " MRP 分配代码
      df_ins ls_orderdata_u-goods_recipient       'WEMPF  ' ls_orderdatax_u-goods_recipient       abap_true.        " 收货方
      df_ins ls_orderdata_u-unloading_point       'ABLAD  ' ls_orderdatax_u-unloading_point       abap_true.        " 卸货点
      df_ins ls_orderdata_u-additional_days       'ADTDAYS' ls_orderdatax_u-additional_days       abap_true.        " 附加天数
      df_ins ls_orderdata_u-stock_segment         'SCAT16 ' ls_orderdatax_u-stock_segment         abap_true.        " 库存细分
      df_ins ls_orderdata_u-stk_seg_long          'SCAT40 ' ls_orderdatax_u-stk_seg_long          abap_true.        " 库存细分
      df_ins ls_orderdata_u-basic_scheduling_type 'TERMKZ ' ls_orderdatax_u-basic_scheduling_type abap_true.        " 计划类型


      CALL FUNCTION 'BAPI_PRODORD_CHANGE'
        EXPORTING
          number     = lv_aufnr
          orderdata  = ls_orderdata_u
          orderdatax = ls_orderdatax_u
        IMPORTING
          return     = ls_return.
      IF ls_return-type = 'EAX'.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        CONCATENATE '生产订单变更失败' lv_zmsg ls_return-message INTO lv_zmsg SEPARATED BY '/'.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = abap_true.
        CONCATENATE '生产订单变更成功' lv_zmsg INTO lv_zmsg SEPARATED BY '/'..
      ENDIF.

    WHEN 'D'.   " 删除

      lt_orderdata_d = VALUE #( ( order_number = 'AUFNR' ) ).

      CALL FUNCTION 'BAPI_PRODORD_SET_DELETION_FLAG'
        IMPORTING
          return        = ls_return
        TABLES
          orders        = lt_orderdata_d
          detail_return = lt_return.

      LOOP AT lt_return INTO DATA(wa_return) WHERE type CA 'EAX'.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        CONCATENATE '生产订单删除失败' lv_zmsg wa_return-message INTO lv_zmsg SEPARATED BY '/'.
      ENDLOOP.

      IF ls_return-type CA 'EAX'.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        CONCATENATE lv_zmsg ls_return-message INTO lv_zmsg SEPARATED BY '/'..
      ENDIF.

      IF lv_zmsg IS INITIAL.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = abap_true.
        lv_zmsg = '生产订单删除成功'.
      ENDIF.

  ENDCASE.

ENDFORM.
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值