During a purchasing document creation or a goods movement posting, you may can face some performance issue like any kind of short dump or it may can take long time to execute a transaction. Generally, a performance issue can occur because of a huge data. Sometime system can't able to read information from table and execute a dump message. That's because may company prefer the archiving process after some time (even some year). There can be many more different reasons when a performance issue occurs. Normally a performance issue can be resolve by archiving process, but many of cases, you need to do some program correction with the help of some OSS note(s). You can also improve performance by creating index with correspond table. Such as, you have performance issue regarding the table EBAN, then create a database index from transaction SE11 on table EBAN as per your requirement, then save and activate the index, then run your transaction, you can see the performance improvement.

In general, when you create a purchasing document, system checks many function which may not need for you but to avoid any kind of inconsistent, system will check and generate all information into all related tables. Some functions are most important which should be executed when you create a purchasing document like as Price determination, create or update purchase info records, release procedure, partner determination, text determination etc etc. This information should be executed when you will create a purchasing document according to your requirement and IMG configuration. If you read the OSS note 188837 - Purchase order generation performance , you can find how many functions are executed during a purchase order creation. This OSS note has given the information how you can optimize or control these all functions during creation of purchase order. However, it could not be possible to delete some functions which are required as per your business process. Read the OSS note and deactivate the listed functions as per your requirement and be sure that you do not need this function to be executed during purchase order creation. Please read this KBA document 1942976 - Performance issue when using transactions ME21N, ME22N, ME23N , here you can find some more options to avoid the performance issue during purchase order transactions. System can perform a slow performance while creating a account assigned document or even a service document (like service purchase order, service contract, service requisition etc.). It is because of the extra table EKKN, system need to reread the table EKKN for account assignment document, that's because system can take long time to read data from table.

During a goods movement (like as goods receipt, goods issue, transfer posting), system can take long time to execute. For a general performance issue (or even a runtime error) during goods receipt, use the OSS note 1738158 - Long runtime for goods receipt for purchase order. There can be different different reason as per the transaction. Like when you will post a goods receipt, system can take long time due to the purchase order or schedule agreement's line item, while you post a goods receipt for many item for purchase order or many purchase order into one goods receipt. System will take long time to fetch data from various purchasing tables (like EKPO, EKKN). You can improve the performance by splitting this into multiple. Slow performance can occur when you will use the price determination process during goods receipt. System will try to fetch many records from various tables for the price determination process during goods receipt. Another reason for slow performance during goods receipt of purchase order or goods issue for a stock transport order is unnecessary copy data for group condition (from GKOMV to TKOMV). Transaction code ST12 has been developed by SAP to trace the performance issue and any kind of ABAP dump.

Let me explain some issues with details explanation (with view from OSS notes), why a performance issue occurs during various purchasing transaction execution or goods movement and how you can improve performance while executing a transaction.

When you set a deletion flag or archiving process for purchasing document, you may face performance issue. The performance issue may can raise at the time accessing table EKKN or EBAN (according to document). The OSS note  1411343 - Setting the deletion flag: Performance problems says there could be performance issue occurs after implementing the OSS note 418988, and if there are no reference of purchasing document, system will try to access all records from table EKKN or EKBN. However, this OSS note 1411343 has given a modification to avoid the same. Read the OSS note accordingly, additionally read the OSS note 673290 - Setting the deletion flag: Performance problems also.

A large number purchase item or purchase order history item can also causes of performance issue. When you call a transaction (like ME2* reports, transaction MIGO, MB01, MIRO, MIR7, MRRL etc) which is fetching data from purchase order item (EKKO) or purchase order history item (EKBE), system can return you a dump message or can take a long time during execution of these t-codes. To improve performance you can use the aggregation facility for purchase order history by using the transaction ME87, which can remove (reversibly) old data from your purchase order history. Read the OSS note for more details 311089 - Performance problems because of long PO history and 574494 - Explosion the aggregated purchase order history via report . However, there are some cautions for the aggregation feature. The caution can be found on the OSS note 311089. This aggregation can remove your purchase order history which are old more than two months (however it is possible to change the period according to the OSS note  756293 - ME87 Aggregation duration purchase order history).

During creation of purchase order from transaction ME57, you may can face performance issue. System read the table EBAN, to fetch information during execution of the transaction ME57. Because of a huge data on EBAN table, system can take long time (or even fail to execute with dump) to create a purchase order. The solution is provided in this KBA  2108907, that you should archive the all old requisition along with give some selection parameter in ME57. Read the KBA document for more information.

You have some issue regarding purchase requisition creation, some performance issue can occur after implement the OSS note 1836886. SAP has given another OSS note to improve the performance after implemented the OSS note. You can find more information in this OSS note 1910134 - Performance Improvement in Purchase Requisition (note: this OSS note is only relevant for Brazil localization).

Some performance issue can occur when you will go for release a purchase requisition from transaction code ME54N, SAP has given an OSS note for a program correction 1377556 - Performance issue during release of PR-ME54N

When you will go for purchase requisition list from ME5A, system can take long time to execute or even can fail to show result. Performance issue can occur also after giving some selection field(s). As per the report logic, system is fetching data from EBAN, during the data fetching, system can take long time to execute. You can implement OSS note 942106 - Performance of ME5A: List display of purchase requisitions to improve the performance. Also by indexing the table EBAN, you can reduce the performance issue, read the KBA document for performance issue during ME5A transaction 2111467 - Performance issues in ME5A

At the time of mass maintenance of purchase requisition from transaction code MEMASSRQ, you can have some performance issue. Its because of as per the logic of mass maintenance, system will call the record twice for a document while it should be called only once per document, this can causes of the performance issue. You can implement the OSS note 1448621 - Performance problems when changing PReqs (transaction MASS) to avoid the performance issue during the mass maintenance transaction.

You may can face some performance issue at the time of converting purchase order from a service purchase requisition. There is an OSS note 1658177 - Performance: Creation of purchase orders , by implementing the OSS note, you can reduce the performance issue.

At the time of using BAPI for purchase order create or change, you can face some performance issue. The reason of this performance issue can be long text. As per the OSS note 917290 - Performance: Long texts in EnjoySAP order BAPI , system can take long time to process the text during execution of BAPI. Read the OSS note for more details and implement the correction to avoid the performance issue. Also please have a look into the OSS note 1355577 - BAPI_PO_CREATE1: Runtime problems when calling RTTS, it also explains about the performance issue regarding the bapi BAPI_PO_CREATE1 or BAPI_PO_CHANGE

There can be poor performance during creating or changing a contract or a schedule agreement via BAPI. With release 600, 602 and 603, SAP has found program error which can causes of the poor performance. By implementing the OSS note 1475971 - BAPI: Performance for contract and scheduling agreements , you can improve the performance for this selected EHP release. Not only performance issue, you can read the OSS note for some additional issue during calling BAPI_CONTRACT_CHANGE and BAPI_SAG_CHANGE.

System can take huge memory during running BAPI_PR_CREATE or BAPI_PR_CHANGE, this can cause of slow performance. This performance can occur for a program coding. You can use this OSS note 1571867 - Performance issue when executing Purchase Requisition BAPI , here a program correction suggested by SAP.

For a higher release (from 605), you can face performance issue during creating a request for quotation from ME41 with multiple items as text item. The causes of the slow performance can be the multiple item for one RFQ document. Either you should divide the RFQ document to multiple or you can try by applying the OSS note 2086200 - ME41: Performance optimization when using item texts to improve the performance while perform multiple line item in one document. Another reason system can take long time to execute the transaction, it is time dependent condition (specially the case of batch input). When you will use time dependent condition for many items in one document, system can take some time to find and execute the supplementary conditions with regards to the time dependent condition.

You may can face a performance issue during goods receipt against outbound delivery for a inter company stock transport order. This slow performance can occur because of a lots of line item in the purchase order (EKPO entry) or a lots of purchase order history line item (EKBE entry). You can implement this OSS note 1328939 - Performance issue when posting Goods Receipt against STO , it includes a program change, which can improve the performance during goods receipt.

Some performance issue can occur after activate SAP HANA during goods receipt from MIGO. It is for enhancement package 6.04 along with the business function LOG_MM_OM_1. In that case, use the OSS note 1729650 - HANA Performance issue when creating Goods Receipt for a program correction.

During posting or reversing a goods receipt with regards to a production order, you may can face some performance issue. This performance issue can occurs due to the volume of large order history, instead of fetching the single order history, system is trying to fetch the total record. To improve the performance issue SAP has given a feature to fetch the data record as summarized. You need to add an entry in the table CKMLMVADMIN as 'CKMO_READ_MLAUF = S'. A details explanation can be found in this OSS note 1759860 - Incorrect GR reversal for production orders and performance improvement , along with consider this OSS note 1611053 - Performance: Production Order history compression for a manual steps details for production order history compression.

For any goods movement from MIGO, system can perform slow performance. This slow performance can be occurred due to a number of storage locations are assigned to the plant. During the determination of storage location with regards to the transaction, system is copying the number of storage location into an internal table from table T001L and then reads all data from that internal table. After implement the OSS note 1016033 - MIGO: Performance improvement when reading table T001L system has changed the logic not to use the internal table, system will fetch the data directly from table T001L table. This can improve performance during goods movement in MIGO.

During posting a goods receipt from MIGO with regards to a purchase order with multiple account assignment, system can occur slow performance. The main reason of this performance issue is huge data of purchase order history item. Along with at the time of goods receipt for a multiple account assigned PO, system will run the source code of the business function LOG_MM_MAA_1 although this business function is not active. Use this OSS note 1605930 - MAA: MIGO: Poor performance as a source code correction.

At last, there can be some performance issue due to your own custom development / enhancement. Due to poor coding from an ABAPer, you system can issue short dump or even take a long time to execute the function. In that case, you need to consult with your abaper to improve the quality of coding. By using a Badi or user exit, system can take long time to execute the function.

In above, I have given some example of OSS notes with brief explanation about the performance issue. There are many more OSS notes are given in service market place for any kind of performance issue. Most of all performance issues will get improved by implementing correspond OSS note. So, whenever you will face any kind of performance issue, first search in service market place for some OSS notes.

Hello Folks,


From time to time I see customers raising incidents regarding error SE508 when trying to create a Service Entry Sheet based on some PO.


Last year I wrote KBA 1680030 explaining how to fix the problem and I realized that some times the solution proposed in the KBA does not work.


I have updated the KBA with another solution that should cover the cases where the previous proposal would not help, so in case you face this error just check how to fix it in the KBA.



Eduardo Junior

SAP Active Global Support - ERP MM

Hi,I would like to share with you one of Procurement Scenario which involved replacing of Purchase Order by Scheduling agreements.


Business Scenario : Business involved in manufacturing standard products,raw material required for producing these product are on continuous basis,each raw material is having fixed vendor.requirement for standard products generated base on re-order level planning.requirement generate for raw materials generate in system after MRP run.purchase order is created for open purchase requisition and sent to vendors.vendors delivering goods as per communication with buyers.every new Purchase requisition generated later included in old PO with new line item,message sent to fix vendor through telecommunication,on receipt of material at shop,goods receipt not possible at stores because of reasons like PO was not created,PO was not released this result in delay in goods receipt at stored in system.due to urgency at production line goods issue to shop without entry in system.later this result in mismatch of inventory etc.


Major Issues :

1.Component not available for production on time.

2.Continuous amendments in same PO frequently,this affect vendor evaluation process

3.PO approval required frequently due changes in PO,Buyer has to do follow up with Purchasing Manager for PO release.

4.Delay in PO release result in delay to communication to vendors and delay in Material delivery.

5.Vendors not having formal document with right quantity,for future planning.


Solution :

To Overcome such issues scheduling agreement are use as replacement of purchase orders for standard components which are required frequently.

steps follows in process:

1.Scheduling agreements created with validity period of 6 months with maximum possible quantity for all vendors.(ME31L)


2.All Open PO for vendors identified and closed.(TCODE-MEMASSPO)

PO Mass Change.PNG

3.All Scheduling agreements released by Purchasing Manager ( TCODE-ME35 )

SA Release.PNG

4.Source list created for components with Scheduling agreement and MRP usage 2 ( Record relevant to MRP. Sched. lines generated automatically )


5.After MRP run,system generate schedule lines for requirements.

6.To avoid over-written of schedule line orders trade-off-zone updated with more than Planned delivery time.(TCODE-ME32L )

SA item.PNG

5.These schedule are email to vendors.

6.Vendors deliver goods as per delivery dates.stores takes goods receipt against SA for open schedule line quantity.

7.Invoice receipt will be done against SA for GR Quantity.



1.Reduction in vendor follow-up time of buyers.

2.Saving of buyer time which was spent for amendment of POs.

3.No follow up for order approval required,Once SA is released it will be valid for validity period mention in it.

4.Accuracy in vendor evaluation process.

5.Timely availability of components at production line.

Material document duplication is an usual issue faced by many customers when posting goods issues at SAP System. In particular, I faced this case many times.


In a case where you have duplicate material documents you can create and run the report ZZWASTOR of note 424414.


You must first check the effects of the report in a test system or with "test mode = X" if it is in production system.


Usually, the root cause is related to unforeseen events like:

  • Inconsistencies caused by hardware defects, user handling and customizing changes
  • Closely related time wise (seconds apart) of MM postings in conjuncture w/ ENQUEUE/DEQUEUE settings
  • Customer reports without consistent updates on the database (user exits or custom programs)
  • Manipulation on the database
  • Data quality after migration
  • Database update errors


The most common reason for the duplication of material document are lock issues. I mean, for example, the end-user opens a session and tries to post a goods movement, if the system is facing poor performance for the moment, the same end-user (or another one) opens a new session and post the goods movement again and then later the first movement is completed. This lock issue will allow the creation of two goods movements. It happens a lot with several customers. In case, OMJI should be set as exclusive lock to avoid new cases.


By the way, report ZZWASTOR will delete duplicate material documents and follow on documents.


If you are facing similar case, please follow the below steps for resolution:


  1. run report ZZWASTOR (contained in note 424414) which enables you to reverse one of the material documents. Please note as stated in this note it is best to check this report in a test environment first
  2. you might possibly get error message 'M7 310' which means that negative stock is not allowed. If so, need to be able to allow neg. stock by changing the setting in transaction OMJ1 to allow negative stocks and set messages 'M7 310' and 'M7 309' as 'no message' in transaction OMCQ
  3. so, run ZZWASTOR
  4. change OMJ1 back to not allow negative stocks and set messages 'M7 310' and 'M7 309' back to error message in transaction OMCQ
  5. if delivery appears in status in process and not complete, run RVDELSTA (note 506510) which will reset the status of the delivery.



Regarding to OMJI, waiting time '10 seconds' is usually set for 'late block' and this is correct. But keep in mind that there are advantages and disadvantages of each option. Using 'late block' duplications can happen again.




When material master data is read for the first time during a goods movement, this indicator specifies that tables MARC (plant data) and MBEW (accounting data) are locked exclusively until the goods movement has been fully posted. Another user cannot maintain the material during this time. The disadvantage is the long period of time for which the lock is set (from the time the material master data is first read when the  goods movement is entered through to  completion of the update posting).


Specifies that a material:

  • is not always blocked exclusively, but only if data is actually to be saved.
  • is blocked exclusively as late as possible to keep the lock time to a minimum


The advantage is that several users can enter goods movements at the same time because only one shared lock is set for the material when the movement is entered. The disadvantage is that the material master record is read several times and, in the case of an outward stock movement, that the lock entries of other users on the ATP server also have to be considered. These additional accesses have a negative effect on performance.


The late blocking works on the material level, if the material is being updated, all in relation to that material will be blocked until the posting is complete. The block works for any type of goods movement.


Check the following notes for further information on this topic:


70865   - Material block during goods movements

322989 - Late block: Number of blocking attempts
521945 - FAQ: Material block



See additional info of note 322989.
Cause and prerequisites
"Late block" does not mean "No block". It is required for sending exclusive blocks. This is carried out online for a short time and then only when entering the hot phase of the update preparation so that several movements can be entered at the same time. This creates situations where a process requests this block, however the exclusive block is held by another process which is currently in update. In this case, the waiting process tries several times to request the
block by itself. When a certain number of attempts have been made, it then abandons this and generates the error message.


I hope this info could be useful to SCN Community!


Kind Regards,

Fábio Almeida - MM Support Consultant

Interacting with many different customers along last 12 years of experience, I noticed there are recurrent issues when using BAPI_GOODSMVT_CREATE to post goods receipt.


One example is to receive stock in transfer via BAPI by posting movement type ‘315’. Suppose here, BAPI is being called multiple times and, as a consequence, allows receiving quantity more than the stock in transfer.


Why does it happen?


Read the following Wiki documentation to get further details:



This document explains how to call the BAPI BAPI_GOODSMVT_CREATE several times within one roll area.


As stated there, when you want to post depending Goods Movements in a series like a goods receipt and then, immediately afterwards, a transfer or a new receipt and issue for the same material, you need to consider the stock is read only from the database in the case of an actual goods issue.


For a goods receipt, the data is read from the buffer and thereby at the time before the last posting in the same roll area. A goods receipt, for example with movement type 315, automatically posts an implicit goods issue in the stock in transfer. This situation is not taken into account in the current design. You may get an error message like ‘M7 021 - Deficit of ... stock’. To avoid this, you have to call the BAPI in a different way, as mentioned on the note 369518:


“Make sure that the program buffer is deleted by changing the roll area. You can accomplish this by logging off and then logging in again for the BAPI process. If the BAPI is called from an ABAP program, you can also use the command: CALL FUNCTION func DESTINATION 'NONE'.”


In addition, take into account the impact of ‘COMMIT WORK’ and ‘ROLLBACK’ commands. BAPI_GOODSMVT_CREATE is used to create goods movements. The ‘COMMIT WORK’ command, which triggers the actual update of the document to the database, is performed in the calling program. In the case of an error during the posting, a ‘ROLLBACK’ work should be performed in the calling program. If this is not performed the underlying object (purchase order, material etc.) referenced in the failed goods movement will remain locked until the program is finished.


This will cause locking problems if other user/programs try to access this object while the program is active. Take into account that the enqueue for documents is at header level, so the complete document is always locked, even when a Goods Receipt for a single line item is being performed.


If a ‘COMMIT WORK and WAIT’ is performed, the dialog work process waits until the update has been performed before continuing. This can negatively affect the overall runtime of the transaction/BAPI.


You should review the coding after the call to the BAPI_GOODSMVT_CREATE (also for other BAPI’s) in your transactions ‘Z-transactions’. It needs to be analyzed in details to see if a sufficient error handling logic (with a ‘ROLLBACK WORK’) has been implemented and how the ‘COMMIT WORK’ is triggered. Often the BAPI BAPI_TRANSACTION_COMMIT is used to perform the COMMIT, however notice if this BAPI is called with the parameter ‘WAIT = X’, then a ‘COMMIT WORK and WAIT’ is performed.


Note: this cannot be seen as a general recommendation for all programs, each ‘Z-transaction’ needs to be analyzed individually. For example, if the program needs to immediately perform an additional goods movement for the same stock, a ‘COMMIT WORK and WAIT’ is necessary.


As I mentioned, you should consider the approach described on the note 369518 to ensure that each BAPI call is done in a separate roll area then you should have no problem with buffered data being used.


Check also the following note:

187687 - BAPI_PO_CREATE and Commit Work


I hope this info can be helpful to SCN Community!


Kind Regards,

Fábio Almeida - MM Support Consultant

Fabio Almeida

MIGO Running Slowly

Posted by Fabio Almeida Apr 10, 2015

In my experience as MM Support Consultant, I faced many customers reporting poor performance issues in transaction MIGO when posting goods movements.


A common cause of poor performance in MIGO is due to a "COMMIT WORK" being sent in a user-exit, or BADI, or even custom modification. And, this is not recommendable under SAP-standard perspective.


For more details read note 607203 which shows an example.


So, we should look for BADIS and EXITS which are called during MIGO. The easiest way of checking would be by debugging mode.


In case, we should run the steps below:


  1. Navigate to MIGO
  2. Activate the debugging, input '/h' in the command
  3. Carry out the goods posting
  4. Once the debugging session is triggered, go to the menu 'Debugging' > 'Switch to classic ABAP debugger'
  5. Go to the menu 'Breakpoint' > 'Breakpoints at' > Statement
  6. Input the statement ‘COMMIT’ and confirm, then the system will stop at each ‘COMMIT WORK’, and you can click the button 'Call stack' to see in which program (BADI or user exit or modification) the commit is called



If you are not aware of debugging, you may work with an ABAP developer.


Usually, it points to BAdi MB_MIGO_BADI.


In case, you should deactivate BAdi MB_MIGO_BADI and retest your scenario in MIGO.


I hope this information could be useful for SCN community.


Kind Regards,

Fábio Almeida - MM Support Consultant

Standard Process:


As per standard SAP, system determines G/L account as per defined rule for the account determination. Where, we can’t use the option account modifier for some transaction event keys (like BSX, WRX) at the time goods movement (like goods receipt). As we know, account modifier or valuation modifier is an option to use different G/L account within a transaction event key. Although, you can assign a G/L account as per account modifier for the transaction event key WRX or BSX from OBYC, but system will not determine the G/L account as per your settings, system will still determine the G/L account which is assigned for blank account modifier. It is well possible to use the account modifier for some transaction event keys (like GBB, PRD) in standard SAP. But SAP has given an option for customer requirement. You can determine the G/L account by using the account modifier for the transaction key WRX via some user exit. But, it is not possible to use the account modifier for the transaction event key BSX. SAP has written it as hard code for the account modifier as blank for the transaction event key BSX. System reads the function module ‘MR_ACCOUNT_ASSIGNMENT’ for the account determination process. Here is the coding line for the transaction event key BSX:


The value VORGANGSSCHLUESSEL is equal to transaction event key (T030 – KTOSL) and KONTO_MODIF is equal to account modifier (T030 - KOMOK). You can find it also in the same function module:


So, you can’t use any account modifier for the transaction event key BSX. Also as per the business process, it should be. You should not use multiple G/L accounts for one valuation class for the stock account posting. It can create many problems during the balance sheet finalization.

Now, for the transaction key WRX, in standard, system will determine the G/L account without using the account modifier. But system has given an option to write your own coding to call the account modifier as per your defined rule. System is calling the user exit ‘EXIT_SAPLKONT_011’ to read the customer defined rule during the account determination process. Here is the customer call function:


You can see here, system is clearing the KONTO_MODIF and calling the customer function ‘011’, which means ‘EXIT_SAPLKONT_011’. You can double click on the call function to check the user exit name. So if we will define our own rule for the account modifier by coding in this user exit, then we can determine G/L account with regards to the account modifier as per our requirement.


Now let’s explain about the business requirement:

Suppose your company is using two different processes as standard and subcontracting for same material. We know that one material can have only one valuation class (without using split valuation). So, as per the standard SAP, it should get determine the same G/L account for transaction event key WRX for both standard and subcontracting process. But your organization wants it different. They want to use G/L account ZZZZ for the standard purchase order and G/L account YYYY for the subcontracting purchase order for the GR/IR clearing account (WRX).


You need to find the differences between these two PO types. I am going to use different document type for both processes. NB for the standard purchase order and ZSC for the subcontracting purchase order. As result, system will determine the G/L account ZZZZ for standard PO with document type NB and G/L account YYYY for subcontracting PO with document type ZSC. You can make some changes in your document type. Allow only the item category L for ZSC document type (for subcontracting purchase order) and do not allow the item category L for the document type NB (for standard purchase order). So that user can’t do mistake to choose document type for both processes.

Enhancement and Coding:

As explained, we need to use the user exit EXIT_SAPLKONT_011. The user exit includes the program ZXM08U18. Here, you need to take help from your ABAPer. You need to create this include program from SE38 (tell your ABAPer to do the same). Then you need to write the code accordingly:

IF sy-mandt = '400'.

WHERE ebeln = i_wrxmod+0(10).

IF ekko-bsart = 'ZSC'.
        e_konto_modif =

Here, 400 is client, ZSC is document type for subcontracting purchase order and JWK is the account modifier which will be used to determine the G/L account. If you do not want to include the client, then you can remove the line item. Here, I've just defined the different account modifier for the subcontracting process, so that system will consider this account modifier (JWK) for the subcontracting process and blank account modifier for the standard process (as defined in standard program code). Activate the include program.

Now go to OBYC and enable the account modifier option from rule (note: before enable, take a backup of the all entries as because, once you change the rule, you will lose the existing entries). Now assign the G/L account as per your requirement:


Save the entry.


Create two purchase orders, one with document type NB and item category blank for standard purchase process, and create another purchase order with document type ZSC and item category L for subcontracting purchase process.

Post the goods receipt for the standard purchase order and check the accounting entry:


You can see the G/L account 150039 has been determined for the standard purchase order. Now post goods receipt for the subcontracting purchase order and check the accounting entry:


Here you can see the G/L account 150196 has been determined for the subcontracting purchase order.

Note: I have given an example by using the document type. If you want to do it differently (like as by using item category or any other which would be different for standard process and subcontracting process), then you can also do it by changing the coding part.

Dear community


Do you have queries from your business users around Inventory Management valuations for GR/IR clearing postings ?
(Posting key WRX) Have you ever looked into the details of a GR/IR clearing valuation, where you have a large PO

history with several different types of postings, goods receipts, reversals and/or account maintenance postings to
consider. If so you will be very familiar with the amount of time and manual effort that is required to clarify the
valuations in these circumstances.

Report MBEXPLAINWRX is now available in the standard system. This report can be used by your support team or
business super users to retroactively analyse GR/IR clearing valuations. A detailed explanation of how the new report
works can be found in the MM Trouble shooting Guides here: Report MBEXPLAINWRX - ERP SCM - SCN Wiki


The report can be used to automatically verify most WRX valuation cases, but some cases are too complex and will
still require manual analysis by your support team.

Check the documentation at the link above for more details.

Kind regards

Have you ever been plagued by the subcomponents of MM* area when trying to submit an incident to SAP support?
Do you have the experience that due to incorrect choice of component, the incident was lying in the wrong queue for redispatch which is totally a waste of time?




Here is a short guidance on how to choose the correct sub-component in MM* area.


Generally there are following sub-areas in MM:




Additionally, you also have MM-FIO* for Fiori UI and MM-FT for Foreign Trade.


Firstly let's see MM-PUR. 'PUR' is for purchasing, so you can choose this area for the purchasing documents such as purchase orders, purchase requisition, purchase info record, purchase scheduling agreement,contact, RFQ/qotation etc, also the relevant functions for them.'


For example:
MM-PUR-PO is for purchasing order.
MM-PUR-PO-BAPI is for the bapi function for purchasing order (e.g. BAPI_PO_CREATE1)


Secondly let's see MM-IM. 'IM' is for inventory management, then you know that you can choose this area when your question is relevant to goods movement or physical inventory, reservation etc. Similar to PUR area, relevant functions to them can also be selected accordinly.


For example:
MM-IM-PI is for physical inventory.
MM-IM-PI-BTC is for batch input of phsical inventory.


Then for MM-IV, 'IV' is for invoice verification. Now I believe you can easily understand that MM-IV-ADB is for adobe
service in invoice verification and MM-IV-GF is general functions for invoice verification.


Fourthly, MM-SRV is for the queries related to service, that is something only happened with service instead of material. 
For example, if you found the layout is strange in purchase order when you are using service item, you may want to test
if the same issue can be seen when using normal material. If not, then you can choose component MM-SRV, otherwise
MM-PUR-PO-GUI is better.


Finally, MM-IS is for information system. You can choose this when the questions are for table S0* or report MC*.



Here are some hints which maybe a help too:

1.Generally the acronym you see in the component is the first few letters of its representatives.
2.If you don't know which component it belongs to for a specific transaction code, you can run T-cd SE93 and display
   this transaction code, by double-clicking the Package column, you can see the area it belongs to.
3.Similarly, for programs or function modules, you can run T-cd SE38 or SE37 and check the Attributes for it. By
   double-clicking the Package column,you will see the area it belongs to.
4.For error message, you can run T-cd SE91 and double-click the Package in the Attributes tab.

Hi Friends this is my first blog in SCN.


There are so many method to upload initial stock i.e. LSMW, BDC.


Apart from these method one more method I would like to share with all of you, which is direct excel file upload. To upload this method nowhere LSMW is required. Actually here this process will bypass all the way LSMW configuration and directly it will upload excel sheet (csv) and upoad the stock using batch input.



T-Code: FILE





Here we will use BMSEG structure to prepare Excel file which is going to be uploaded further.



Note: Each and every field must be included in this sheet. Value of fields must be equals to field length.



SaveAs Excel file into CSV extension and re-open file in text format and remove comma (,) with space from text and save, close file.


Now run T-Code: CG3Z


Give the location of source file on frond end (from your system).

Target file on application server as shown in screen shot.



Now run the T-code: MBBM



It will create and run batch input and upload the stock.


Hope this document is helpful.


Best regards,

Kaushal Sharma

After reading the Dibyendu’s blog post about field selection, I have decided to write a little bit about this topic with a more technical perspective.


You may have already asked yourself:


1) I set some field as OPTIONAL and when checking in the screen the field is BLOCKED or MANDATORY, why?

2) How does the system know how to link the fields into field selection tables T162, T162K, T162X and T162Y?


There are special logic behind the field selection process that overcome the customizing due to some business rule, so where does it happen?


Taking into account the Enjoy transactions, like ME21N:


  • Each field is described as a metafield
  • It is a unique identifier of a model. It can be a field, a function or a sub-object.


Metafields are constants defined in type pool MMMFD.



The metafield values above are the link into field selection customizing, table T162-FAUNR.


During the ME21N, system calls function module MEX_FELDAUSWAHL to process all the field selection logic.


The model has a list of objects, which map to metafields. Each object carries the business logic, for example:


Account Assignment Category


Object Reference (function group MEPO -> Class)




Here you can see the business logic that will overcome the field selection customizing.


Now, whenever you want to understand why such field has a different behavior that is customized (display only, mandatory, optional) you can just check the metafield and the correspondend class (function froup MEPO) to see if there is some business rule influencing the behavior.


PS: This logic applies for Purchase Orders only!

Objective :

  • To run the MRP for multiple plants.
  • Same material involving into In-house production, External Procurement, Stock Transport Order and Subcontract process.

Plant Details:

  • Plant B (Manufacturing Plant1)
  • Plant C (Manufacturing Plant2)
  • Plant B1 (Internal Warehouse for Plant1)
  • Plant C1 (Internal Warehouse for Plant2)
  • Plant A (Distribution plant)

Material Master Settings:


Plant A

Plant B1

Plant C1

Plant B

Plant C


Test 1





MRP Type






Reorder Point






Procurement Type

F - External Procurement

F - External Procurement

F - External Procurement

E – In house Production

E – In house Production








For Plant A:


Demand in Plant A :   

Here ROP = 1000 number is act as  demand.

When we run MRP system generates Stock transfer PR based on percentage given in Quota.


For Plant B1 and C1:


Demand Flow from different plants:



Total Demend in Plant (B and C) = Demand from Plant A + Demand from Plant B1 and C1

MRP Results:

When run MRP for Plant A:

Demand Created for Plant B1 and C1.



When run MRP for B1 and C1:

Create stock transfer dependent requirement from Plant A and create request for Plant B.

Create stock transfer dependent requirement from Plant A and create request for Plant C.


When run MRP for Plant B and C:

  • Create stock transfer dependent requirement from Plant A based on Quota and Planned order will create based on Quantity + Dependent requirement from B1 and C1.
  • If use any special procurement key for subcontract then SC PR will create based on Quota.
  • Create direct PR or Scheduling Lines.

Starting with the blog First aid for Newbies in MM , where nearly all types of basic wisdom has been given. Not only for MM guys, I'll suggest to everyone to read the blog.


I have observed many discussions are posted in MM module regarding field selection and/or screen layout, some are able to understand and can resolve it and some are not able to understand how system behaves in standard or even own development.

SAP has some certain criteria to work with field selection or screen layout.


Field Selection or Screen Layout:


Field selection and screen layout are quite same term. It is just used as per different purpose. Every transaction has some fields and some screens, where we can enter data as per our business requirement. As per our business need, we can make a field as mandatory/required, optional, display/grey, hide mode. You just need to know about the source of the field selection mode. If you are able to know the element that how system will behave with its own settings, then you can easily handle the field selection settings.

We know that we can make changes the field selection settings from IMG activity as per our requirement. But do you know SAP has certain fields which has made a default criteria (suppose as required) with his own screen settings, that means these certain fields are made required by SAP. You can't change it to optional from any IMG activity.

As example, in material master, the field 'material description' in MM01/MM02 (MAKT-MAKTX), we know it is a mandatory/required field. Can you make it optional field? You can't, do you know why, because SAP has made the field required/mandatory from its own screen. Let's check how SAP has defined a field as per standard business criteria.

1. SAP Standard Screen:


In every field, there is a program and there is a screen, to check the program and screen, you need to select the field and press F1 on the field and then press technical information. Here is the program and screen of Material description in MM01/MM02.


Note the program and screen number..

In SE80, Select the application as "Program" and enter the program as below:


Then press display, you will find the all object name (along with description) which is related to the program. Choose the object name "Screens". Then find the screen number which you have seen in the MM02 (its 1002), double click on the screen 1002.

In right side, you will get a tab named "Element list", hit on that tab, now you are able to see the all field which is under this screen. In the tab Element list, you will find a sub-tab as "Special Attributes", click on that tab. Now find your field which you want to see. In our case, we will see the field MAKT-MAKTX (It is the same as screen field in MM02- F1-Technical information). Here check the field value of the line "Input"


You can see the value = "Required". You are not able to change the field (also you should not). That does mean, the field has made required by screen designed and this screen has designed by SAP.

The field value contains 4 input values - 1. Not possible, 2. Possible, 3. Recommended, 4. Required. If any field has made required in this section, then you can't make it optional via any other method (like as define field selection from IMG activity or by using transaction variant). Press F1 for more details in this field.

In that way, you can check all fields which has made input selection with this process. This section is not only for MM module, this is applied for all transactions related to all modules in entire SAP.


2. Define Field selection or Screen layout from IMG activity:


This option has given by SAP after the standard screen. There are many IMG activities for the field selection or screen layout exists in SAP. As per different different section SAP has given the IMG activity for field selection (as example material master data, vendor master data, purchasing document {PR, PO, Contract, RFQ and SA}, many more in different module)


Material Master Data : Two documents has already written by Mehmet regarding this section, Have a look into these documents Material master screens and fields and Control material master fields. Here you will get all types of details with regards to the field selection and screen sequence of material master. To read some help documentation, just press these "IMG Activity Documentation" which is exist left side of every IMG activity (See the blog First aid for Newbies in MM, section 'SAP offers help, almost everywhere').


Vendor Master Data: Field selection/screen layout for vendor master data is divided by 3 sections : 1. Account Group, 2. Company code, 3. Activity.

1. Account Group : At the time vendor creation, you have to choose an account group, as per your chosen account group, system will determine the screen layout from this activity. So for vendor creation, the screen layout will work as per your defined account group.

2. Company code : In the same way as account group, you have to specify the company code at the time of vendor creation and the field selection will depend as per the selected company code.

3. Activity : This is transaction dependent field selection. That means, this field selection will be differ with regards to the transaction code (like as XK01/XK02/XK03)

In these above activity, you can control the field selection as per your requirement. You just need to remember one basic function about the field selection that is 'Hide is the first priority, then display, the required and then optional. That means if you make a field as hide for any activity, then system will give this selection as first priority and it will ignore other selection whatever it has made as required or optional'.

As example, you have made a field as optional for Account group and made hide for company code and then system will show it as hide. Vice-versa, if you will make a field as hide for account group and optional for company code, then system will show it as hide.


Purchasing Document : Including Purchasing Info Record, Purchase Requisition, RFQ/Quotation, Purchase Order, Contract, Scheduling Agreement, Account Assignment.

For purchasing document (Purchase Requisition, RFQ/Quotation, Purchase Order, Contract, Scheduling Agreement), there are 4 types of field selection available. 1. Transaction code, 2. Activity, 3. Document type, 4. Item category.

1. Transaction code : SAP has given some field selection keys as per designed transaction code. That means if you want to set a field status as per transaction code, then you can use this field selection key, this is also per-defined by SAP. As example, field selection key ME51N, ME51, ME52, ME53, ME21N, ME21, ME22, ME23 etc etc. This is first priority of field selection key and calling these field selection keys is hard coded by SAP.

2. Activity : Generally, SAP has given 3 activities for the activity section for field selection. AKTA - Display, AKTH - Create, AKTV - Change. These field selection keys has been defined by SAP, calling these field selection keys is hard coded by SAP and it is the second priority to fetch the field status

3. Document type : There are some specific document type is used in every purchasing document. A field selection can be also dependent in a particular document type which is used for the purchasing document. In IMG configuration, a field selection key is defined with regards to a document type, the field selection key will be called only when the document type is used in a purchasing document. It can be totally controlled by user. You can use any field selection for this purpose even you can create your own field selection key. The priority of this field selection key is under Activity and transaction code.

4. Item category : Some field selection key depend upon item category, there are some default field selection key has been assigned to item category and you can't change it. It is designed by SAP. These below are default field selection key as per item category:

PT0F - Standard item purchase order (Item category Blank)

PT1F - Blanket item: purchase order (Item category B)

PT2F - Consignment item purchase order (item category K)

PT3F - Subcontracting item, PO (Item category L)

PT5F - Third-party item, PO (Item category S)

PT6F - Text item purchase order (Item category T)

PT7F - Stock transport item PO (Item category U)

PT9F - Service item, PO (Item category D)

Whenever you will use an item category, system will fetch these field selection key as per this criteria. (you should note that, this field selection key is dependent as per line item as because we are using item category as per line item)

For Purchase info record : There are just few field selection keys are used for purchase info record and all are depend upon transaction code. These field selection keys are designed by SAP. You can't create your own field selection key in this activity.

For Account Assignment : When we will use an account assignment category in purchasing document, then system will bring a new tab in item level named "Account assignment". This tab's field is not dependent with these above field selection. These fields are controlled by the account assignment category's field selection in OME9. So if you need to change some field for this tab, then you need to make change for the certain account assignment category in OME9.

External Services Management :

Two types of field selection are used in the activity External Services Management. First is for Service master record and second if for service entry (along with the tab of purchasing document). In previous, I have written a document regarding service configuration SAP Service Configurations In SAP MM - Part 1 see the Step 4 : Maintain Field Selection and Step 6 : Maintain Screen layout.

Inventory Management and Movement type :

In inventory management, system reads two types of field selection, first is field selection for MIGO transaction and second is field selection as per movement type. That means you can control a field from field selection MIGO or from field selection for a particular movement type. If you will set a field required from field selection MIGO, then it will be applied for all movement type. But if you will set a field required from field selection movement type, then this activity will be depend only for the certain movement type.

You can also use the field selection as per movement type with special stock, suppose you want to use a field option for 201 and required during movement type 201 Q. You can find the field selection in OMJJ - Field selection (from 201)/Batch search procedure. Here, you will find different field selection as per different special stock.

3. Screen Configuration :

Some field can be set as invisible from a screen configuration. You can find the screen configuration for some screen.

Suppose in MIGO, you can find it here :


Click on that symbol, then click "Administrator", You can find the invisible fields which will be marked as invisible.


This is client level settings. If you activate that, then it will be applied for all users.

4. Variants :

In some report transactions, you can control a field as required / display / hide from variant.

Lets assume in report transaction ME2N, you can see all field as optional mode, and you want to make a field as required mode, so that without entering an value of that particular field system will not continue for further process. Run the transaction ME2N, press save, you can able to see the screen for Variant Attributes as below :


You need enter the Variant name and Meaning, and in Objects for selection screen, you need to check your field as per your requirement.


You can mark the certain field as required field (as suppose I have marked the field for purchasing document). Then save your variant. Then you can call the certain variant for that particular transaction from get variant :


You can see the field Purchasing document has become mandatory. You can assign the variant for the particular t-code. Go to SE93 enter the Transaction Code, press change, then enter the variant name in the field 'Start with variant' :


Then it will be defaulted for the particular transaction code.

Note: It can be possible at transaction code level, you can't do this at user level, also it is for report transaction codes, you may can't able to use this for function transaction code (like ME21N, ME51N, MIGO etc etc).

5. Transaction variant or Screen Variant :

After these all above, you can also set a field as required / display / hide by using the facility transaction variant. There are lots of blog / documents / wiki has been posted in SCN about the transaction variant. You can have a look into the blog for a brief explanation How to Create a Transaction Variant

Searching an existing transaction variant : If you feel, there are some existing transaction variant has been done already, then you can see these in the t-code SHD0. In SHD0, enter the transaction code and press enter, then click on the transaction variant field and press F4 and then press enter. You will able to find all transaction variant which has been created for the particular t-code


If the transaction variant is active, then you can see this from standard variant - standard variant in SHD0:


The symbol will indicate you it is active or not. Remember, this function will only dependent on transaction code, it will never depend on any other data. A menu function can be set as display mode by using the transaction variant. The transaction variant can be used as per user, that means, if you want to set a field as required only for one user, then you can use this option. Hence its an user level method.

6. Function Authorization for field selection :

For purchasing document and purchase requisition, some fields can be set optional/mandatory/display/hide from function authorization also. You need to create a new field selection key from the IMG path OLME-Purchase Order-Define Screen Layout at Document Level.

Then you need to assign this field selection key in the filed 'Field Selection Key' in the transaction code OMET (for purchase requisition, enter the field selection key in the field 'FieldSelCtrl Re'). Then you need to assign the Function Authorization key to the user profile - user parameter EFB.

For more details, you can read the KBA 2048405 - How to control the field layout for specific users in PO

This function is user level function. You can set this field selection only for one user (or even many).

7. Using own Development / Enhancement :

You can also make a field required / display / hide by using your own development, this needs a help from your ABAPer. Abaper will write the code according to your logic in a badi or user exit and then this will be working along with program. By using this option, you cam make a field required for any level (client or user). You just need to write the logic according to your requirement.

If you want to know is there any badi or user exit is working during the transaction (program), then you can find the badi or user exit with the help of this blog post Would you like to SNIF?: All you enhancements at one blick.


So whenever you will face any problem about Field selection / Screen layout, you should first check these above things before create a discussion. If you have checked all these above points but you are not able to find the solution, then please let us know that you have already checked these all above points.


Useful SAP OSS notes

176769 - Field selection reference key, error ME028

324447 - Field selection key, error ME028 (II)

617515 - Field selection for service-based invoice verification

1897855 - ME53N : The screen layout of field is different when there is Release Strategy

1910199 - ME52N : Field is not editable

1913213 - SHD0 : Transaction Variant cannot be created

1840646 - Screen Variant not working in MIRO

Customizing of a release strategy in MM  seems to be the final exam which separates the wheat from the chaff.

No doubt that many struggle at this hurdle, 6500 discussions in MM are evident. 4.5% of all MM content. And it is known that this topic is discussed in Retail, ABAP, ERP and some other spaces too.


What makes it so tough?

Is it the number of steps to be executed?

Is it because knowledge on classification is needed?

Is it because of the mix between customizing and master data (classification, cost center...)?

Is it lousy documented by SAP in help.sap.com  or by other users in wikis, blogs and documents?

Is the request not well defined by the business?

Is it too complex because of its flexibility with user exits

is it just too abstract for self-education?


You are invited to share your personal answer in the comment section.



I personally miss words, in particular as answer to the question WHY ...?

SAP uses quite a lot words and almost no pictures to explain the process and customizing in help.sap.com

The bloggers and tutors in SCN often use only pictures and outline just what SAP had put in words, but also miss to explain beyond.


The self-educators can just follow this one illustrated process, but in the moment the business requirement is a bit different they fail because they never understood the connections, were not able to abstract the shown process enough to get it linked with their own requirement.

I have to admit, the Airline processes for ABAP education is disconcerted to me too. It could have been half as tough for me if they had talked about material master, vendors and other MM tables.  So I had to make two hops instead of just one to apply the training to my personal requirements. I am already curious how our key users do when they need to test with anonymized data in near future. As you see it can hit you everywhere, you will rarely find a 1:1 match to the things you learned, you need to understand it to make it work for you with variations.


I will not repeat the whole setup process here again, instead I will focus on the things that I miss in the existing content of wikis, documents and blogs, and put links to this content, so that this blog can work as a map and navigate you to the right stuff for particular requirements.


Before we even start with customizing we either get a requirement from the business, or we are proactive and "sell" it to the business by explaining the advantages and telling them why they need it.


WHY do we need a release strategy for purchasing documents?


People do (can) not trust each other. The NSA is spying Mrs. Merkels cell phone,  Google all of us. And not really different in the micro cosmos of a company.


Bosses do not trust their employees, have no trust that they perform their job within the given rules, need a controlling mechanism, like SCN has moderators to control that people do not post the 6501st question on release strategy without doing any research by themselves before.


The boss does not want that the nasty warehouse worker requests a Porsche which is then ordered by the careless buyer..

Anyone can be a requisitioner, but they are only allowed to request something within a certain value range, within the environment of their responsibility. Anything exceeding the defined threshold has to be approved by their supervisors. Some values may even require multiple approvals.

The release code in SAP is the electronic signature replacing the handwritten approval on a paper based process.



In my research for this blog I found numerous documents with SAP screenshots, all started right away with the SAP customizing. My projects start differently and the most time and effort is spend prior to the activities in SAP. We are doing Web meetings, the responsible person from business explains what they want, and the SAP expert tells what can be done. We also have different solution sets which are introduced by the SAP expert.

In general we want reduce the many variants and strive for a single release strategy that can be used anywhere in our global company.

Sometimes we even say "No - this is not the way we want a release strategy in our system". We have to think about the maintenance costs. If the release strategy is built on strange requests then the costs may explode later. An example: One exotic plant wanted the release strategy based on the user. If it is user Smith then a 2 level approval, but in case of Mr. Hoffmann only one approval by the plant manager is needed. In this example is nothing really generic, and with each change of a user the strategy would need to be amended.

Here are 4 strategy variants as example for a release strategy on purchase requisitions:


No approvals required

If you are authorized to create a requisition, it will be sent directly to Purchasing without review.


Two approvals required for all requisitions

Any requisition, regardless of dollar amount, has to have two levels of approval before going to Purchasing.


Approval determined by dollar amount 
--> Option A

< $500 - no approval required 
$500 - 2499 -- Level 1 approval 
> $2500 -- Level 2 approval


Approval determined by dollar amount 
--> Option B

< $2500 -- Level 1 approval 
> $2500 -- Level 2 approval

and a picture with the same information plus one more variant:




And this was just a small set of examples for release strategies on purchase requisitions. I can just recommend to create a  strategy on release strategies to avoid too much variations. Some can be much more complex and could only be understood by the single developer, and you get in trouble if this developer is not with you anymore, like in this more complex requirement.


As you probably know from the documentation you can have release strategies on requisitions, on purchase orders, contracts and schedule agreements, RFQs and Service entry sheets.

Here is a variety of documents in SCN, many unfortunately have more pictures than words, and do not at all emphasize on critical parts like item based characteristics in header strategies.

Release Strategy configuration for Contracts and Purchase Order

MM-SRV Release Strategy for Service Entry Sheets - ERP SCM - SCN Wiki

Multi Level Purchase Order Release Strategy


a better one with a good Q+A section at the end

Setting up Purchase Order Release Strategy

and a jewel among all, unfortunately not much recognized since it was uploaded at SDN times and you need to click the link within that document to see the good work:

Release Strategy Enhancement in Purchase Order

(take the chance and rate the documents while you review them)



Why a release strategy for requisitions AND purchase orders?


The buyer could be corrupt and orders at higher prices. The difference to the normal price is then shared between the sales man and the buyer. Not fictive, it happened in the 80s. That is a reason that even purchase orders need to be approved before they are send to the vendor.

If the approver is really capable to identify such fraud is another story, but the example with the Porsche from above certainly is.

If you can trust your buyers, and only want the requisitions be approved, fine, then you an save some work.

It could also be turned, instead of doing a strategy on requisitions you could only implement one on purchase orders, because that would be enough to catch the case with the Porsche.

Best you know what your internal auditors want, or you even invite them to the meetings, as this can reduce double work in design and realization.


Do you use contracts, wonderful you can generate money for IT, they can have a release strategy too.

What I actually wanted to say, in that case you may want to avoid an approval of the purchase order if the contract is referenced.

But this is only possible with a user exit where you add coding to check this circumstance.



complicated approval processes need more time


Another topic in the meetings is to talk about the approval process in general. How long does it take to approve a document, how long in case of high complex strategies with the maximum of 8 levels. This time needs to be covered with the purchasing processing time (update customizing or include it into th planned delivery time of material masters). Make them aware that just one approver is a bottleneck, a substitute for vacation and other eventualities is needed otherwise you can't order anything if the approver enjoys beach life and is bitten by a shark on his last vacation day.

Hey developer, stop and think: If you have several possible approvers, does it make sense to put the name of this approver into the strategy?

A clear NO.   Instead of name that may change once per year use something generic like >20000$ approver or plant manager instead of Mr. Bill.

People often ask for the maximum approval levels - I guess this is interview or certification question - the answer is 8 approval levels, but nobody seems really be interested why you can't have more. Of course it is caused by the SAP design, table T16FS has only 8 fields for release codes. And the release status field (e.g. EBAN-FRGZU) has a length of 8 characters. This fields is filled with Xs for each approval level. This single field is the basis for the display of the  status overview: http://scn.sap.com/servlet/JiveServlet/showImage/102-49987-2-338607/ScreenShot.jpg

Header level strategy

What else needs to be defined in the meetings?

In case of requisitions you need to define whether your strategy is at item level or header level.

People are creative, they may dismantle the Porsche and order 4 wheels, 2 Recaro seats , 1 motor ...

With item level strategy they may stay below a threshold and would not need an approval.

In purchase orders is anyway only a strategy at header level possible. Since you can only send a purchase order as a whole document to your vendor, because there is no message determination at item level either.


However, you must not forget that you get other challenges with a header strategy.

You know that purchasing documents can have several items. So you can have items for different cost centers, items with different material groups, even items with different plants are possible in one document.

In case of a header strategy you cannot have approvers at plant  or cost center level, except you restrict the creation with a BADI and allow only items from one plant or from one cost center in one document. Standard customizing is not able to restrict this, the BADI or exit is needed.

If you are fine with a header level strategy and approvers by dollar level, no matter for which cost center the items are ordered, then you have to prepare your classification accordingly otherwise your release strategy will not trigger.

An example: in a header level strategy the values from the items are summed up. If you have a plant as a characteristic in your release classification, then the plants from item level are as well "totaled" :  Assume you have 2 items, item 1 for plant PL01 and item 2 for plant PL01, then is is quite as PL01 + PL01 = PL01 . But if item 1 is plant PL01 and item 2 for PL02, then the situation is like this PL01 + PL02 = "blank" . And exact this values need to go into your classification otherwise the strategy is not executed.  Your classification needs for the characteristic plant: PL01 PL02 and blank as value.

This is valid for any field from item level that is used in a strategy at header level. And I have not seen a single document in SCN where this is explicitly shown, but it is seen in the questions quite often and it is said in various wikis and KBAs and OSS notes.



Draft on paper


The result from our meetings is usually a Business Blueprint  and the strategy on paper (in Excel) which can be used as functional specification

Here is an example for a strategy based on cost center by dollar limit. The upper part (Row 1 - 6) is our strategy definition, the lower part (Row 20 - 34) is the mapping to the user roles

Release strat.PNG


Based on Cost Centers (column B) we defined the release groups (column A)

A release group can have just one or many cost centers.

In the example you can see that cost center 98111, 98112 and 98817 belong to the same release group SA

Based on the dollar value we defined the approvers and the  release codes.

Example in column G and H (both columns belong together), Purchase requisitions up to $ 20000 have to be released with release code SC (visible in cell H2)

For each combination of release group and release code we need a strategy code. (for example AC in cell H3 is the strategy for combination of release group SA and release code SC)

For each combination of release group and release code a role is created. (for example role YPSCPX34..  in cell C27  is the role for combination of release group SA and release code SC)

In Cell I27 you can see the description of the role, there is no hint to a dollar value or release group and code.


As you see in the Excel spreadsheet, there are actually 2 parts, the upper part is used to setup the strategy in customizing.

The lower part is used to define the user roles and to assign them to the approvers.


There is no easy link between a user and a strategy. There is usually a n:n relation. There is no report in SAP that can tell you who will be the approver for requisition x.

You would need to obtain the release strategy from the document, look into the customizing to find the release group and code for this strategy  and finally look up the roles which have this combination of release group and code and to which user they are assigned. Sometimes I am asked to check which user is holding up the process. Then I torture myself with SE16N and SUIM transaction to find the potential candidates. It is much easier if the Excel spreadsheet is kept alive and is updated regularly.  Of course an ABAP report would be welcomed. Often requested in SCN, but nobody ever came back to share his program.


With a workflow implemented it is possible to see at which user the workflow  currently is.

A little easier is to know who actually approved a document, because this info is stored in the change log (table CDHDR and CDPOS), still there is no report to list this for a number of purchasing documents.



Release strategy without classification


This is the remnant from R/2 times and only possible for purchase requistions. The release strategy with classification came with R/3 in 1996. But maybe you have no complex requirement and a strategy based on plant, material group and value is just enough for you, then you may want to look into this document for the setup:

Setting Up Release Procedure for PR without classification.

Since the release strategy with classification can be setup for the same criteria you should better use this way instead of spending time learning an out dated method.



No changes


Coming back to the design meetings, make it clear that the outcome should be a strategy which can be used long-term and is not subject to continuing changes and "improvements". Better improve your preparation.

Changes in a release strategy are not recommended if this strategy is in use and will lead to errors. Create a new strategy, never delete existing strategies. Have no open documents unapproved if you are going to change anything.

Read KBA 1635346 - Add a new release code to the release strategy of PR issue

If you really need to change, then it is very important that you do it in the right sequence.

Deletion of Existing Release Strategy in SAP ECC

Just deleting the release group does not make the depending customizing going away. It is more like beheading a chicken, it can still run through the yard as some videos in Youtube show. However, the SAP customizing is still there and troubles you for more than a minute. Technically it means you have still data in table T16FS, which is the table that stores the release codes to a strategy. This table has the key fields release group and release strategy.

So you can have several entries with the same release strategy. This actually happens frequently after a deletion and new definition, the numerous discussions are evident. The problem is that SAP does not search for a record by the combination of release group and release strategy, it only searches with the strategy, so you have to make sure that the strategy number is unique and exists just once in that table. Otherwise SAP will take just one and this may have a release code that is not covered in any role and nobody can release your document.


ClientRel. GroupRel. StrategyRel. Code 1Rel. Code 2Rel. Code 3Rel. Code 4Rel. Code 5Rel. Code 6Rel. Code 7Rel. Code 8

Check your customizing with OMGSCK to ensure it is consistent and error free before you  test it or even release it for production.



Further you need to decide if you want to make use of a workflow. This means that the purchasing document is directly routed to the approver(s).

Any extra feature has advantages and disadvantages. An advantage is certainly that a manager get an email when a new document is waiting for approval and does not need to execute release transactions in SAP to see if there is anything to approve.

A most common error is that the person who gets the workflow has not the roles to approve the document. Workflow for approval does not replace the user roles. It is your developer task to keep roles and workflow synchronous. The workflow requires  discipline by the users.  When you decide to go for workflow, then make it clear that the people execute the release through the workflow only. The workflow is an extra process which stays open if you use the normal transactions to release the documents. So you have extra work to end the workflow.

If the workflow is made on individual users instead of groups then the users have to activate a forwarding rule to their substitute  in SBWP Business workplace transaction when they take vacation.

Blogs an documents related to release strategy and workflow in SCN are

SAP MM: Purchase Requisition with Classification and Workflow Approval

Work Flow Mail Generation for Release Procedure in Sourcing Module

Release strategy Vs Workflow release of purchasing documents

in the modern world you even approve with tablet computers and smartphones:

SAP FIORI : Approve Purchase Contract App

Online Purchase request (PR) Approval Application Using Blackberry

A workflow Application to Release A Purchase Order...



Multiple currencies


Purchase requisitions are internal documents which either take the value from material master, or if there is no material master the user is forced to enter a value as estimate. This value is always in the value of the company code.

A purchase order is an external document which may have the value in your vendors currency.

Your release strategy  can be defined to be used in several companies around the world with different currencies.

All these case may require to define a release strategy with multiple currencies.

See the SCN content on multiple currencies:

Use of multiple currencies in Release Strategy - ERP SCM - SCN Wiki

Purchasing Doc. Release with Multiple Currencies

Multiple Currencies in Purchase Order Release Strategy

and the official KBA: 1739381 - Multiple currencies in purchase order release strategy needed



Transport Strategies


Transport of release strategies is not easy as a release strategy with classification is a mix of customizing and master data (classification) and eventually even program coding if you make use of the exits.

Please read OSS note 86900 - Transport of Release strategies (OMGQ,OMGS)

Master data is usually not transported and need to be created in QA and PRD systems again manually, which is a source for errors too. An way out is to use ALE distribution for the classification. You have to decide yourself how much data you would need to maintain manually again and if ALE can save you time, or just creates another complicated hurdle.

Beside of many discussions we have 2 documents on transporting of classification:

Characteristic value movement across Systems through ALE in Release Strategy Implementation

a better one (my personal view): Transport of classification across systems/clients - Quick Reference



ABAP to close the gap between standard and business requirement


The user exit for release strategies was already explained in Release Strategy Enhancement in Purchase Order

Still there might be other requirements that are not foreseen by SAP, here are a some documents and blogs explaining some special developments

Release Strategy: Restrict lower users to revoke PO after the complete release by superior

From the ABAP space, but you should be able to read ABAP, as some developers are not able to describe it for non-ABAPers  How to Reset Purchase Order Release Strategy

Sending  EMail Notification when PR is released from ME54/ME54N/ME55

if you have so many strategies and you need to load them instead of doing customizing: Mass Upload of Purchase Order Release Codes and Release Strategies - A Function Module Approach


This document closes the knowledge gap between functional and ABAP world, worth to read it from both parties:

Triggering of release strategy for a Purchasing document – a developmental overview




Printing purchase order with release strategy

In SAP standard it is not possible to print a document which is not approved. This makes sense, otherwise you could submit a document which is legally binding to your vendor while you did not have the approval. Of course there are ways with ABAP methods to get around this restriction, in that case you have to take organisational measures to avoid sending this document. Or the ABAPer programs it to print with watermark "DRAFT" . If your document prints while it is not fully approved and it is not wanted, then call your ABAPer as it is a homemade problem.

more background is given in OSS note 61871 - Output of messages and release strategy

In case of email and fax the last approver will be used as sender (hence he need to have a valid email address in his profile).

There is a SAP note with a modification to change this behavior: 561593 - Sender of the message (fax and/or email) is wrong.




Other valuable content  and important SAP notes


Rahul explains his findings when working with different scenarios in Release strategies

Release Strategy Scenarios


this wiki gives design insight regarding deleted documents in regard to release strategies

Release Strategy with deleted Purchase Requisition and Purchase Document - ERP SCM - SCN Wiki


I have not seen many questions on release strategies with purchase orders on hold, but it was nice to read the background of the design in

KBA 1981241 - Missing release strategy tab for purchase orders put on hold


Some more questions were posted recently about release strategy and version management, here are 2 KBAs on that:

Release strategy with Version number:

1961482 - Reset release strategy when version number is set as Characteristic in Customizing

1961585 - Release strategy is not triggered when Version number is set as a Characteristic




Make sure you have gone through the FAQ notes before  you post a question in SCN:

16 question and answers in OSS note 493900 - FAQ: Release Strategy

some more in OSS note 365604 - FAQ: Release strategies in purchasing

and 10 more on services in OSS note 672719 - FAQ: Release strategies in the service

and a SAP given PDF documentation in OSS note 207490 - Release procedure purchasing: Documentation for Customizing


Please never miss to read the related notes that are mentioned at the bottom or in the text of these notes.




Analyzing issues and errors


If you have studied all referenced content above then I actually do not expect any more errors and issues. But you may have overlooked an important information or you really have a new problem.

There is a SCN blog with a check list in case of issues and as well a KBA in the market place and many wikis in SCN

MM - Check List to detect and solve Release Strategy Issues

1497235 - Release strategy is not determined for Purchase Requisition in t-code ME51(N)/ME52(N) or Purchase Order in t-code ME21(N)/ME22(N)

Check List to detect and solve Release Strategy Issues - ERP SCM - SCN Wiki

Why is no release strategy determined - ERP SCM - SCN Wiki


Beside of that explicit mentioned content we have 6500 discussions for release strategy. Here you should search to see if your issue was already addressed before you create a question.


But if you create a question, then please not a one-liner like this: "My Release condition is in PO level,when i am creating PR and converting to PO the release procedure is not working at PO level."


This sentence has almost no information to work on. What does "not working" mean? is there an error message? does the strategy not trigger? It is not told on what criteria the release strategy is built and no evidence that the data entered matches with this setup.


A release strategy can be compare with this geometry brick box for children (2-4 years old). The box is your customizing, the bricks is the data in your document. This has to match exactly, and when all your bricks at put into the right holes, then the release strategy triggers.



Hence if you have a problem, give information about your box and show us the bricks, but do not present an empty image:


Jürgen L

Ignoring moderation

Posted by Jürgen L Jan 1, 2015

I really did not want to make this my first blog in 2015 as I have drafts for more than 15 other topics which could even help those people who are stealing the time I have to share some knowledge. But as"ignoring moderation" happens in the meantime several times per day I have to give a statement.


On a normal day we have about 20 - 30 new questions in the MM space, and about 100 replies.


All this content has to be read and checked against our forum rules. While the moderators are volunteers the community itself is helping us with reporting violating content too. (Thanks for that)


The majority of users is able to ask questions and reply to questions professionally (many without even knowing about the rules), but there is a small amount of users who needs a hand (some Batman style).


Matthew Billingham   posted a blog How to get your post rejected in ABAP Development, and what he wrote is in general applicable for MM (go an read it)  and others spaces too, except for his points 3 to 5 which are really ABAP space specific. But these can be replaced with the most frequent questions asked in a particular forum. E.g. Posting period, number range and release strategy questions in MM (there are many more FAQs in MM).

Due to system limitations we moderators do not have much room to explain each rejection in big detail, just a few characters more than the feedback line in ebay.  So the notes are reduced to the basic information, some with links to blogs that explain more details, but I think they are understandable. Here a few examples:

Unfortunately those notes are not send out by email to the poster. Those notes can be reviewed by clicking the Actions icon on top right and then open the Notification tab.

But do I really expect too much from people who work in the IT industry to find this place after they get optically informed that a new notification has arrived?

In any case they should have received the email about a rejection. (Except they are so lost in the environment of their chosen profession that they even screwed up the user profile settings)  And at least this should kick-off the think process.

However, not seldom I see that the same question which just got rejected  is posted again.

Of course it get rejected again, do you really expect moderators suffer under Alzheimer disease?

Sometimes this game goes 5 rounds - hey,  it is not a game, from my point of view it is wasting my time.

Some think they are smart if they post it again with different subjects, with different user IDs, in different forums, with less information (hiding message text and number to make it difficult to search for redundancy) .

Finally I have to answer in public and make it visible to everyone that there is an offender disrespecting our rules and moderation. It is really not wanted and needed that you lose your face.

Believe me, you are sitting in a glass house, moderators can read the history,  see earlier rejections, see cross posting, can track the activities in the communication stream, can tag users.

The note to the rejection is already telling what was done wrong. Instead of just re-posting the question, you should either follow the advise and put more effort in your search or you need to put more effort in your question to convince the moderators that you have done a serious research yourself.

Let us take an example for a basic question:

"Which table holds the confirmation of a PO?"

Can this be considered as a qualified professional question? Do you believe there was any (re)search done?

Pressing F1 could have answered this question immediately. Putting "confirmation" and "table"  and "SAP" toghether into Google  had given the answer already in the preview from the hits on the first page.

Instead, it was re-posted after the rejection. (by the way, it was asked by someone with at least 4 year SAP experience)

If the post was rejected because of a frequently asked question, and you are a different opinion, then you need to rephrase your question and add much more information which can proof that your case is different from all others and that you have done your research.  You should provide information beyond the error message that can be seen in a screenshot. you could explain that you have followed the solution from another discussion https://....  and you should explain why it did not work for you. You could explain your customizing settings and what else you checked in your system.

With this info it is no longer a basic general question, such info could make it different from other questions on the same error.


Matt had already  said under

9) Posting the same thing that just got locked or rejected by a moderator

Nobody has a right to post whatever they like. Posting the same content that you got rejected or locked, hoping the moderators won't notice is not only sneaky and rather disrespectful, it's also an action that can, in extremis, lead to your account being deleted and that would make me sad .

And Otto Gold had written about the dark side in his blog Landing page for the troublemakers

And I am conform with this part, I will no longer tolerate that somebody repeatedly  ignores moderation.

I already posted it in two locked discussions in the last 24 hours: I would like to know your reasons for ignoring moderation and invite you to blog about it. (hey,  you can even make 10 points and a badge)


Filter Blog

By author:
By date:
By tag: