MARD和MARDH的区别

MARD和MARDH的区别MARD 里记载的是当前库存的数量 但是期间并不一定是当月

大家好,欢迎来到IT知识分享网。

MARD里记载的是当前库存的数量,但是期间并不一定是当月。

比如你物料4月一整月都没有库存数量变化(没收没发),那么5月初你看MARD里的条目期间数还是4月而非5月。

当某个期间发生货物移动的时候,系统在更新mard数据的之前(这个表是实时更新的),会检查此笔业务过账期间和mard里对应记录的期间是否一致,也就是看这是不是本期间第一笔移动。

如果是,copy表mard里对应记录到mardh,然后把mard记录改成当期(也可能是先删后建),然后再作更新数量数据的操作。

如果不是第一笔记录,也就是mard期间和mseg期间一致,则不作copy记录只更新mard数量。

这样处理貌似减少了冗余数据,不过给编程取历史库存增加了很大的工作量,个人觉得不算明智之举。

计算常用料月结库存的首选透明表:

MARD: 物料仓储位置的当前库存数据
MARDH:物料仓储库存的历史数据

MARD中:

物料 A100 期间 04 数量 3

MARDH中:

物料 A100 期间 01 数量 10
物料 A100 期间 03 数量 17

由此可见,如果要查询物料A100在期间02的库存,应是17;在期间05的库存则是13。

下面函数可实现查询任一工厂下、任一库存地点中、任一物料、在任一期间末的库存(非限制+质检中+冻结)。

FUNCTION Z_GET_PERIOD_STOCK_3. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" REFERENCE(WERKS) LIKE MARD-WERKS *" REFERENCE(LGORT) LIKE MARD-LGORT *" REFERENCE(MATNR) LIKE MARD-MATNR *" REFERENCE(LFGJA) LIKE MARD-LFGJA *" REFERENCE(LFMON) LIKE MARD-LFMON *" EXPORTING *" REFERENCE(CURR_STOCK) LIKE MARD-LABST *"---------------------------------------------------------------------- data: cyear(4),cmonth(2),currmonth(6),mardmonth(6). data: h_tab like mardh occurs 0 with header line. cyear = lfgja. cmonth = lfmon. concatenate cyear cmonth into currmonth. *---------------------------------------------------------------- select single * from mard where matnr = matnr and lgort = lgort and werks = werks. if sy-subrc = 0. cyear = mard-lfgja. cmonth = mard-lfmon. concatenate cyear cmonth into mardmonth. if mardmonth > currmonth. *-----本期期末库存已经存入MARDH select * into table h_tab from mardh where matnr = matnr and lgort = lgort and werks = werks and ( ( lfgja = lfgja and lfmon >= lfmon ) or lfgja > lfgja ) order by lfgja ascending lfmon ascending . if sy-subrc = 0. loop at h_tab. cyear = h_tab-lfgja. cmonth = h_tab-lfmon. concatenate cyear cmonth into mardmonth. if mardmonth >= currmonth. CURR_STOCK = h_tab-labst + h_tab-insme + h_tab-SPEME. exit. endif. endloop. endif. else. *-----本期期末库存还未存入MARDH CURR_STOCK = mard-labst + mard-insme + MARD-SPEME. endif. endif. ENDFUNCTION. 

上面函数在报表程序中的调用方法如下:

call function 'Z_GET_PERIOD_STOCK_3' EXPORTING WERKS = '工厂' LGORT = '仓储地点' MATNR = '物料号' LFGJA = '会计年度' LFMON = '会计期间' IMPORTING CURR_STOCK = I_TAB-STOCK. 

其中I_TAB-STOCK为存储最终结果的变量,即查询物料在指定工厂、指定仓储地点、指定会计期间末的库存。

类似的透明表:

库存类型 描述 历史表
自由库存 mard mardh
K 供应商寄售 mkol mkolh
E 销售订单 mska mskah
W 寄售到客户 msku mskuh
Q 项目库存 mspr msprh
O 发货给供应商 mslb mslbh

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/131828.html

(0)
上一篇 2025-08-05 13:45
下一篇 2025-08-05 14:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信