Archives de catégorie : PP

Production & Planning

Frequent Issues on MD04


Frequent issues on MD04

The most used transaction in PP-MRP is the stock/requirements list.

Issues from many different application areas are reflected in transaction MD04, since this transactio reads data from many different tables.

On this document you will find the most frequent issues observed on transaction MD04.

1 – An MRP element is displayed on transaction MD04, however, it does not affect the available quantity, that means, it is not MRP relevant.

This issue can happen for many different planning elements, from sales orders to dependent requirements and there are many different causes for this issue.

On the following note you will find a detailed explanation for the possible causes for each different planning element:

1825187 – MD04/MD05: Incorrect quantity for an MRP element

2 – Database inconsistencies

A planning element that is already completed is still displayed on MD04 or a planning element is incorrectly displayed on MD04. It generally happens for sales orders or for subcontracting requirements but it can also happen for another planning elements, such as dependent requirements. The following WIKI describes each inconsistency and how to correct it:

3 – Exception messages

There are usually several questions related to exception messages, for example, why an exception message appears on MD05 but not on MD04. The answer to this and another questions can be found on the following note:

550441      FAQ: Exception messages in material requirements planning

From all the exception messages, those related to the rescheduling check are the most frequent cause of issues. There is a lot of documentation about rescheduling and the following WIKIs and notes should be useful:

550302      FAQ: Rescheduling check

1745312   MRP creates redundant proposals though there are fixed future receipts which can cover the requirements.

4 – Why a planning element is displayed on MD04?

The following WIKI explains how to analyze MD04 in debug and find out where a planning element is comming from and why it is displayed on MD04:

5 – Issues related to sales orders:

See the following document:

MD04: Problems with sales orders

 Tags: md04mrp_listsap_erp_logistics_materials_managementmaterial_planningppmrpsap_erp_manufacturing_production_planningerpproductionorderplannedproduction_schedulingplanned_ordersproduction_orderplanningstock_requirements_listenterprise_resource_planningmaterial_managementmd05

Pull List and Stock Determination in Production

Pull List and Stock Determination in Production – MF60

1. Pull List

The pull list controls the in-house flow of material for supplying production with materials. The system assumes that the components required for production have already been produced in-house or procured externally and are now available to be transferred from their current storage location or bin to the production storage location.

The pull list checks the stock situation at the production storage location and calculates the quantities of missing parts. Replenishment elements can be created for these missing parts.

2. Master Data

Here we are going to review the key master data needed to use the Pull List.

2.1. Production Storage Location

Issue location for production order
Number of the issue location from which the material is issued during the production process. Backflush is posted to this issue location if required.

In production, this is the access sequence in which the determination of the production storage location occurs:

  1. First, the issue storage location of the material to be issued (MARC-LGPRO) is transferred to the material master from the MRP data if it is
  2. The system overwrites this value with the issue storage location from the bill of material (RC29P-LGORT, STPO-LGORT) if it is filled.
  3. If the operation to which the component is assigned in production order contains a work center with supply area, the storage location is transferred
    from this supply area (PVBE-LGORT). However, this transfer is only carried out if storage location data (MARD) is maintained for this storage location for the material.

Ref.: OSS Note: 137225 – Prod. order: Issuing storage location for component

Depending on if your component is used in more than one production storage location, you could asisgn this in the material master or in the BOM or through a Supply Area. Let’s supose in this example that we assign this at BOM item level.

This is maintained using t-code CS02. The production storage location is assigned at item level. Once you are in the BOM, click twice on each BOM item and go to Status/Lng Text tab:

PLIST 1.jpg

2.2. Stock determination

The pull list controls the in-house flow of material for supplying production with materials. The system assumes that the components required for production have already been produced in-house or procured externally and are now available to be transferred from their current storage location or bin to the production storage location.

This automatic transfer between the current storage location to the production storage location is performed based on the stock determination strategy.

Strategies for Stock Determination
You make all the settings you require for a stock determination strategy.

You determine a strategy at plant level using the stock determination group and the stock determination rule (The terms ‘rule’ and ‘group’ correspond to the checking group and the checking rule logic in the availability check).

The customizing point for the Strategies for Stock Determination is:

SPRO –> Materials Management –> Inventory Management and Physical Inventory –> Stock Determination –> Define Strategies for Stock Determination

PLIST 2.jpg

The stock determination group is assigned to the material in the material master record.

PLIST 3.jpg

3. Pull List Execution

Suppose your business is running the following process:

  • Create and Schedule process orders: the planner creates the process orders and the production scheduler schedules all the process orders.
  • Material staging: warehouse responsible will receive the list of process orders and will move components to the shop floor based on: which is the material that will be produced and which is the production line capacity.
  • Production execution: production responsible executes the production of the corresponding process order.
  • Goods receipt & confirmation: finished good production quantity is received and the confirmation is done. At this moment components are consumed from the production storage location using Backflush.

3.1. Create and Schedule process orders

Let’s create a process order and ensure the Production Storage Location is determined as expected.

PLIST 4.jpg

Take a look of the component list. All the components have an assigned production storage location:

PLIST 5.jpg

3.2. Material staging (MF60: Pull List)

The warehouse responsible will move components to the shop floor (production storage location). This can be done based on process order number or entering the material and quantity to be produced (this is commonly used when the order takes several days and we only want to supply components on a daily basis for the corresponding production of the day)

In this example suppose that the first process order is: 304472 and its duration is 5 days. The corresponding finished good is: 403403 (production version: 0001) and the production line maximum capacity is 5000CS/day.

Material Staging is executed thru transaction: MF60.

PLIST 6.jpg

PLIST 7.jpg

The pull list checks the stock situation at the production storage location and calculates the quantities of missing parts. Replenishment elements can be created for these missing parts (this is the section at the bottom of the screen).

Let’s see what is each column:

  • Issue stor. location = production storage location. This was entered in the bill of material.
  • NetReqQty = component quantity based on maximum production line capacity. In case the Pull list is executed agains an order, here you will see the quantity of the component determined in the order.
  • Available stock = this is the available stock in the issue storage location (production storage location). This can be the available remaining quantity of the before production day or shift or order.
  • Quantity staged = NetReqQty – Avail.Stock = This is the remaining quantity to be moved to the shop floor (production storage location).
  • RepLoc = is the warehouse storage location. It is the location found by the stock determination strategy.

Finally.. you press Save and the components will be moved from the main warehouse to the production storage location

PLIST 7.jpg

4. Pull List Global Settings

If necessary, limit your selection using the Global settings . Here, you have the choice between:

PLIST 1.jpg

  • General settings

For example, you may choose to display components with missing quantities only in the pull list or, using the indicator Take all requirements into account , you may define that the system is to include the requirements of all orders that influence the missing parts situation. If this field is not selected, the system only includes requirements for the specific order that you entered in the missing parts calculation. Here, you can also define whether your components are staged at storage location level via direct stock transfer, or using stock transfer reservation.

PLIST 8.jpg

  • Settings for dialog control
    Here, you define which procedures are to be carried out automatically in the pull list and which are to be carried out in dialog mode.

You also define whether the system is to save a complete log of all the messages and whether this log is to be displayed automatically.

PLIST 9.jpg

  • Printing settings

Here, you make the settings for the print list.

PLIST 91.jpg


Pull List – Repetitive Manufacturing (PP-REM) – SAP Library

Accessing the Pull List – Repetitive Manufacturing (PP-REM) – SAP Library

OSS Note: 137225 – Prod. order: Issuing storage location for component

Alternative resources through caracteristics

Workcenter, PDS, ressources, alternatives.


Often, many industries like FMGC, chemical, pharmaceutical, etc use multiple similar resources to manufacture a product.

E.g. A plant has many mfg bagger, or filling lines with identical capacities. A product is chronologically said to be manufactured in bagger 2. Alternatively this product also can be manufactured in bagger 3 or bagger 4 if needed. On shop-floor business cannot determine the primary resource to be used until shortly before order processing. But in mid to long term planning, they want to assign a suitable planning resource to the operations provisionally.

The constraint for long term planning needs to be on planning resource. In short term the flexibility needs to be given for resource selection based on SKU. This can be mapped in different ways in SAP.

1. By multiple production Versions with multiple master recipe

This method is most widely used but requires laborious master data maitainance as one recipe has to be created explicitly for each resource and has to be assigned to one production version respectively.

2. By manual selection in the Order.

The resource is changed manually on the Order. This change requires a single approval process if ECM to be used. Production Planners will feel as more work and any change which needs a Quality Approval in GMP environments will take more time to create and release the order for production.

3. By Resource Selection through classification.

SAP provides another way of maintaining this alternate resource selection by using resource classification.

We can use a planning resource as the primary resource and select the alternate resource through the resource network maintained through work center classification (type 019). This also works well with ECM and is a good option for Planners as there is no need of Single Approval from QA personnel.

Create a Characteristic (T-Code CT04)

We can create classifications in ECC for suboperations and secondary resources.


In Additional data tap define Table Name as CRHD and Field Name as ARBPL.


Create Class and assign characteristics to class T Code: CL02


Assign classification in ressource T Code: CRC1 or CRC2


All relevant alternative work centers must contain exactly the same classification and characteristic value assignment. Work centers with different classes or characteristic values are ignored.


Assign the classification in master recipe and add alternate resources T Code: C201 or C202



Create process order COR1 or By MRP Planned order to Process order


On the operations tab, select the operation 10 and click on Resource selection condition


Product can be produced on all 3 lines here you can select the resource accordingly.

Capacity Planning CM25

We can change the resource from this screen by dragging and dropping it to another resource from the resource section.


Resource classification automatically creates multiple modes in APO PDS or PPM, so it can be used in PPDS while converting SNP Plan orders to PPDS plan orders. And in DS board we can schedule the order on required resource.


If we want to use different capacities for planning, but for execution purpose we only want to use one resource. So from many lines in mid term planning to accommodate constraints, but for short term we use single resource for production execution.



Batch Determination – Debug Tips

Source –

Issues with batch determination are very common. Sometimes only a simple customizing setting is missing which can impact the whole determination process.

The batch determination itself is not difficult to configure, however, we must have an extra attention, specially in the strategy, search procedure and the selection criteria.
It’s also easy to find the root cause of many common issues using the DEBUG, of course, if we know the right place to debug. This is idea of this document, give you some tips about the correct points and what information we can extract using the DEBUG tool.
First of all, there is one main function to execute the batch determination, it is called during in the production order, process order, sales order, delivery and a few other areas. The logic inside of the function is the same, what makes difference are the parameters used when it is called.
The Function Module name is VB_BATCH_DETERMINATION, it can be accessed using transaction SE37. I’ll go through the decisive points, where the important information can be found.

There are three main routines that are executed in sequence to make a proper batch determination:

1. SELECT_BATCH_DB – Select all the available batches;

2. SELECT_BATCH_CL – Sort and restrict according to the selection criteria;

3. SELECT_ BATCH_AC – Check the stock according to the availability check settings.

If you check in the source code, you’ll see that the sequence is not exactly the same as showed above. However, internal table XFS is the one that stores the sequence and executed the correct sequence.


The first routine executed is to select the batches. It will select all batches available, it does not consider the batch stock but select all available batches according to the restrictions imposed by the business (sales order, process order, goods issue, etc). The parameters used to read the batches are mainly the material number (MATNR), plant (WERKS) and storage location (SLOC).
The internal function used to read the batches is VB_BATCH_READ.

If we check the source code in detail, we can see that there are many different SELECT statements for transparent table MCHB and also from V_CF_MCHB which is a view that contains three tables (MCHB, MCHA and MCH1).

It’s not difficult to conclude that performance issues can happen if table MCHB have a huge amount of data and the SELECT statements in VB_BATCH_READ do not use more parameters to restrict the selection.

This is the reason why we always recommend executing the archiving of the MCHB old records. It will improve the performance significantly. The object used to archive is MM_SPSTOCK (transaction SARA).

It’s also possible to create our own logic to select the batches. It can be achieved using BADI VB_BD_SELECTION. The methods PRESELECT_STOCKS and PRESELECT_BATCHES can be used to create a custom code to select only the batches wanted. It’s possible to suppress the VB_BATCH_READ if the BADI is active, it facilitate if a specific batch selection must be done.

The internal table that stores the result of the batch selection is YDB_MCHB.


After the batch selection, the batch search strategy should “decide” which batches are selected according to characteristics defined in the classification data. If the batch is not classified (classification tab in batch master), it won’t be selected. So, it is very important to classify the batches many users forgot to do it.
The function modules that select the class and the characteristics don’t belong to the Batch Determination (LO-BM) itself but belong to classification (CA-CL). There are 2 key functions, one select the class and characteristics assigned to a batch (CTMS_DDB_HAS_VALUES) and the other select the values (CUSL_BATCHES_SELECTION).

It’s also possible to create your own logic for the selection criteria using BADI VB_BD_SELECTION_CRITERIA or the userexit EXIT_SAPLV01F_001. I always recommend using BADIs as Userexits have some particular problems, specially because the “freedom” we have to change the variable and internal tables resulting, sometimes, in corrupt entries saved in the database and incorrect data displayed. In the following screen, you can see the source code where both can be choose.

The internal table that stores the result of the batches after the selection criteria is YCL_MCHB.


If the Availability check is active, it will restrict the batches according to its customizing. If it’s not active, it will only exclude the batches with no stock and continue the VB_BATCH_DETERMINATION execution.
The Function module AVAILABILITY_CHECK_CONTROLER is the key for the availability check. If the function is executed, it means that availability check is active. We can check the result in internal table XATPCS, which stores the available quantity calculated inside of availability check. The field that must be checked is VMENG, if it’s zero, there is no available stock for a specific batch. It can also be checked in transaction CO09.

After the execution of AVAILABILITY_CHECK_CONTROLLER, the batches with stock zero will be excluded from the final result.

The table that stores the result of the batch selection after the availability check is YAC_MCHB. This internal table is the one that will contain the final result of the batch selection. It will not contain the batches sorted yet. The sort happens in Form SORT_BATCH.

Keep in mind that this document covers the most common batch determination scenarios, there are specific scenarios, for example, in Warehouse Management which uses specific routines and restrictions that are not covered by this document.

Job & timezone

The only thing is to make sure you have the correct time zone during the scheduling of the job.

Both user and system settings need to be taken as a reference.

During the scheduling of a job or process chain, the time is always the system time zone.

But during the process chain analysis (log), the system displays in user time zone.

During the job (SM37), the system displays in System Settings time zone

So, you just have to check the system time zone and during the scheduling of a job of process chain do the settings with reference to the system time zone.

KP26 – Budget des activités

Lorsque la déclaration des ordres n’est pas possible car l’activité sur centre n’est pas budgeté sur l’année. Fréquent en dev et qual. sur l’année:

KP26 – Saisir l’ordre et le/les type(s) d’activité,

Version 0, Période 1 à 12 sur l’année en cours.

Mettre un nombre d’heure (1) et un prix fixe (1).