7 PP articles after the production process alternative materials Kitting

I can focus on scanning technology sharing public number, you learn something new together!

  1. For planned orders and production orders,

    When the present alternative materials, homogeneous set after the completion of checking, can follow a single homogeneous set of split amount, and does not remove material homogeneous set of alternatives (with a delete rule). Not homogeneous set on the arrangements for the production of the highest (maximum stock) components priority, other components removed.

  2. After the planned order processing Kitting

    Select all PLAF-STLFX <> X (BOM expanded fixed identity) planned orders.

    2.1 If the judgment PLAF- VFMNG (number of sets may be homogeneous)> 0, delete missing alternative sleeve material. Remove COMMITED QUANTITY, (RESB-VMENG = 0) of the assembly line.

    2.2 If PLAF- VFMNG (Qi can set the number) = 0, reserved date may demand a larger amount of alternative materials (delete planned orders component)

    2.3 If you have selected by homogeneous set of dismantling the planned order, then change the planned order number to be homogeneous set number.
    Re batch execution MRP, conduct batch ATP check.

     

  3. After homogeneous production order processing units
    3.1, if the production AFPO- VFMNG order (the number of sets may be homogeneous) <> 0, delete RESB- VMENG (commitment number) = 0 substitute material.
    3.2, if the production AFPO- VFMNG order (the number of sets may be homogeneous) = 0, reserved a ticket may be the largest amount of material alternative, deleted alternative materials. (Delete work order component)

    3.3, if the selected "by a single homogeneous set of results split work" , according AFPO- VFMNG (number of sets may be homogeneous) update work orders.

     

     


    下面分享需求里用到的主要功能:
    1,删除计划订单组件,删除生产订单组件 , 对应前台事务码分别是 MD12 , CO02
    2,修改计划订单总订单数量, 对应前台事务码 MD12
    3,修改工单总数量,                对应前台事务码 CO02



    1.删除订单组件用BAPI:
    *&---------------------------------------------------------------------*
    *& Form FRM_DEAL_DD01
    *&---------------------------------------------------------------------*
    *& text
    *&---------------------------------------------------------------------*
    *&      --> LT_RESBKEYS
    *&---------------------------------------------------------------------*
    FORM frm_deal_dd01  TABLES   pt_resbkeys TYPE coxt_t_resbdel.
      DATA: lt_return TYPE STANDARD TABLE OF bapiret2,
            lv_error  TYPE flag.
    
      CHECK pt_resbkeys[] IS NOT INITIAL.
    * BAPI to delete the components of Production Order
      CALL FUNCTION 'CO_XT_COMPONENTS_DELETE'
        EXPORTING
          it_resbkeys_to_delete = pt_resbkeys[]
        IMPORTING
          e_error_occurred      = lv_error
        TABLES
          ct_bapireturn         = lt_return
        EXCEPTIONS
          delete_failed         = 1
          OTHERS                = 2.
      IF lv_error IS INITIAL.
        PERFORM change_flag_set(saplcozv).
    *    CALL FUNCTION 'CO_IT_SET_FLG_ITAB_NEW'.
        CALL FUNCTION 'CO_XT_ORDER_PREPARE_COMMIT'.
        COMMIT WORK AND WAIT.
        LOOP AT gt_data ASSIGNING FIELD-SYMBOL(<gf_data>) WHERE aufnr = gs_key-aufnr
                                                              OR plnum = gs_key-plnum.
          <gf_data>-ctype = gc_s.
        ENDLOOP.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        CLEAR: gv_cmsg.
        LOOP AT lt_return INTO DATA(ls_return1) WHERE type CA 'EAX'.
          MESSAGE ID   ls_return1-id
                TYPE   ls_return1-type
                NUMBER ls_return1-number
                WITH   ls_return1-message_v1
                       ls_return1-message_v2
                       ls_return1-message_v3
                       ls_return1-message_v4
                INTO  DATA(lv_message).
          gv_ctype = gc_e.
          gv_cmsg = |{ lv_message };{ gv_cmsg }|.
          CLEAR: lv_message.
        ENDLOOP.
        LOOP AT gt_data ASSIGNING <gf_data> WHERE aufnr = gs_key-aufnr
                                                OR plnum = gs_key-plnum.
    
          <gf_data>-ctype = gc_e.
          <gf_data>-cmsg = gv_cmsg.
        ENDLOOP.
      ENDIF.
    ENDFORM.

    这步现在测试,删除生产订单OK ,删除计划订单也没有报错,但是没有删除成功, 正在找问题,
    放开 

    CALL FUNCTION 'CO_IT_SET_FLG_ITAB_NEW'.

    再测试一次


    需求数量 和 可用性检查数量 的对比


 已经走完commit work 但还是不能删除成功
本来 103102-0000HL-09 这一行应该被删除,

 

 






2,修改计划订单总订单数量

*&---------------------------------------------------------------------*
*& Form FRM_DEAL_PL
*&---------------------------------------------------------------------*
*& 更改计划订单的数量 为可齐套数量
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_deal_pl .
  DATA:ls_headerdata  TYPE bapiplaf_i2,
       ls_headerdatax TYPE bapiplaf_i2x,
       ls_return      TYPE bapireturn1.

  ls_headerdata-total_plord_qty = gs_data-qtmng.
  ls_headerdatax-total_plord_qty = 'X'.
**FIXED_SCRAP_QTY  "计划报废数量 字段AVMNG
  CALL FUNCTION 'BAPI_PLANNEDORDER_CHANGE'
    EXPORTING
      plannedorder = gs_data-plnum
      headerdata   = ls_headerdata
      headerdatax  = ls_headerdatax
    IMPORTING
      return       = ls_return.
  IF ls_return-type    CA 'EXA'.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    MESSAGE ID   ls_return-id
          TYPE   ls_return-type
          NUMBER ls_return-number
          WITH   ls_return-message_v1
                 ls_return-message_v2
                 ls_return-message_v3
                 ls_return-message_v4
           INTO  DATA(lv_message).
    gs_data-ctype = gc_e.
    gs_data-cmsg = lv_message.
    gs_data-sffc = abap_true.
    APPEND gs_data TO gt_data.
    CLEAR gs_data.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = abap_true.
    gs_data-sffc = abap_true.
    gs_data-ctype = gc_s.
    gs_data-cmsg = '更改计划订单的数量成功'(004).
  ENDIF.
ENDFORM.

               3.修改工单总数量, 

*&---------------------------------------------------------------------*
*& Form FRM_DEAL_DD02
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_deal_dd02 .
  DATA: ls_orderdata    LIKE  bapi_pp_order_change, "修改结构
        ls_orderdatax   LIKE  bapi_pp_order_changex,
        ls_order_status LIKE  bapi_order_status,
        lv_otype        LIKE  bapi_order_copy-order_type,
        lv_bapiflag     LIKE  bapiflag-bapiflag,
        ls_return       LIKE  bapiret2.

  IF p_dd02 EQ abap_true.
    ls_orderdata-quantity = gs_data-qtmng.
    ls_orderdatax-quantity = 'X'.
    CALL FUNCTION 'BAPI_PRODORD_CHANGE'
      EXPORTING
        number           = gs_data-aufnr
        orderdata        = ls_orderdata
        orderdatax       = ls_orderdatax
      IMPORTING
        return           = ls_return
        order_type       = lv_otype
        order_status     = ls_order_status
        master_data_read = lv_bapiflag.
    IF ls_return-type    CA 'EXA'.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      MESSAGE ID   ls_return-id
            TYPE   ls_return-type
            NUMBER ls_return-number
            WITH   ls_return-message_v1
                   ls_return-message_v2
                   ls_return-message_v3
                   ls_return-message_v4
             INTO  DATA(lv_message).
      gs_data-ctype = gc_e.
      gs_data-cmsg = lv_message.
      gs_data-sffc = abap_true.
      APPEND gs_data TO gt_data.
      CLEAR gs_data.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = abap_true.
      gs_data-sffc = abap_true.
      gs_data-ctype = gc_s.
      gs_data-cmsg = '按照afpo-vfmng (可齐套数量)更新工单成功'(003).
      APPEND gs_data TO gt_data.
      CLEAR gs_data.
    ENDIF.
  ENDIF.
ENDFORM.

 

Guess you like

Origin www.cnblogs.com/rainysblog/p/12014322.html