MRP清单的动态和静态ABAP的取法
无意中发现有个程序用IMPORT mdtbx FROM DATABASE mdtc(ar) ID mdkp-dtnum取MRP清单的时候,发现如果一个工厂对应多种MRP区域的时候,取不到另外MRP区域的数据,
但是用函数MD_STOCK_REQUIREMENTS_LIST_API可以取到,经深入分析得知这两种取法的区别:
用语句IMPORT mdtbx FROM DATABASE mdtc(ar) ID mdkp-dtnum取的是上一次MRP运行过后的结果,这个是静态的结果(也就是事物码MD05的结果)。
用函数MD_STOCK_REQUIREMENTS_LIST_API取得是实时的MRP的结果,这个是动态的结果(也就是事物码MD04的结果),此种方法可以区别MRP区域,如果不输入MRP区域
的话,就是默认为一个工厂所有MRP区域所有的结果,如果想取静态的其他MRP区域的结果的话,可以使用下面的代码:
REPORT ZMRPTABLE.
TABLES: MDKP, "Header Data for MRP Document
MDTB, "MRP table
MDTC, "Aggregated MRP table items
T457T. "Description of MRP elements
DATA: BEGIN OF MDTBX OCCURS 0.
INCLUDE STRUCTURE MDTB.
DATA: END OF MDTBX.
SELECT-OPTIONS: PLANT FOR MDKP-PLWRK OBLIGATORY,
MATNR FOR MDKP-MATNR OBLIGATORY.
* 默认工厂和MRP区域一样的情况
CLEAR: MDKP, MDTB.
SELECT * FROM MDKP WHERE DTART EQ 'MD'
AND MATNR IN MATNR
AND PLWRK IN PLANT.
WRITE:/ MDKP-MATNR, MDKP-PLWRK.
IF MDKP-CFLAG EQ 'X'.
CLEAR MDTBX. REFRESH MDTBX.
IMPORT MDTBX FROM DATABASE MDTC(AR) ID MDKP-DTNUM.
LOOP AT MDTBX.
MOVE MDTBX TO MDTB.
SELECT SINGLE * FROM T457T WHERE SPRAS = 'E'
AND DELKZ = MDTB-DELKZ.
IF MDTB-PLUMI = '-'. MULTIPLY MDTB-MNG01 BY -1. ENDIF.
WRITE:/ MDTB-DAT00, T457T-DELB1, MDTB-VSTAT,
MDTB-MNG01, MDTB-LGORT.
ENDLOOP.
ELSE.
SELECT * FROM MDTB
WHERE DTNUM EQ MDKP-DTNUM
ORDER BY PRIMARY KEY.
SELECT SINGLE * FROM T457T WHERE SPRAS = 'E'
AND DELKZ = MDTB-DELKZ.
IF MDTB-PLUMI = '-'. MULTIPLY MDTB-MNG01 BY -1. ENDIF.
WRITE:/ MDTB-DAT00, T457T-DELB1, MDTB-VSTAT,
MDTB-MNG01, MDTB-LGORT.
ENDSELECT.
ENDIF.
ENDSELECT.
* 默认工厂和MRP区域不一样的情况
CLEAR: MDKPDB, MDTB.
SELECT * FROM MDKPDB WHERE DTART EQ 'MD'
AND MATNR IN MATNR
AND PLWRK IN PLANT.
WRITE:/ MDKPDB-MATNR, MDKPDB-PLWRK.
IF MDKP-CFLAG EQ 'X'.
CLEAR MDTBX. REFRESH MDTBX.
IMPORT MDTBX FROM DATABASE MDTC(AR) ID MDKPDB-DTNUM.
LOOP AT MDTBX.
MOVE MDTBX TO MDTB.
SELECT SINGLE * FROM T457T WHERE SPRAS = 'E'
AND DELKZ = MDTB-DELKZ.
IF MDTB-PLUMI = '-'. MULTIPLY MDTB-MNG01 BY -1. ENDIF.
WRITE:/ MDTB-DAT00, T457T-DELB1, MDTB-VSTAT,
MDTB-MNG01, MDTB-LGORT.
ENDLOOP.
ELSE.
SELECT * FROM MDTB
WHERE DTNUM EQ MDKPDB-DTNUM
ORDER BY PRIMARY KEY.
SELECT SINGLE * FROM T457T WHERE SPRAS = 'E'
AND DELKZ = MDTB-DELKZ.
IF MDTB-PLUMI = '-'. MULTIPLY MDTB-MNG01 BY -1. ENDIF.
WRITE:/ MDTB-DAT00, T457T-DELB1, MDTB-VSTAT,
MDTB-MNG01, MDTB-LGORT.
ENDSELECT.
ENDIF.
ENDSELECT.
MRP清单的动态和静态ABAP的取法相关推荐
- SAP ABAP 开发管理 代码内存标记 位置使用清单(Mark of memory id)
SAP ABAP 开发管理 代码内存标记 位置使用清单(Mark of memory id) 引言: 代码内存标记(Mark of memory id)是我开发中对 ABAP MEMORY ID 使用 ...
- 计划订单号码范围用完导致MRP无法运行
今天碰到一个问题,业务部门反映有一些物料的MRP无法运行,不管是批量MD01还是MD02都无法运行出计划订单,相关需求无法传递. 运行MRP的时候提示没有创建任何的计划订单,且提示MRP清单终止,开始 ...
- 【PP操作手册】运行MRP产生计划订单
菜单路径:SAP 菜单 > 后勤 > 生产 > 资源分配计划 > 报表 > MD04 – 库存/需求清单 事务代码:MD04 双击进入"库存/需求清单:初始屏幕 ...
- MRP例外消息处理方法
组 例外 例外信息 诊断 处理建议 1 02 新, 和过去的未清日期 New, and opening date in the past 在MRP清单里,这个例外信息表明: • 计划订单在最近一次 ...
- 主生产计划的功能以及其相关MRP类型参数
主生产计划实际相当于一个计划调节器,用主生产计划可以合理的调节企业资源配置与需求的矛盾,避免由于需求不稳定造成的产品未能按期交货,产品积压,资源浪费.超负荷运转等现象,提高企业对用户的服务水平. 一般 ...
- SAP ABAP程序优化-多线程并行处理
转载请标明出处:http://blog.csdn.net/wanglei880526/article/details/8949754 实际项目实施过程中,我们会遇到程序性能优化的问题,这里介绍一种方法 ...
- 【PP MRP】MRP参数详解
一.RUN MRP T-code:MD01 MD02 Processing key(处理代码) : NETCH (净变化计划):即只计划上次计划以后计划相关内容发生变动的物料(注意,某些物料的参 ...
- PP实施经验分享(5)——SAP中MD04显示常用函数(读取SAP MRP运行数据)
PP实施经验分享(5)--SAP中MD04显示常用函数(读取SAP MRP运行数据) SAP实施过程中,经常会遇到用户对于现有MD04标准功能展示有一定的抱怨,不符合我们查看的习惯,经常会提出相关报表 ...
- SAP-PP生产计划-MRP运行相关参数
1. 判断工厂是否运行MRP: ECC需要激活工厂是否运行MRP(S4无需激活):生产-物料需求计划-计划文件条目-激活MRP 2. 判断物料是否运行MRP: ①物料主数据MRP视图1-MRP类型控制 ...
最新文章
- JWT(JSON Web Token)简介及实现
- 周五晚上看了变形金刚
- js如何使浏览器允许脚本异步加载
- iOS LaunchScreen和LaunchImage的转换启动图
- 地图检索 – 与众不同
- Python 技术篇-容易被忽略的尾差问题
- 射影几何笔记5:齐次坐标(Homogeneous coordinates)
- 关于引用传递的测试题
- qtablewidget 选中不改变背景_C4D制作不一样的核壳结构
- C#组成考题字符串【C#】
- 浙江大学计算机考研408上岸,2016年跨考上岸浙江大学计算机研究生,初试412分经验谈!...
- 记录CodeForces第一次比赛经历
- [转载] numpy用法(logical_and, nonzero,arange, reshape)
- 理解Python的协程机制-Yield
- 安装win11,跳过TPM2.0限制
- django 数据库配置
- 程序员常用的25个技术网站,良心推荐!
- 网站服务器到期后 内容释放,服务器到期后多久释放
- 美团java后台面经
- sqlMap embedded=iSinta.Beiwo.Infrastructure.Mappers.Member.MemberAddress.xml, iSinta.Beiwo.Inf