mard里记载的是当前库存的数量,但是期间并不一定是当月。比如你物料4月一整月都没有库存数量变化(没收没发),那么5月初你看mard里的条目期间数还是4月而非5月。

当某个期间发生货物移动的时候,系统在更新mard数据的之前(这个表是实时更新的),会检查此笔业务过账期间和mard里对应记录的期间是否一致,也就是看这是不是本期间第一笔移动。如果是,copy表mard里对应记录到mardh,然后把mard记录改成当期(也可能是先删后建),然后再作更新数量数据的操作。如果不是第一笔记录,也就是mard期间和mseg期间一致,则不作copy记录只更新mard数量。

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

库存方面的表

mbew  --当前库存

mbewh  --历史库存

EBEWH  --销售订单库存的评估:历史

mard--查主库存

mardh--主库存历史记录

mslb--特殊库存O

mkol--特殊库存K/M

mska--特殊库存E

msku--特殊库存V/W

mcha

mchb

有很多人在做库存进销存的时候,感觉期初库存和期末库存比较难搞定,感觉要去取货物移动的数据来获取期初库存和期末库存,其实不然,只要理解原理就可以快速取出期初库存和期末库存

库存表:MARDH MARD MSKUH MSKU MSLBH MSLB MSKAH MSKA

下面以MARDH MARD为例,如果一个物料在2011年9月份做了一笔货物移动,则会自动在MARDH中更新2011年8月份的期末库存,假如在2011年9月份一直没有做货物移动,则不会更新MARDH中8月份的期末库存

假如我想获得2011年7月份的库存,则需要先在MARH中查找7月份的库存,找不到找8月份的库存,找不到找9月份的库存,以此类推,最后都找不到,则用MARD中的库存

* 下面代码为获取8月份的期初库存和8月份的期末库存

PARAMETERS:

* 会计年度

p_gjahr  LIKE bkpf-gjahr OBLIGATORY DEFAULT '2011',

* 期间

p_monat  LIKE bkpf-monat OBLIGATORY DEFAULT '08'.

DATA:

v_gjahr  LIKE bkpf-gjahr,    " 上月期间年度

v_monat  LIKE bkpf-monat.   " 上月期间月份

* 获取上月度年度和月份

IF p_monat = '01'.

v_monat = '12'.

v_gjahr = p_gjahr - 1.

ELSE.

v_monat = p_monat - 1.

v_gjahr = p_gjahr.

ENDIF.

DATA: BEGIN OF typ_mardh,

p_string(6) TYPE c.

INCLUDE STRUCTURE mardh .

DATA: END OF typ_mardh.

DATA: i_mardh LIKE TABLE OF typ_mardh WITH HEADER LINE.     " 期末数据

DATA: n_mardh LIKE TABLE OF typ_mardh WITH HEADER LINE.     " 当前库存

DATA: m_mardh LIKE TABLE OF typ_mardh WITH HEADER LINE.     " 上月期初数据

* 查找库存历史表

SELECT   *

FROM mardh

INTO CORRESPONDING FIELDS OF TABLE m_mardh

WHERE ( lfgja > v_gjahr OR ( lfgja = v_gjahr AND lfmon >= v_monat ) ).

LOOP AT m_mardh .

CONCATENATE m_mardh-lfgja m_mardh-lfmon INTO m_mardh-p_string .

MODIFY m_mardh .

IF m_mardh-p_string >= p_estring .

MOVE-CORRESPONDING m_mardh TO i_mardh.

APPEND i_mardh .

ENDIF.

ENDLOOP.

SELECT   *

FROM mard

INTO CORRESPONDING FIELDS OF TABLE n_mardh .

LOOP AT n_mardh .

CONCATENATE n_mardh-lfgja n_mardh-lfmon INTO n_mardh-p_string .

MODIFY n_mardh .

MOVE-CORRESPONDING n_mardh TO m_mardh.

APPEND m_mardh .

MOVE-CORRESPONDING n_mardh TO i_mardh.

APPEND i_mardh .

ENDLOOP.

* 期初库存都在表M_MARDH

SORT m_mardh BY matnr werks lgort lfgja lfmon .

DELETE ADJACENT DUPLICATES FROM m_mardh COMPARING matnr werks lgort.

* 期末库存都在表I_MARDH

SORT i_mardh BY matnr werks lgort lfgja lfmon .

DELETE ADJACENT DUPLICATES FROM i_mardh COMPARING matnr werks lgort.

下面在获取数据的时候,直接可以READ TABLE ........  BINARY SEARCH .

原文:https://blog.csdn.net/champaignwolf/article/details/85272463

历史库存sap_SAP 取月度期初库存和月度期末库存(历史库存)相关推荐

  1. SAP 取月度期初库存和月度期末库存(历史库存)

    mard里记载的是当前库存的数量,但是期间并不一定是当月.比如你物料4月一整月都没有库存数量变化(没收没发),那么5月初你看mard里的条目期间数还是4月而非5月. 当某个期间发生货物移动的时候,系统 ...

  2. SAP 取月度期初库存和月度期末库存(历史库存)-mard和mardh的区别

    mard里记载的是当前库存的数量,但是期间并不一定是当月.比如你物料4月一整月都没有库存数量变化(没收没发),那么5月初你看mard里的条目期间数还是4月而非5月. 当某个期间发生货物移动的时候,系统 ...

  3. python爬取历史天气查询_历史天气爬取

    历史天气爬取 爬取来源:2345天气网 爬取周期:月度,可自行更改 爬取城市:部分城市,可自行更改 具体代码: import requests import demjson import csv li ...

  4. SAP MM 并非奇怪现象之MB5B报表里期初库存余额或者期末库存余额为负数?

    SAP MM 并非奇怪现象之MB5B报表里期初库存余额或者期末库存余额为负数? 笔者在做某个项目的进销存报表优化的的时候,发现了一个奇怪现象:MB5B查某个日期或某个期间的库存的时候,发现有负的库存余 ...

  5. Python爬虫项目实例——爬取【乐彩网】双色球历史获奖红蓝球数据

    爬取[乐彩网]双色球历史获奖红蓝球数据 最终存到excel中 爬取数据要求为: 代码如下: import requests from lxml.html import etree import rec ...

  6. 微信公众号历史文章抓取

    微信公众号历史文章抓取 目录结构 WechatSpider │ README.md │ chromedriver.exe │ main.py │ gzhspider.py │ requirements ...

  7. 动态展开所有_库存与市场需求之间如何“动态”共舞?库存计划动态模型构建分享...

    库存(Stock)是用来提高交货速度.缓冲需求到单高峰的常用手段,通过按库存生产(MTS)的方法,用储备库存来满足客户需求.并按一定规则补货,无需等待生产周期,可极快地交付.相比按订单生产(MTO)的 ...

  8. php mysql 库存变负数_php解决秒杀并发入库导致的库存负数

    我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的: sql1:查询商品库存 1 if(库存数量 > 0) 2 { 3 //生成订单 4 //库存-1 5 > 当没有并发时 ...

  9. 电商库存设计mysql redis_基于redis实现的扣减库存

    在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等. 解决方案 使用mysql数据库,使用一个字段来存储库存,每次扣减库存去更新这个字段. 还是使用数据库, ...

最新文章

  1. 在tomcat下创建和发布WEB应用
  2. oracle SQL 命令行(二.视图)
  3. idea设置放大缩小_手机里竟然自带quot;放大镜quot;,很远也感觉近在眼前,真的涨知识了...
  4. vue动态生成表单元素
  5. 用三角函数正交坐标系计算三角级数(傅里叶级数)
  6. ES2021 更新的内容!
  7. MockServer 服务框架设计
  8. C#实现简单的网页爬虫
  9. 32位win10服务器系统,微软将停止支持32位Win10系统 32位Win10系统什么时候停止支持...
  10. 怎么在PDF文档中为文字添加下划线
  11. chrome控制台出现/null访问
  12. 网站/APP 流量分析、点击流分析、用户访问分析
  13. ADAMoracle去中心化预言机价值核心在哪
  14. 一个独立开发者,他是如何做到月入 20 万的?
  15. Java教务管理系统
  16. 【容器】kubectl|K8S常用命令总结|crictl管理命令
  17. 怎么用ChemDraw加反应条件
  18. 切断电源之后计算机丢失的,电脑断电重启找不到硬盘该咋办?
  19. c语言fseek函数的总结
  20. 美团如何“折叠时间”?

热门文章

  1. 每日新闻丨2020年全国所有地级市覆盖5G网络;腾讯两个月推七款社交APP
  2. 纯净win10系统,一文教你如何重装系统
  3. 《Python编程从入门到实践 第2版》 读后感
  4. 实在不好意思!我的发音让你恶心了!盘点这些让百万年薪老码农都读错的单词!
  5. 二叉树-7.11 折纸
  6. Java及spring 注解(反射原理)
  7. js 抽象工厂模式B
  8. 笔记本键盘字母变数字/字母数字如何切换
  9. 有关游戏属性与存储方式
  10. 在生词本查单词的译文