Inventory. It’s difficult to think of a single topic more important to more people than this.  Buyers, Customer Service, and Production Planners all care about what’s available and what isn’t.  And, of course, there’s the warehouse personnel that keep everything flowing whose lives revolve around inventory. For most situations, a quick stock overview is sufficient, but many times you need to get a closer look at inventory through queries or custom reports.  Here are the tables you need to know about.

SAP Inventory Tables

I’m not going to cover the standard Material Master tables — MARA, MARC, and MVKE.  Instead, I’m going to focus only on those tables containing inventory values.  Any screenshots below are going to be from transaction SE16N, my go-to transaction for quick table queries.

SAP Inventory Table: MARD

Sample MARD Data.
Sample MARD Data.

Table MARD is probably one of the more useful ones.  It contains all of the basic inventory levels for each material on the plant and storage location level.    Keep in mind that this table will have records for ALL Material/Plant/Storage Location combinations; this means there are potentially a LOT of records.  Also worth noting is that many of them may have Zero (“0”) inventory levels, so you may want to be specific in terms of what types of inventory you are looking for.  In addition to Unrestricted stock, most other stock types are included in this table — Stock in Transfer (between SLOC’s), Quality Inspection, Restricted, Blocked, and Returns.  Don’t be confused; there are also these same stock types listed in this table with values from the previous period.  Use the records that are most appropriate for your needs.  In most cases, it will be the first set of current-period numbers.

SAP Inventory Table: MCHB

Sample MCHB Data.
Sample MCHB Data.

Table MCHB expands upon the previous table by adding in Batch quantities to the Material, Plant, and Storage Location.  The values in this table further define the values in table MARD.  This means that the quantities in MCHB are included in MARD and should not be considered in addition to MARD.  All of the other stock types in MARD are also included in this table along with prior-period values.

SAP Inventory Tables: MSSL and MSLB

Sample MSSL Data.
Sample MSSL Data.

Both tables MSSL and MSLB are related to material stored at a vendor.  In SAP, this is considered Special Stock type ‘O’.  The most common scenario to require type ‘O’ is subcontracting being performed by a vendor.  As with the first two tables I mentioned above, table MSSL contains inventory levels at a Material/Plant/Storage Location level and MSLB adds in Batch quantities to further define what’s in MSSL.

SAP Inventory Table: MSKU

Sample MSKU Data.
Sample MSKU Data.

Table MSKU contains inventory levels for owned material at a customer site.  Most commonly, this would suggest a Customer Consignment process which uses Special Stock type ‘W’.  This table can also store Returnable Packaging currently located with a customer which is Special Stock type ‘V’.  As expected, the table key contains the basics — Material, Plant, and the Special Stock Indicator.  In addition, the key also contains the Customer Number and Batch number.  The two main stock types contained in this table are Unrestricted and Quality Inspection stock.  As with the other tables, prior-period values are also included in this table.

SAP Inventory Tables: MSSA and MSKA

Sample MSSA Data.
Sample MSSA Data.

These two tables store inventory values for Sales Order stock — Special Stock type ‘E’.  There are several scenarios which make use of Sales Order stock; the most common that I’ve seen are Returns for Repair and Make-to-order (MTO) Production.  Unlike some other special stock types,

Sample MSKA Data.
Sample MSKA Data.

Sales Order stock is typically non-valuated and is directly assigned to a Sales Order Line Item.  MSSA contains the Material/Plant/Special Stock/Sales Order values whereas the MSKA adds Storage Location and Batch-specific values.

SAP Inventory Tables: MSSQ and MSPR

Sample MSSQ Data.
Sample MSSQ Data.

Tables MSSQ and MSPR store inventory levels for materials assigned to Projects.  This “Project Stock” uses Special Stock indicator “Q”.  Like Sales Order Stock, Project Stock is reserved for use by a particular project and is generally unavailable for other uses.  Table MSSQ includes Material, Plant, Special Stock

Sample MSPR Data.
Sample MSPR Data.

Indicator, and WBS Element in the key.  Like others above, MSPR adds Storage Location and Batch-specific details.  Both tables allow for Unrestricted, Quality Inspection, Blocked and Restricted stock types.

SAP Inventory Table: MKOL

Sample MKOL Data.
Sample MKOL Data.

Table MKOL stores vendor-owned materials.  There are two main scenarios that utilize this table.    The first, and probably most common, is Vendor Consignment.  In this business process, you store vendor-owned materials at your physical location and “purchase” them when consumed.  This process utilizes special Stock indicator “K”.  The other scenario is for the management of Returnable Packaging owned by your vendor.  This is common in many industries but seems to be most prevalent in automotive.  Your vendor ships items to you in specially designed reusable packaging which is intended to be sent back to your vendor.  This process uses special stock indicator “M”.  The key fields in MKOL are Material, Plant, Storage Location, Batch, Special Stock, and Vendor.

SAP Inventory Tables: Wrap-Up

I hope this article sheds a little light on how SAP stores the various types of inventory.  If you know of another useful inventory-related tables, please drop a note in the comments.


16 responses to “SAP Inventory Tables”

  1. Great summary.

    Thanks a lot Michael

    1. I’m glad it helped!

  2. Found the answers to my questions !! thankyou for sharing ..

    1. Awesome, Mick. Thanks for taking the time to comment.

  3. MARC also contains stock and MBEW is important for the value of the stock.

    important is also how SAP stores the stock and how you should read it.

  4. It helped…Thanks for the detailed Info.

  5. Thank you for sharing, this was a helpful post! Two other inventory tables which are useful are MCHA and MCH1, depending on config, one of the two will provide the SLED/BBD for each batch.

    1. Thanks, Kyle. Nice suggestion. I’ll take a closer look at those.

  6. Lloyd Avatar

    This has been great as a basis, could I just suggest you also add a quick overview of the tables needed for it to then make sense i.e the commonly used material numbers to short text so that the data can start to come alive.

    1. Great suggestion, Lloyd. You’re right: if you are creating a report that includes data from these tables, there are probably some supplemental tables that you would want to also include. I’ll add that to my to-do list. 😉 Thanks for the comment.


    Hi. Is there a table that considers what is already allocated to orders. Looking for a report to show the ATP quantity. Thank you!!!

    1. Thanks for the question, Alexandra. To me, allocations and ATP are two different things. ATP represents the maximum quantity of a product available on a particular date. To me, Allocation represents which order lines have quantities “reserved”. There is no table which stores ATP; it’s a function module which runs during order maintenance based largely on your Availability Checking Rule.

      What you can get to is your Confirmed Quantities. Confirmations are the desired result of an ATP check. I consider them a soft allocation of inventory. Check out tables VBAP, VBEP, and VBBE. They contain helpful quantities like open quantity and confirmed quantity. Hope this is helpful.

  8. Ganesan Avatar

    Thanks for sharing this nice document. Is it possible for you to come out with a document which related material valuation?

    1. Thank you for the suggestion, Ganesan. I’ll add that to my list.

  9. Sachin Mittal Avatar
    Sachin Mittal

    Awesome.. thanks.

    1. Thank you for the comment!

Leave a Reply

Your email address will not be published. Required fields are marked *