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 数量 13

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

——物料价格 ——MBEW  MBEWH

这几种特殊库存与mseg表中的操作记录的对应的关系

库存类型是O,外发商库存

库存类型是Q,生产批次库存

库存类型是W,寄售给客户

库存类型是E,销售订单库存

库存类型是K,供应商寄售库存

自由库存是空

来自:hen20.com很爱你

由于其物料性质与常用料不同,在计算其期末库存时跟常用料的计算方法有些许差异。

http://hi.baidu.com/mengxiangdemen/item/6480cf4af356fed6c1a59284

SAP ABAP MARD和MARDH计算逻辑的更多相关文章

  1. SAP ABAP学习路线图--标准教程

    SAP ABAP学习路线图--标准教程 摘自:http://www.cnblogs.com/clsoho/archive/2010/07/05/1771400.html

  2. ABAP开发顾问必备:SAP ABAP开发技术总结

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. [SAP ABAP开发技术总结]ABAP程序之间数据共享与传递

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. [SAP ABAP开发技术总结]字符串处理函数、正则表达式

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. ABAP开发顾问必备:SAP ABAP开发技术总结[转载]

    转载自SAP师太技术博客,原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 在原文上增加了链接,此文及此文的链接版权都归SAP师太所有. ...

  6. SAP-ABAP系列 第二篇SAP ABAP开发基础

    第二章SAP ABAP开发基础 1.ABAP数据类型及定义 ABAP程序中共包含8种基本数据类型定义, 类型名称 描述 属性 C Character Text (字符类型) 默认长度=1,默认值 = ...

  7. SAP ABAP 的经常使用debug方式

    SAP ABAP 的经常使用debug方式: 1. 直接在程序中设断点 在se38里面打上breakpoint,程序执行到该处即进入debug模式 2.background Job的debug 进入S ...

  8. 如何使用Prometheus采集SAP ABAP Netweaver的应用日志数据

    Prometheus是一套开源的系统监控报警框架.它启发于Google的borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发 ...

  9. 【ABAP系列】SAP ABAP BAPI_REQUISITION_CREATE创建采购申请

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP BAPI_RE ...

随机推荐

  1. UVa 11054 Wine trading in Gergovia

    题意: 直线上有n个等距的酒庄,每个酒庄对酒的需求量为ai(正数说明需要买酒,负数需要卖酒),而且保证所有的酒庄供需平衡. 搬运x个单位的酒到相邻的酒庄需要x个劳动力,求要使所有酒庄供需平衡最少需要多 ...

  2. 干货分享:让你分分钟学会 javascript 闭包

    闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...

  3. UVALive Proving Equivalences (强连通分量,常规)

    题意: 给一个有向图,问添加几条边可以使其强连通. 思路: tarjan算法求强连通分量,然后缩点求各个强连通分量的出入度,答案是max(入度为0的缩点个数,出度为0的缩点个数). #include ...

  4. windows2003远程桌面退出后系统自动注销的解决方法

    最近公司有一个奇怪的需求,意思是有一个网页,要时时的打开着.现在只有把这个网页在服务器上打开. 这样才能满足需求.但我在应用中遇见了个问题.我在服务器上打开网页后,关掉远程,过一会网页的运行效果就没有 ...

  5. 【转】Android中的颜色设置

    原文网址:http://www.cnblogs.com/bluestorm/p/3644669.html 1.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如: 1 2 3 publ ...

  6. selenium 调用JS操作滚动条(java)来解决element not clickable的问题

    今天在运行自动化用例的时候,发现总是某个元素提示not  clickable.分析原因有可能是页面右下角那个大大的top图标,刚好挡住了我要点击的元素.要解决就得拉动页面,就需要操作页面上的滚动条. ...

  7. wuzhicms私密下载链接生成

    加载函数库:load_function('content','content'); echo private_file('http://dev.wuzhicms.com/uploadfile/2014 ...

  8. uvalive 3263 That Nice Euler Circuit

    题意:平面上有一个包含n个端点的一笔画,第n个端点总是和第一个端点重合,因此团史一条闭合曲线.组成一笔画的线段可以相交,但是不会部分重叠.求这些线段将平面分成多少部分(包括封闭区域和无限大区域). 分 ...

  9. HDU-4662 MU Puzzle 水题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4662 倒推考虑长度就可以了. //STATUS:C++_AC_31MS_240KB #include ...

  10. 成功在BAE上部署ghost 5.0

    这周摸索着网站的建设,终于在今天成功上线!这里要谢谢ghost中文网和群里的网友,他的博客在这opengiser.他们的帮助太重要了.现在把过程记录下来,共同学习.试运营地址在edwardesire. ...