扫描可关注本人技术分享公众号,与您一起学习新知!

  1. 对于计划订单和生产订单,

    当存在替代料的时候,完成齐套性检查后,按照可齐套量进行拆单,并删除不能齐套的替代料(有个删除规则)。不能齐套就按照优先级最高(库存最大)的组件安排生产,其他的组件删除。

  2. 计划订单齐套后处理

    选择所有PLAF-STLFX <> X(物料清单展开的固定标识) 的计划订单。

    2.1  判断如果PLAF- VFMNG (可齐套数量)>0,删除不齐套的替代料。删除COMMITED QUANTITY, (RESB-VMENG = 0)的组件行。

    2.2  如果PLAF- VFMNG (可齐套数量)=0,保留需求日期可用量较大的替代料 (删除计划订单组件)

    2.3  如果选择了按齐套拆解计划订单,则更改计划订单的数量为可齐套数量。
    重新批量执行MRP,批量进行ATP检查。

  3. 生产订单齐套后处理
    3.1,如果生产订单的AFPO- VFMNG (可齐套数量) <> 0, 删除掉RESB- VMENG (承诺数量)=0的替代料。
    3.2,如果生产订单的AFPO- VFMNG (可齐套数量) =0, 保留工单中可用量最大的替代料,删除掉其他替代料。(删除工单组件)

    3.3,如果选择了“按齐套结果分拆工单”,按照AFPO- VFMNG (可齐套数量)更新工单。

    下面分享需求里用到的主要功能:
    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 =
    OTHERS = .
    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 = '更改计划订单的数量成功'().
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 (可齐套数量)更新工单成功'().
APPEND gs_data TO gt_data.
CLEAR gs_data.
ENDIF.
ENDIF.
ENDFORM.

PP篇7 生产替代料齐套后处理的更多相关文章

  1. PP篇9 更改计划订单

    首先看了下这个函数的版本  还挺新的 S4版本应该是有更新过,里面用了新语法 导入: PLANNEDORDER    计划订单号HEADERDATA          表头数据(来自外部系统) HEA ...

  2. PP篇11 增、改生产订单组件BAPI

    增.改生产订单组件BAPI BAPI_ALM_ORDER_MAINTAIN USE BAPI_ALM_ORDER_MAINTAIN TO CREATE OR CHANGE PM WORK ORDER ...

  3. 金蝶K3 WISE BOM多级展开_物料齐套表

    /****** Object: StoredProcedure [dbo].[pro_bobang_ICItemQiTao] Script Date: 07/29/2015 16:12:10 **** ...

  4. python 面向对象(进阶篇)转载武沛齐

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  5. 网络基础之网络协议篇---CS架构--网络通信--osi 协议---套接字socket--粘包

    1 C\S 客户端/服务器架构: .硬件 C/S架构 (打印机) .软件 C/S 架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务 ...

  6. 最小齐套回写MO工单组件数量错误 SQL

    SELECT * FROM OUT_MO_RES WHERE PEGGED_ID='001201271060'; --5000175080/160_1-MFG0011 SELECT * FROM V_ ...

  7. EBS ORACLE工单齐套率的计算程序

    PROCEDURE Get_wip_accept_item_date(p_use_id in number, p_org_id IN NUMBER, p_start_date IN DATE, p_e ...

  8. PP篇10 修改工单组件行

    CO_XT_COMPONENT_CHANGE 修改工单组件行 DATA : is_order_key TYPE coxt_ord_key, is_order_component_key TYPE co ...

  9. 【Python之路】特别篇--Django生产环境部署

    Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. uWSGI uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中H ...

随机推荐

  1. [Kubernetes] Defining a Pod with YAML

    1. Define a yml file: nginx.pod.yml: apiVersion: v1 kind: Pod metadata: name: my-nginx labels: app: ...

  2. 2019-2020-1 20199302《Linux内核原理与分析》第六周作业

    一 .万能函数 1.过程抽象 (1)接口:指明模块要做什么,标识符/类型.函数等,.h ,函数调用者 (2)实现:指明模块如何完成接口,一个接口多个实现(可能),.c ,函数实现者 (3)函数签名:函 ...

  3. greenplum 表在各个节点数据的分布情况

    select gp_segment_id,count(*) from table_name group by gp_segment_id;

  4. Apache Kylin在4399大数据平台的应用

    来自:AI前线(微信号:ai-front),作者:林兴财,编辑:Natalie作者介绍:林兴财,毕业于厦门大学计算机科学与技术专业.有多年的嵌入式开发.系统运维经验,现就职于四三九九网络股份有限公司, ...

  5. YAML_16 debug检测

    ansible]# ansible-playbook --syntax-check http.yml  //检测语法 playbook: http.yml ansible]# ansible-play ...

  6. 机器学习---用python实现感知机算法和口袋算法(Machine Learning PLA Pocket Algorithm Application)

    之前在<机器学习---感知机(Machine Learning Perceptron)>一文中介绍了感知机算法的理论知识,现在让我们来实践一下. 有两个数据文件:data1和data2,分 ...

  7. emacs源码安装

    1.源码下载地址=>下载 选择下载的版本,我下的是emacs-26.1.tar.xz 版本 2.解压 xz -d emacs-26.1.tar.xz # 解压成tar文件 tar -xvf em ...

  8. NOIP前做题记录

    鉴于某些原因(主要是懒)就不一题一题写了,代码直接去\(OJ\)上看吧 CodeChef Making Change 传送门 完全没看懂题解在讲什么(一定是因为题解公式打崩的原因才不是曲明英语太差呢- ...

  9. 利用HTML和CSS设计一个静态的“小米商城官网首页”

    一.小项目说明 这是个例行的小项目练习,主要利用html和css的基础知识,复刻一个缩减版的小米商城网页.包括[导航栏].[头部logo区,快捷键.搜索框].[网页主体].[网页尾部]几个部分.目前只 ...

  10. 1066 Root of AVL Tree (25)

    An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...