首页 > 其他分享 >MARD和MARDH的区别

MARD和MARDH的区别

时间:2024-07-02 13:28:36浏览次数:17  
标签:MARD MARDH 库存 区别 period mard 物料 pieces

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

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

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

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

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

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

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

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

其存数逻辑如下:
Scenario
At the start of period 02, there are 10 pieces of material A100 in stock.
Goods receipt
5 pieces are received in period 02.
System response
The system records(生成一条记录) a stock of 10 pieces in the history table (MARDH) for period 01. At the same time, the system increases the current stock to 15 pieces (MARD).
Goods receipt
2 more pieces are received in period 02.
System response
The history table is unaffected by this event because an entry already exists for period 01. The system increases the current stock to 17 pieces (MARD).
Goods issue
4 pieces are withdrawn from stock in period 04.
System response
The system records(生成一条记录) a stock of 17 pieces in the history table (MARDH) for period 03. At the same time, the system reduces the current stock to 13 pieces.
注:The history table (MARDH)does not contain an entry for period 02 because there were no goods movements in period 03.
到此为止,

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为存储最终结果的变量,即查询物料在指定工厂、指定仓储地点、指定会计期间末的库存。

类似的透明表:

库存类型描述历史表
自由库存mardmardh
K供应商寄售mkolmkolh
E销售订单mskamskah
W寄售到客户mskumskuh
Q项目库存msprmsprh
O发货给供应商mslbmslbh

物料价格 MBEW MBEWH
这几种特殊库存与mseg表中的操作记录的对应的关系
库存类型是O,外发商库存
库存类型是Q,生产批次库存
库存类型是W,寄售给客户
库存类型是E,销售订单库存
库存类型是K,供应商寄售库存
自由库存是空
由于其物料性质与常用料不同,在计算其期末库存时跟常用料的计算方法有些许差异。

标签:MARD,MARDH,库存,区别,period,mard,物料,pieces
From: https://blog.csdn.net/popo1987mm/article/details/139994055

相关文章

  • ABAP工作区,内表,标题行的定义和区别
    工作区域跟变量一样,是用来保存数据的。区别是变量只能从中保存一个数据。而工作区域可以存放多个。把多个数据合在一起就成工作区域了。下面我们来看看工作区域是如何定义的吧。定义有四种方法,如下:1,直接定义DATA:BEGINOFWA_EKBE,MATNRTYPEMARA-MATNR,MAKTXTYPEMA......
  • 12.阻塞赋值与非阻塞赋值语句的区别和规范
    (1)阻塞赋值“=”  直到现行的赋值语句完成,才允许下一条赋值语句的执行,在串行块(begin-end)中,各赋值语句将以它们在顺序块中的排列次序依次执行。(2)非阻塞赋值“<=”    在赋值开始时,计算赋值号右边的语句,赋值结束时,更新赋值号左边的语句,因此其他在同一时间的语句都会......
  • 虚拟主机和服务器区别购买免备案主机
    很多人不知道虚拟主机和服务器区别是什么,甚至不知道怎么定义,什么是虚拟主机,什么是服务器。所以在看清楚虚拟主机和服务器的区别之前,一定要了解虚拟主机和服务器的概念。通俗来讲就是一台连在互联网的电脑。那么是不是我的电脑也连在互联网免费服务器上,是不是也能成为服务器呢......
  • xmodem ymodem xmodem协议和区别
    Overview帧长度=(帧头+数据+帧尾)Xmodem原始版XmodemCRCXmodem1KYmodemYmodem-gZmodemkermit帧头(1字节)NAKSOHSTXSOH或者STXSOH或者STX??数据包128字节128字节1024字节1024字节或者128字节1024字节或者128字节最大8K最小10字节最大9K最小64......
  • PHP与js遍历的区别,PHP运行原理学习
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title><?phpecho'PHP的第一......
  • 有源蜂鸣器和无源蜂鸣器的区别
    有源蜂鸣器和无源蜂鸣器的区别有无震荡源有源蜂鸣器内部带震荡源,所以只要一通电就会叫。无源蜂鸣器内部不带震荡源,如果用直流信号无法令其鸣叫,需要外部驱动电路提供一定频率的方波信号才能发声。价格有源蜂鸣器通常比无源蜂鸣器贵,原因在于其内部多了震荡源。高度有源蜂鸣......
  • TTL、RS2323、RS485电平协议的区别
    目录TTL、RS2323、RS485电平协议的区别定义电气特性应用场景其他特点总结TTL、RS2323、RS485电平协议的区别定义TTL(Transistor-TransistorLogic):是一种电平标准,主要用于描述数字电路中的逻辑电平。TTL电路使用晶体管来实现逻辑功能,通常用于计算机和其他数字电子设备中的内部......
  • SpringCloud和Dubbo有什么区别
    SpringCloud与Dubbo的区别两者都是现在主流的微服务框架,但却存在不少差异:初始定位不同: SpringCloud定位为微服务架构下的一站式解决方案;Dubbo是SOA时代的产物,它的关注点主要在于服务的调用和治理生态环境不同: SpringCloud依托于Spring平台,具备更加完善的生态体系;而Du......
  • 三次握手,四次挥手,以及Socket、TCP、HTTP之间的区别
    网络开发1.网站:最全的socket,tcp,http三者之间的区别和原理_cocket与tcpip-CSDN博客1.网络七层1.定义:网络七层(简称:OSI),即开放式系统互连。该体系架构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层)2.socket,tcp,http三者之间的区别和......
  • batchNorm和 layerNorm的区别
    LayerNormalization(层归一化)和BatchNormalization(批量归一化)都是深度学习中常用的归一化技术,用于加速训练过程和改善模型性能。它们的主要区别在于归一化的方式和应用的场景。BatchNormalization(批量归一化):归一化方式:BatchNormalization对每个特征在小批量数据上进行归一......