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  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

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:

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)

Following News for FICO Friends: ERP for Financials Customer Connection I saw that an MM-SD SAP Customer Connection webcast took place the other week when I logged on to


In the future I hope ASUG members will take advantage of the Customer Connection Program.  This is an update to  SAP Customer Connection Program - Only 60 Days Left to Submit SAP MM & SD Joint Process improvement requests for functio…


You can watch the full MM-SD Customer Connection webcast here


Below is a subset of what I watched - showing what is planned to be included in the Customer Connection.


Figure 1: Source: SAP


There might be circumstances where SAP changes plans and the information provided and there is no commitment from SAP on any forward looking statements.


Figure 2: Source: SAP


Figure 2 shows the project timeline; it started in July 2014 with the collect phase


You need 5+ subscriptions to make it out of the collect phase


In October the Select phase started with a deeper analysis of improvements


This month SAP explained the improvement requests selected


Figure 3: Source: SAP


SAP wants smaller improvements in the Customer Connection


Some requests may be too big for the Customer Connect project


Development timeline is 6 months which is a restriction


It needs to be “easy” and “fast” to deploy via a note


Figure 4: Source: SAP


135 improvement requests were submitted


50 were rejected due to lack of subscriptions


30 did not meet the scope


55 qualified for the selection phase


Figure 5: Source: SAP


Many customers want the capability to change e-mail when it is being sent using the output control


The first three are listed on Figure 5


Serial number support is coming in ARM for missing process steps


Note I tried to erase the customer company names shown in Figure 5


Figure 6: Source: SAP


First idea in Figure 6 covers lead time issues in MM and SD


The second idea covers third party sales order


The third idea is to block purchase order if block exists in sales order


Last idea is update of third party item in the confirmed purchase order


Figure 7: Source: SAP


Figure 7 covers the MM part


First idea is for supplier block and payment – to add more ideas – pilot note is being tested


D6696  - supplier has to deliver the whole delivery – will be programmed


D6783 – send back goods to supplier – obtain RMA confirmation number and put it in delivery papers so supplier knows they confirmed it


D6739 – shipping types in return purchase orders – today have 1 shipping type and asking for several shipping types


D1468 – message exchange scenario – customers want to exchange messages between purchaser and supplier



In 2015, find the delivered notes at


I encourage you to watch the full SAP MM-SD Customer Connection webcast here

I was having a requirement from my production department, They use ME2N report, now they want to see the user who has created the PO in output field.

I have checked the screen layout for the ME2N report (including the ME2L/ME2M), but didn't find the field User name which is containing the user ID who created the correspond PO.

In ME2N report, there are no field as "User name" in output field. This blog will describe how to add the field User Name in output section.
I've read a document Enhance purchasing reports with new fields written by Joao. Here, he has used a BADI. Then I've read another document from a different website Modify Standard Purchasing Report Output of ME2N. It can fulfil my requirement. Here, he has used explicit enhancement as I have described in my blog Explicit Enhancement for "Personal Settings" for an User. But here he has implemented a particular value for a field, but I need the PO creator name in this extra field.

Then I thought I can change the value by doing some coding in this explicit enhancement without using BADI. I have tried it with the help of our ABAPer and I've done it successfully. I want to share it. Here is the all configurations and coding.

Before giving the steps, I would like to suggest to read the post Modify Standard Purchasing Report Output of ME2N. It almost every settings are same as per this document. You just need to add different field in structure and you need to add your own logic/coding in this explicit enhancement. A good explanation with screen shot has given in this post.

I have taken help from our ABAPer as the code is not known to me as a functional consultant, but if you know the coding part, then you do not need to take help from anyone. You can do it yourself with the help of my this blog.

Note: This screen layout is applicable for ALV layout. You need to run the report ME2N/ME2L/ME2M with ALV as scope of list.

As we know the structure of purchase report's screen layout is used from MEREP_OUTTAB_PURCHDOC. So we need to create a new structure under this structure as ZUSER (you can use it different as per your requirement). To create the structure, you need to go to SE11, then enter the structure name in Data Type and then press Display.

Then you will find an option as append structure. A brief detail explanation you can find it in this Document.

You just need to use a different component type (as you want to show it as User name) as SYUNAME.


Save your entry. You can save this into a TR, so that you can move it into another client if required.

Then you can see the field will be appeared in ME2N output screen layout. But it will come with blank value as we have just created the structure but didn't add any value or any coding for the newly created structure.


Now we need to create an explicit enhancement for this structure. When we run the report ME2N/ME3L/ME2M, system read the program LMEREPD02 (it is not the main program). In this program we can implement our enhancement and we need to do that under the methode build_base_list.

Go to SE38 and enter the program LMEREPD02, then click in the display, then find the method build_base_list in this program (you can find it in line item 76).

As this is a standard program, it will be same for every system (Note: I am not sure it can be different with different ECC/EHP release). Now double click on the method build_base_list.

Now click on the spiral symbol and follow the steps which I have already explained in this blog Explicit Enhancement for "Personal Settings" for an User.

Do these all steps from step 2 to step 5 in this blog. In step 6, you need to do some changes in coding.

Write the below code for this explicit enhancement. There are two way (code) you use for the same requirement.



          FROM ekko

          INTO re_outtab_purchdoc-zuser

          WHERE ebeln = im_ekko-ebeln.


IF sy-subrc <> 0.

    clear: re_outtab_purchdoc-zuser.



types : begin of ty_ekko,

         ebeln type ebeln,

         ernam type ernam,

         end of ty_ekko,

         ty_t_ekko type standard table of ty_ekko.


  data : wa_ekko type ty_ekko,

         it_ekko type ty_t_ekko.


  data : ename type ernam.


select ebeln ernam

   from ekko

    into table it_ekko

    where ebeln = im_ekko-ebeln.


   clear : wa_ekko , ename.

   LOOP AT it_ekko into wa_ekko.

   ename = wa_ekko-ernam.



   re_outtab_purchdoc-zuser = ename.

Remember, do not use both code in this enhancement, you can use only one of them.

(You can find attachment for both coding also with this blog)

If you will use a different Component for structure MEREP_OUTTAB_PURCHDOC, then you need to write the same component in the last line of this coding.

I have used the component as ZUSER, so that I have written the same component name in the last line as re_outtab_purchdoc-zuser = ename.

Now click on Enhancement as shown in this Blog.

Now our enhancement is ready to use. Now we need to test the same for reports ME2N/ME2L/ME2M. Go to ME2N and enter your selection data and press execute.


Here you can see the new field with field value with correspond POs. If you are not able to see the field, then you need to choose the field from Change Layout. Now we can compare it with EKKO table, where you can found the same User name for these POs.


You can see both are matched. You can also use this field in these below reports and t-codes :

ME28 - Release Purchase Order

ME2C - Purchase Orders by Material Group

ME2W - Purchase Orders for Supplying Plant

ME2N - Purchase Orders by PO Number

ME2L - Purchase Orders by Vendor

ME2M - Purchase Orders by Material

ME2K - Purch. Orders by Account Assignment

ME35 - Release Outline Agreement

ME35K - Release Contract

ME35L - Release Scheduling Agreement

ME45 - Release RFQ.

Try it in your system. It is quite simple and easy if you know the code of the enhancement. Even you do not need to take help from an ABAPer once you will get the code.

Yet again February 2nd and there is nothing i can do about IT.


That is from the Groundhog Day movie, which became a synonym for all the things that can be seen redundantly every single day throughout the whole year.

Yeah, even when you search Google for a nice picture, just redundancy.




And nothing different in SCN.

Having the moderation box empty when going to sleep, it is filled up again in the morning.


Why should it be different? Every day new babies are born, every day we get new members in SCN.

Quite paradox,  if every day is February 2nd then the same baby should see the light of the world.

I guess it is even so we some members, they just have then a different user name.

Some have the same user name - and do not even imagine how dangerous this can be if another one with the same ID had annoyed the moderator recently.

Nevertheless, welcome SAP MM (do you know that you are number 135)


Please help me to get out of the Groundhog Day loop. Please try your best to not getting into this loop yourself.


Only a few hours ago a SAP Basis user (name S Basis - what else) posted "My  discussion threads is being deleted from This is happening with me for last 4-5 days".    Poor boy...the maelstrom of this Groundhog day is strong



Together we are strong too, let us try to get out of this.



Imagine ... the year 2003 ... where have you been? what was your age?  Imagine... all the things happened since then.

Quite a lot, right? By the way, it was the year when SCN (formerly SDN) was founded.

Imagine... how much questions have been asked since then. Imagine...could it be that someone else had the same issue like you before?

Or just look at the number in the content page of a space, here MM for example.

SCN MM number.PNG

Now try to imagine again. Can it be that someone had the same issue before you?

Let us try something else. Are you working for a company which is front runner and always first when a new Release or only a new Enhancement package is out? Or is it more like: At home I have already  Internet Explorer 11 while it is just IE8 in the company?

You can imagine what I want to say with this? With something really new you are probably the first with a new issue. But if you are on a release that is out for a longer time, then you can almost relax since someone else had the issue already and the solution is often right there to pick it up.

I have put together some tips and information for SAP freshers, things which should be known and heed, as the help us to get out of this Groundhog day syndrome.

Some search tips

Make use of the search in SCN: How to use SCN search

If you like Google more, no problem, then see Getting the Most out of Google: Optimizing Your Search Queries


When you search, get used to the SAP terms, which are quite different between the formal SAP help and the informal language in SCN.

An example: if you are looking for help on purchase orders, then use the word "purchase order" when searching or (OSS). In SCN people are in a hurry, in SCN you will find more POs than purchase orders. But you can find purchase order in SCN too, but rarely a PO in  And it becomes even worse if you search with Google for PO in German language and your boss is right behind you.

However a STO for a stock transfer order can be found in the official SAP pages. Looking for a TO  (transfer order) in whatever place is useless as the search engines make no difference between a capital TO and a small to.  Search not just once, vary the search terms and try it again.


If you search for step by step documentation in, then searching with a transaction code is quite good, the normal process documentation rarely uses transaction codes. This is also good when looking for SAP Notes. In SCN it can be helpful too, however, you have to ignore all the content where some comedians thought it is nice to list all transactions of a module (while those transactions are anyway available in SAP menu)


Searching for SAP notes in is challenging too. If you got an error message, then search with the message number, once concatenated, once with a space between message class and number. Log off and on again, maybe you get a different server which has totally different results (don't know how they make this) . Searching in English and in German may also get you different results (don't be afraid as a chicken - if you search with numbers - they are equal in both languages), hence it can be considered as an extended search functionality.


Also make use of the automated search ANST What is ANST....and why aren't you using it?

and the new PANKS Got an error message? The new tool PANKS is here to help you!


I am always curious how somebody could find something that I did not find, in such cases  I read the content and do then a search with other terms until I an find this content myself.




SAP talks with you


I  mean the software, the support desk is a different story.

You know, SAP does not like you, hence it does anything to annoy you from 9 to 5. What ever you enter it fires error messages, express messages, pop-ups and dumps. And because of all this torture SAP jobs were well paid. But since SCN the pain is no longer that big - so the compensation.


Error/warning/information messages, they can appear in the status bar, as a pop-up, or by calling them explicitly  via an icon in the screen. They are a designed communication between SAP and you. Important to know is that you only see the short version on first sight. There is usually a question mark in the pop-ups and the message containers. By clicking it you can get a more detailed information about this error, often along with an instruction for a solution.

Some tell you nicely that you shall contact the administrator, if you are not the end-user, then this message means you.

Other messages are unfortunately declared as self-explaining - some are - some not.

If the message appeared in the status bar, then just double click to see the long text.

What all messages have in common is that message class and number is listed above the long text.


If you need help in case of error messages, no matter if you help yourself by searching in SCN and OSS or post a question in SCN, then

Please do not free translate the messages, post it 1:1 exact, always post the message number too.

  • The message number makes a message unique. T100 table has all SAP messages, my IDES system has 525756 messages for english language only. What do you think how often the same text is used with different message numbers?
  • it gives  feedback that you had seen the long text of the message. You wont believe how many people are surprised that SAP has a long text to many of their messages.
  • the number can be used to check in SE91 which part is a variable
  • further you can enter the number in SE91 and click where-used icon to get to the programs and where you can read a few lines of code to see what fields are checked when the message is issued
  • the message number can be used to search content in SCN or  for OSS notes in SAP Marketplace
  • An Abaper can use  the message number to set a breakpoint to analyse the program in detail
  • message numbers with a Z in the beginning are usually homemade and you should ask your team instead posting in SCN



Express messages

SAP has an own email system, where users can send emails to another SAP user. And such messages can be marked as express messages. You get a pop-up when such messages arrive, but only if you are active. SAP will not disturb your sleep, it only bugs you when you do something.

Such express messages are as well used when the system is talking with the user about something important. E.g. when you believed to have a document saved and SAP didn't take it into the database. Unfortunately most times this pop-up for the express message has no understandable message for the user. But it should really not be ignored even it is talking moon lingo. Use SM13, it has all failed postings, select yours and click the header icon. There you can find a more clear message about the problem.

Don't just post "I got an express message" in SCN, first do your analysis in SM13, then search SCN based on the findings from SM13, and if you haven't found a discussion with a solution, then ask.




Dumps are ABAP Run time errors. This communication is chosen if something unexpected happened which was not foreseen by the programmer.

They look complicated on first sight, but this should not be a reason that you just forward it to SCN.

Read this document ABAP Dumps , it explains how a Dump is structured and where you can find which information and what you can do.

If you receive a dump, read it, try to understand it, then do what the dump wants you to do.You can even directly search for SAP notes as you can read in Searching for SAP correction Notes from transaction ST22. If all this did not help, search in SCN for similar issues, ask if you didn't find any, but tell what you already did, and attach the dump




SAP offers help, almost everywhere


Yes they do, for almost any field. Even a German cartoonist knows already the magic:




In many selection screens you can find a program documentation behind the blue info button.

blue info button.PNG


In IMG you find the docu in front of the activity



From the menu HELP you jump directly into the application help in, sometimes even to the correct page. But no matter where you landed in, you have a search box there too.




Interested in Table names / field names?

Many fresher are. Solution: place the cursor into the field, hit F1, then click the icon for technical field help. Voila: in the pop-up you can usually see the table name and field name. In some cases it is just a structure name, then go to SE11 enter the field name and click the where-used icon and limit the search on tables. Details can be found in How to find Table name for a Field which is shown structure name on press F1.



OSS notes / SAP notes / KBA Knowledge Base Articles

I already mentioned above how to search for them. They are official bug fixes and consulting notes from SAP. You need a  user ID for Sap Service Marketplace to access the notes. It is usually your basis team that grands this access. Read more details in SAP Service Marketplace Overview and FAQ



Searching for Transaction codes and where they are in the menu?

Honestly, if your dream is to become a consultant, then you should know the menu of your chosen module, like you know your neighborhood.

Forget the favorites, they are making you blind for the rest. Get used to the menu structure, which is in most cases logical grouped, and you often see the same structure in IMG too.

But if you really need to search for something, just do it in your system, using the binocular icons or just enter search_sap_menu into the command field.



If you already found the name of a customizing table and want to know where the customizing activity is, then go to SM30, enter the table name and click customizing.



What is the BAPI / User exit for ....?

Do you really want to ask this in SCN until you retire? Never asked yourself why others are able to answer this question?

There are ways to find them in SAP itself, e.g. with a transaction Would you like to SNIF?: All you enhancements at one blick or a small report  Looking for user exits for a specific transaction?




Wow, you made it till here. Looks like you really want to get to February 3rd.

You want to know where to search first? Hmm, I am not sure if there is a golden rule. If you are a beginner to SAP in general then really make use of F1 and and read SCN content. If you are a little more experienced and your issue has a taste of bug then start looking for OSS notes in You are new in a company? Approach your colleagues! They know what special things they implemented.



That was it, what should be known and heed by all our freshers to reduce the amount of basic and redundant questions in MM and other spaces.

In case some experienced folks has read this too and want to add some tips, please do so in the comment section.


Filter Blog

By author:
By date:
By tag: