SAP取历史库存(可查询期初期末库存和指定日期之库存)

原创 2015年11月19日 11:52:28

含仓位之Table:MARD / MARDH

       MARD里记载的是当前库存的数量,是实时变化的,但是期间并不一定是当月。比如:当前是2015年11月,料号A在2015年10月初至今都没有库存异动,那么现在看到MARD里料号A的期间数还是2015年09月,而非2015年11月。
       当料号A发生异动时,系统将实时更新MARD数据。在更新之前,会检查此异动的过账期间和MARD里对应记录的期间是否一致。如果不是,则会copy表MARD里的库存数量到MARDH,存成上月的期末库存数据保存起来,然后把MARD中的期间改成当前期间,并更新数量数据。如果期间是一致的,则不作copy动作,只更新MARD数量。

MARD - Storage LocationData for Material

MARDH -  Material Master Storage Location Segment: History

不含仓位之Table: MBEW / MBEWH

MBEW和MBEWH的原理和MARD/MARDH的原理是一样的,只是没有了仓位这个层级。

MBEWH - Material ValuationHistory(存储物料历史价格)

MBEW -Material Valuation (存储当前物料价格)


特殊库存之Table:

MKOL -Special stock: K (Special Stocks from Vendor)

MSLB -Special stock: O (Special Stocks with Vendor)

MSKU -Special Stocks with Customer V/W  (V:Ret. pkg w.customer,W:Consignment (cust.))

MSPR -Project Stock: Q (Project stock)

MSSQ - Project StockTotal

MSKA -Sales Order Stock E (Orders on hand)

MSSA - Total CustomerOrders on Hand

MCHA - Batches

MCHB - Batch Stocks

EBEW - Sales Order Stock Valuation

EBEWH - Valuation of Sales Order Stock: History


理解了上面的原理之后,我们就可以快速取出期初库存和期末库存,甚至指定日期的库存了。(可以参考上一篇文章《库存管理报表(含无价厂)》)

  CLEAR: gt_mardh.
  SELECT matnr werks lgort lfgja lfmon
         labst umlme insme einme speme retme "lvorm
    INTO CORRESPONDING FIELDS OF TABLE gt_mardh
    FROM mard
    WHERE matnr IN s_matnr
      AND werks IN gr_werks
      AND lgort IN s_bptnr. "s_lgort.

  SELECT  matnr werks lgort lfgja lfmon
          labst umlme insme einme speme retme "lvorm
    APPENDING CORRESPONDING FIELDS OF TABLE gt_mardh
    FROM mardh
    WHERE matnr IN s_matnr
      AND werks IN gr_werks
      AND lgort IN s_bptnr  "s_lgort.
      AND ( lfgja > g_lfgja OR lfgja = g_lfgja AND lfmon >= g_lfmon ).


  "删除重复行,仅保留最近一条记录
  SORT gt_mardh BY matnr werks lgort lfgja lfmon.
  DELETE ADJACENT DUPLICATES FROM gt_mardh COMPARING matnr werks lgort.

      用上面这段代码就可以轻松快速读取到指定月份的期初期末库存了。如果还要具体到月中某一天,则就要涉及到MSEG和MKPF这两个大表了。不过其实也不用担心,其实我们只要抓取期初到该指定日期的异动数据就可以了,因为通过上面的代码已经读取到该月的期初库存,再减掉这段时间的异动就OK了。

        CLEAR: gt_field.
    PERFORM get_mseg_fields
        TABLES gt_field   "<--- Field names used
        USING  gw_mseg.   " ---> in structure here

    CLEAR: gt_mseg.
    SELECT (gt_field) INTO CORRESPONDING FIELDS OF TABLE gt_mseg
      FROM mkpf
      INNER JOIN mseg ON mkpf~mandt = mseg~mandt
                      AND mkpf~mblnr = mseg~mblnr
                      AND mkpf~mjahr = mseg~mjahr
      WHERE mseg~werks IN gr_werks
        AND mseg~matnr IN s_matnr
        "AND mseg~matnr <> space
        AND ( mkpf~budat >= l_sdate AND mkpf~budat <= l_edate )
        AND mseg~sobkz = space "IN s_sobkz "非特殊库存部分
        AND mseg~menge <> 0
      %_HINTS
      DB2    '&SUBSTITUTE VALUES&'
      ORACLE '&SUBSTITUTE VALUES&'.

    CLEAR: gt_mseg_sum.
    LOOP AT gt_mseg INTO gw_mseg.
      CLEAR: gw_mseg_sum.
      IF gw_mseg-shkzg = 'H'.
        gw_mseg-menge = - gw_mseg-menge.
      ENDIF.
      MOVE-CORRESPONDING gw_mseg TO gw_mseg_sum.
      COLLECT gw_mseg_sum INTO gt_mseg_sum.
    ENDLOOP.
    SORT gt_mseg_sum BY matnr werks lgort.


SAP 查询历史库存事务

SAP 查询历史库存事务 mc.5  按月查库存 MB5B MB51
  • Trassion
  • Trassion
  • 2012年02月14日 14:13
  • 4887

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

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

SAP历史库存MB5B的详解

1、总揽: 事务代码MB5B是查询选择期间之内的收发存报表   其中,收、发为汇总选择期间的收、发信息,存为选择期间的期初、期末库存数据;   我们也可以用该报表查询历史上某一天的库...
  • zhongguomao
  • zhongguomao
  • 2015年05月22日 14:13
  • 2709

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

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

SAP 库存相关表格

mbew  物料评估 qbew  q库存评估 mard--查主库存 mchb--库存的批次信息 mssl--特殊库存O mslb--特殊库存O 批次信息  ms...
  • zhongguomao
  • zhongguomao
  • 2016年02月03日 09:22
  • 1696

MM模块在做GR的时候几个需要注意的地方

一、收货到质检库存三种方法 1、物料主数据——质量管理视图 2、PO,项目明细,交货——X质量检查 3、migo,项目明细,何时——2质量检验 个人认为测试用3最好,但如果上线了QM的话,就只能...
  • zhongguomao
  • zhongguomao
  • 2015年06月01日 10:34
  • 818

SAP MM模块库存结存报表

库存管理是MM模块应用中的重点,SAP中的收货、销售、盘点、调拨等操作都要直接影响到当前的库存。SAP提供了标准功能MB52用于对库存数量的查询,不过MB52的查询和数据展示功能有限,很多企业会开发额...
  • hugh_Lee
  • hugh_Lee
  • 2016年10月29日 16:34
  • 1470

库存---历史结存量计算方法

mard里记载的是当前库存的数量,但是期间并不一定是当月。比如你物料4月一整月都没有库存数量变化(没收没发),那么5月初你看mard里的条目期间数还是4月而非5月。   当某个期间发生货物...
  • zhongguomao
  • zhongguomao
  • 2015年12月08日 09:28
  • 1023

SAP 物料预留 库存变化

SAP 物料预留 库存变化  接上一篇,我知道了101 K 是采购订单中寄售物料收货到仓库,411 K 是把寄售的物料转为自有。  在生产以外的一个领料业务中开始实际使用, 有三个部门...
  • ot512csdn
  • ot512csdn
  • 2014年12月28日 08:33
  • 1224

SAP 中如何取得当月的第一天和最后一天的日期值?

下例取将开始 / 结束日期参数自动赋值为当月的 第一天 和 最后一天的值。其中 I_BEGDA / I_ENDDA 即为开始结束日期参数;其中的 LAST_DAY_OF_MONTHS 为SAP 系统中...
  • DJ2008
  • DJ2008
  • 2008年04月30日 16:43
  • 3106
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SAP取历史库存(可查询期初期末库存和指定日期之库存)
举报原因:
原因补充:

(最多只允许输入30个字)