MRP清单的动态和静态ABAP的取法
来源:互联网 发布:煤炭进出口数据 编辑:程序博客网 时间:2024/05/12 16:45
无意中发现有个程序用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的取法
- MRP清单的动态和静态ABAP的取法
- 库存/需求清单(MD04)和MRP清单-物料(MD05)的区别
- 库存/需求清单(MD04)和MRP清单-物料(MD05)的区别
- Radan 的Mrp导入加工清单功能
- MPS和MRP的关系
- [管理]MPS和MRP的区别
- sap知识-MPS和MRP的区别
- 又是Number Ranger惹的祸(运行MRP时,ABAP Error,附解决代码)
- MRP的計算步驟
- MRP的計算步驟
- 物料的mrp
- MRP的类型
- MRP的逻辑流程图
- MRP的类型
- 对于ff chrome和ie下,全局动态定位的异同,全局高度的取法
- 【动态语言和静态语言的比较】动态or静态?
- 尺取法求最短的子序列和
- Android 防止快速 点击 多次
- 吸血鬼数字检验之java实现
- 19. JavaScript RegExp 对象
- [递推+dfs]ZOJ 3436. July Number
- Python正则表达式的七个使用范例
- MRP清单的动态和静态ABAP的取法
- 视频播放提示:video not found or access denied
- 查看网络端口占用
- mybatis中关于传入参数parameterType
- html+css
- uboot从nand启动
- 利用Toolbar和SlidingTabLayout实现Tab
- 一个让你学习SQL语句的教程
- mysql设置远程访问数据库的多种方法