PP篇7 生产替代料齐套后处理
扫描可关注本人技术分享公众号,与您一起学习新知!
- 对于计划订单和生产订单,
当存在替代料的时候,完成齐套性检查后,按照可齐套量进行拆单,并删除不能齐套的替代料(有个删除规则)。不能齐套就按照优先级最高(库存最大)的组件安排生产,其他的组件删除。
- 计划订单齐套后处理
选择所有PLAF-STLFX <> X(物料清单展开的固定标识) 的计划订单。
2.1 判断如果PLAF- VFMNG (可齐套数量)>0,删除不齐套的替代料。删除COMMITED QUANTITY, (RESB-VMENG = 0)的组件行。
2.2 如果PLAF- VFMNG (可齐套数量)=0,保留需求日期可用量较大的替代料 (删除计划订单组件)
2.3 如果选择了按齐套拆解计划订单,则更改计划订单的数量为可齐套数量。
重新批量执行MRP,批量进行ATP检查。 - 生产订单齐套后处理
3.1,如果生产订单的AFPO- VFMNG (可齐套数量) <> 0, 删除掉RESB- VMENG (承诺数量)=0的替代料。
3.2,如果生产订单的AFPO- VFMNG (可齐套数量) =0, 保留工单中可用量最大的替代料,删除掉其他替代料。(删除工单组件)3.3,如果选择了“按齐套结果分拆工单”,按照AFPO- VFMNG (可齐套数量)更新工单。
下面分享需求里用到的主要功能:
1,删除计划订单组件,删除生产订单组件 , 对应前台事务码分别是 MD12 , CO02
2,修改计划订单总订单数量, 对应前台事务码 MD12
3,修改工单总数量, 对应前台事务码 CO021.删除订单组件用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 生产替代料齐套后处理的更多相关文章
- PP篇9 更改计划订单
首先看了下这个函数的版本 还挺新的 S4版本应该是有更新过,里面用了新语法 导入: PLANNEDORDER 计划订单号HEADERDATA 表头数据(来自外部系统) HEA ...
- PP篇11 增、改生产订单组件BAPI
增.改生产订单组件BAPI BAPI_ALM_ORDER_MAINTAIN USE BAPI_ALM_ORDER_MAINTAIN TO CREATE OR CHANGE PM WORK ORDER ...
- 金蝶K3 WISE BOM多级展开_物料齐套表
/****** Object: StoredProcedure [dbo].[pro_bobang_ICItemQiTao] Script Date: 07/29/2015 16:12:10 **** ...
- python 面向对象(进阶篇)转载武沛齐
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- 网络基础之网络协议篇---CS架构--网络通信--osi 协议---套接字socket--粘包
1 C\S 客户端/服务器架构: .硬件 C/S架构 (打印机) .软件 C/S 架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务 ...
- 最小齐套回写MO工单组件数量错误 SQL
SELECT * FROM OUT_MO_RES WHERE PEGGED_ID='001201271060'; --5000175080/160_1-MFG0011 SELECT * FROM V_ ...
- 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 ...
- PP篇10 修改工单组件行
CO_XT_COMPONENT_CHANGE 修改工单组件行 DATA : is_order_key TYPE coxt_ord_key, is_order_component_key TYPE co ...
- 【Python之路】特别篇--Django生产环境部署
Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. uWSGI uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中H ...
随机推荐
- Dubbo源码分析(5):ExtensionLoader
背景 Dubbo所有的模块加载是基于SPI机制的.在接口名的上一行加个@SPI注解表明要此模块要通过ExtensionLoader加载.基于SPI机制的扩展性比较好,在不修改原有代码,可以实现新模块的 ...
- BZOJ 2159: Crash 的文明世界 第二类斯特林数+树形dp
这个题非常巧妙啊~ #include <bits/stdc++.h> #define M 170 #define N 50003 #define mod 10007 #define LL ...
- kubefuse 让Kubernetes 资源成为fuse 文件系统
kubefuse 是基于fuse 开发的文件系统,我们可以像访问文件系统一样访问Kubernetes 资源,使用python开发 支持以下特性: 可以使用方便的linux tools: ls. vim ...
- 代码格式化工具---indent工具
indent工具,可以把代码格式化成某种风格. 通过命令:rpm -qa | grep indent 查看是否安装了indent工具. 若没有,可使用命令sudo apt-get install ...
- 利用fgetc合并2个源文件的内容,到一个新的文件中
#include <stdio.h> #include <stdlib.h> //功能: 合并2个源文件的内容,到一个新的文件中 int main(int a,char *ar ...
- python 之 字符串的常用方法
split()函数: 返回以指定的字符将字符串分割成多个元素的列表 my_str = 'name is wangxiaoming' print(my_str.split()) #默认不写参数表示按空格 ...
- 性能测试学习第八天-----linux环境整合篇
- Java 冒泡排序算法
public class StringSampleDemo { public static void main(String[] args) { int[] arr = {1, 2, -20, 20, ...
- 【CSP模拟赛】避难向导(倍增lca&树的直径)
耐力OIer,一天7篇博客 题目描述 “特大新闻,特大新闻!全国爆发了一种极其可怕的病毒,已经开始在各个城市 中传播开来!全国陷入了巨大的危机!大量居民陷入恐慌,想要逃到其它城市以 避难!经调查显示, ...
- mysql集群高可用架构
前言 高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能 ...