Annie K

Discount in Kind

Posted by Annie K Aug 16, 2016

Discount in Kind - Discount in Form of Bonus Goods.



This function allows to get a product free of charge in the form of free goods when a certain quantity of product is ordered.


Discount in kind can be in the form of free or bonus goods. Free goods are of 2 types


Inclusive bonus quantity


Exclusive bonus quantity


Inclusive Bonus Quantity:


Free goods that are part of order quantity but not included in the invoice.

The quantity units of the free goods delivered and the ordered goods must be

    the same

The ordered goods and the free goods both involve the same material.



We order 10 chairs and vendor delivers all the 10pcs and declares that 1 chair among them is free and invoices only for 9pcs.

In this free goods are inclusive in the total quantity ordered.


Exclusive bonus Quantity:


Here in addition to the purchase order quantity, a certain quantity of materials are guaranteed as free goods.

A larger quantity is delivered than the ordered, whereby no charge is made for the additional quantity delivered.


The materials delivered as free goods do not necessarily have to be the same as the materials orders.


When five tables are ordered, the vendor supplies one chair as free goods.

Therefore, if we order five tables, we receive a chair as free goods.


Calculation of Free goods:


Screen Shot 2016-08-16 at 17.50.47.png


Mandatory Settings:


Configuration Steps:


Define condition type NR00 (Discount in Kind).

Assign it in the calculation schema of the corresponding pricing procedure.


Screen Shot 2016-08-16 at 17.54.06.png


Material Master Setup:


In material master, under purchasing data, select the “Material qualifies for discount in kind” indicator

Screen Shot 2016-08-16 at 17.55.07.png

Vendor Master Setup:

In vendor master, under purchasing data, mark the Grant discount in kind field.


Screen Shot 2016-08-16 at 17.55.57.png


Create Condition Record for Free Goods Determination:

Create condition record for free goods for the combination of vendor, material, plant and the purchase organization with the corresponding validity period. Use t code, “MBN1” for the creation of condition record.


Screen Shot 2016-08-16 at 17.56.35.png


Create Info Record for Free Goods:

Create Info record for the vendor and material combination using T-code ME11



     Screen Shot 2016-08-16 at 17.57.17.png


Create PO ME21N, Enter the Details see the result as per the free goods scheme Qty becomes free automatically in second line item.



Screen Shot 2016-08-16 at 17.58.18.png


This is the procedure in which one can add discounts / free goods automatically in PO.


Hope you have enjoyed going through my blog. Any suggestions / recommendations is highly appreciated.

Why a Release Strategy is required ?


The procurement department of a company consists of multiple buyers who are responsible for buying goods from the market.


Since purchase order is a legal document and it goes to the vendor, it is very much important to control the process to avoid any errors or unauthorized transaction.


Because of the legal implications of Purchase orders, it is very much required to control the procurement process by introducing approvals


There is a hierarchy of people  like the buyer who creates the order and different levels of purchasing managers to supervise and control the procurement process.


Advantages of SAP Business Workflow:


Workflow helps in reduction of process time as it automates the business process.



Can be integrated with the email system so that approvers do not have to wait or enquire about status of particular transactions.



Workflow allows process owners to keep an eye on deadlines, provides statistics on the length of time to complete work processes, determine the workload with regard to individual employees and save processing time.


Workflow helps to enhance quality of work as it reduces manual intervention.


Example : Suppose we are given following scenario:


The Release Strategy would be triggered for the following criteria:

   Document Type NB, Purchasing Org 0001, Purchasing Group 001, 002, 003, 004, 005.


We have 4 different Approval Levels depending on the PO Net Value :

Level 1 : 0.00 – 20,000.00 INR

Level 2 : 20,000.00 – 50,000.00 INR

Level 3 : 50,000.00 – 1,00,000.00 INR

Level 4 : > 1,00,000.00 INR

The Release Approval Workflow is as follows:


Level 1 : 0.00 – 20,000.00 INR – Approver1

Level 2 : 20,000.00 – 50,000.00 INR – Approver2

Level 3 : 50,000.00 – 1,00,000.00 INR – Approver3 / Approver4 / Approver5

Level 4 : > 1,00,000.00 INR – Approver6 (can delegate to any Approver1 / Approver2 / Approver3 / Approver4 / Approver5)


We need to go through the following Customization path in order to configure Release Strategy :


SAP Easy Access -> Materials Management -> Purchasing -> Purchase Order -> Release Procedure for Purchase Orders


Step 1 : Edit Characteristics –  (Tcode CT04)


Business Requirement:


We need to define which fields would be  used to determine the release strategy. This fields constitute the Characteristics in Release Determination. We need to create a Characteristic for every field.


The following characteristics have been created in our case :


ZPO_BSART – Purchase Order Type (NB) – Datatype CHAR 4

ZPO_EKORG – Purchasing Organization (001) – Datatype CHAR 4

ZPO_EKGRP – Purchasing Group (001, 002, 003, 004, 005) – Datatype CHAR 3

ZPO_GNETW – Total Net Order Value – Datatype CURR (15, 2) Unit INR



For a full list of fields that can be used to determine the release strategy, use tccode SE11 communication structure CEKKO.


If we want to make use of a field which is not available in CEKKO, we add that field in structure CEKKOZZ available within CEKKO, we would need to make use of the user exit M06E004 -> Changes to communication structure for releasing purchasing document. The field added in CEKKOZZ should be reflected in Header Data of transaction code ME21N -> Create Purchase Order.


We have maintained default values for ZPO_BSART, ZPO_EKORG & ZPO_EKGRP


Step 2 : Edit Class  – (Tcode CL02)


The characteristics have been grouped together to form the following class - ZPO_HPPTCL


Note: We can create any new Class assigning it to the relevant Characteristics but the Class Type should always be 032.


Step 3: Define Release Procedure -

The Release Group, Code and Strategies need to be defined here.


Configuration Path : SPRO -> Purchasing -> Purchase Order -> Release Procedure for Purchase Orders -> Define Release Procedure for Purchase Orders.


Select Release Groups – Create a new entry for release group 02


Select Release Codes –

There would be 6 Approvers involved in the Release Procedure. Hence, 6 Release Codes W1, W2, W3, W4, W5, W6 are created.


The Workflow Role has been selected as 1 from the dropdown list, since this is related to workflow release strategy without using a user exit.


Select Release Indicator

We would use 2 Release Indicators –

0 - Blocked

2 - Released.


Changeable indicator determines how the system would react when a purchasing requisition or purchasing document is changed after the change of the release procedure.


Release Strategy - Changeable Indicator : Possible values


       Changeable, new release in case of new strategy

   1  Cannot be changed

   2  Changeable, no new determination of strategy

   3  Changeable, new release in case of new strategy

   4  Changeable, new release in case of new strategy or val. change

   5  Changeable, new release if new strategy/outputted

   6 Changeable, new rel. if new strategy or value change/outputted


Select Release Strategies

Since we have 4 approval levels, We would create 4 new Release Strategies – R1, R2, R3, R4.


Configuration for Release Strategies are as follows :

Approval Level R1:

Screen Shot 2016-08-16 at 16.48.56.png

Approval Level R2:


Screen Shot 2016-08-16 at 16.51.00.png

Approval Level R3:

Screen Shot 2016-08-16 at 16.53.02.png


Approval Level R4:

Screen Shot 2016-08-16 at 16.54.19.png


Step 4: Maintain Classification - The Classification data can be maintained from the Classification Tab in Release Strategies or from Transaction Code CL20N.


Screen Shot 2016-08-16 at 16.55.23.png


Step 5: Maintain Workflow


After configuring the release strategies, the Workflow Role Assignment for the respective Release Codes needs to be done.


Select Workflow from the Activities Screen. Create Assignment for the agent Codes W1, W2, W3, W4, W5, W6.


Note: Release Approval can be made position based instead or person by making reference to the HR Org Structure which would require considerable amount of customization, has not been covered in this section.


Screen Shot 2016-08-16 at 16.57.38.png

Step 6: Configure the Workflow –


Go to transaction SWU3 or use the following menu path :

SPRO -> SAP Netweaver -> Application Server -> Business Management -> SAP Business Workflow -> Maintain Standard Settings


Activate all the lines if they are not already activated

Screen Shot 2016-08-16 at 16.59.22.png


Screen Shot 2016-08-16 at 17.00.41.png


Screen Shot 2016-08-16 at 17.01.29.png


Screen Shot 2016-08-16 at 17.02.13.png


Go to Agent Assignment -> Create from Menu and assign the relevant Approver IDs


Go to Transaction SWDB – Workflow Builder – Create Workflow

Choose Workflow for Release of Purchase Order (WS20000075) from Workflow Box


Screen Shot 2016-08-16 at 17.05.37.png


Screen Shot 2016-08-16 at 17.06.32.png

Click on Header -> Start Events Tab


Screen Shot 2016-08-16 at 17.07.29.png


Check whether object category BO and Object Type BUS2012 are assigned and is active.


From Menu, Go to -> Agent Assignment for Task


Screen Shot 2016-08-16 at 17.08.15.png

Go To Agent Assignment -> Create


Screen Shot 2016-08-16 at 17.08.46.png


Create The Users


Screen Shot 2016-08-16 at 17.09.23.png


Assign the users and generate.


Go back to initial screen and Activate the workflow builder and Save.


Step 7: Type Linkages

Go to Transaction SWETYPV – Type Linkages


Screen Shot 2016-08-16 at 17.10.06.png


Check whether linkage is activated for object type BUS2012 Receiver type WS20000075 by clicking on detail button.


Screen Shot 2016-08-16 at 17.10.40.png


Substitution in PO Workflow:


In SAP, the inbox is generally the “SAP inbox” accessed via transaction code SBWP. SAP also lets you flow the tasks into Lotus Notes and Outlook.


Business Requirement


Substitutes are essential so that a users work items can be seen and executed by a defined replacement user. This ensures that work is not left unattended if someone is out of the office unexpectedly.


A workflow sitting unapproved in the inbox of a manager who is on a month-long vacation could be a problem for the organization.

To address such issues, SAP workflow provides a substitution mechanism. The manager/approver nominates a substitute for the duration of his or her absence.


Substitutions can be of 2 types:

Active substitution (for eg. for absence due to vacations): In this case, the items belonging to the absent person are automatically assigned to the substitutes inbox (in addition to his own work items).

Active substitution is where User A is going on vacation and specifies User B as their substitute and activates the substitution.

Passive substitution (for example, for absence due to illness): the substitute must explicitly assume the substitution and will only view the items of the absent person in this mode.

If Passive substitution is used then the substitute (User B) only sees the work items of User A. User A sets up the substitution but does not activate it, then User B can Adopt the substitution if User A is out of the office unexpectedly.


In order to configure Substitution in PO Workflow, Task Classes & Classification Profile need to be defined in Customization.


Business Requirement:

In SAP Business Workflow system, there might be multiple Workflows activated at the same time , e.g. PO Release Approval, HR Time Sheet & Leave Approval, Approval for QM Notifications and so on. In order to map a substitution rule for a particular Work Item / Activity, we need to define Task Classes and Classification Profile and make the relevant assignment.


The customization steps for substitution are as follows :

Step 1: Define classification labels for tasks

To define classification labels, go to SPRO -> SAP Netweaver -> Application Server -> SAP Business Workflow -> Basic Settings -> Maintain Task Classes.



Screen Shot 2016-08-16 at 17.12.49.png



Step 2: Define Substitution Profiles

To define substitution profiles, go to SPRO -> SAP Netweaver -> Application Server -> Business Management -> SAP Business Workflow -> Basis Settings -> Substitute Profile -> Define Substitute Profile.


Screen Shot 2016-08-16 at 17.13.36.png


A substitution profile defines what tasks a substitute approver sees in his/her inbox


Step 3: Group the Classification into Profiles

In the previous step, we just defined names for substitution profiles. In this step, we assign the classifications to the profiles and make their definition complete.

To assign the classifications to profiles, go to SPRO -> SAP Netweaver -> Application Server - > Business Management -> SAP Business Workflow -> Basic Settings -> Substitute Profile - > Assign Substitute profile.

One or more classifications can be assigned to a profile.


Screen Shot 2016-08-16 at 17.14.31.png


Step 4: Classify the Workflow Tasks


The final step, though not technically a customizing activity, is classifying the tasks. Tasks are classified in transaction code PFTC.

Open up a task in change or display mode in PFTC.

To classify it, go to Additional Data -> Classification -> Create. Drop down on the classification field and pick one of the available classifications.


Screen Shot 2016-08-16 at 17.15.12.png


Screen Shot 2016-08-16 at 17.15.38.png

Setting up substitutions:

An approver can pick a substitute for a given time period and assign the substitute a profile.

To pick a substitute from SBWP, go to Settings -> Workflow settings -> Maintain substitute


Screen Shot 2016-08-16 at 17.16.17.png


Click on your name and select Create Substitute (F5)


Screen Shot 2016-08-16 at 17.16.53.png


Select the user ID, use a validity period, Add the ‘substitution profile’ 0003 and check on ‘Substitution Active’


Screen Shot 2016-08-16 at 17.17.28.png


PO Workflow Approval Media:


Business Requirement:

Once a PO is created and it is subject to release strategy based on the defined criteria, Workflow is triggered. There are several ways for an appropriate approver to release the PO for further processing.

Directly from R/3 System logon using a transaction code

From email – Offline or Online

  Offline Approval – when an approver can approve the PO without SAP GUI installed in his system / outside the office network

  Online Approval – when an approver gets a link in his email notification to release a PO  with the help of which he is directed to the SAP transaction to approve the PO.

Using Mobile Apps based on SAP Fiori

1. From System Logon – Relevant Approvers can approve the PO from R/3 system using transaction ME28 for list of releases or ME29N for single release.


The notification also appears in SAP Inbox which can be accessed using transaction SBWP

Screen Shot 2016-08-16 at 17.19.27.png

2. Directly from email –


Through an SMTP setup, which is generally done by basis, an approver can APPROVE or REJECT a workflow work item directly from email without logging into SAP. The approver may not have SAP GUI installed in system.


The list of email IDs to which the workflow items have been sent can be viewed in SAP through transaction SOST.


3. From SAP Fiori / Mobile Apps

SAP Fiori enable you to use your tablet, iPhone or any Android phone to access SAP applications.

You can view pending purchase orders and approve them using SAP Fiori. If necessary, you can forward approvals to a different employee for further processing.


Key Features

You can search for specific purchase orders.

You can display details for each purchase order, for example, the line items with detailed information, such as account assignment and conditions.

You can approve or reject purchase orders, and you can forward them to a colleague.



Configuration of release strategy is done with Workflow

Fiori Add-On Components are installed on


your system

SAP Gateway to use add-on component


Same configurations need to be done as before through SPRO customizations.

The Fiori App Details for configuring PO Approval in App based devices can be obtained from following link.


Fiori Apps Library


Approval steps would be as follows:

1. Log on the website link using any browser or configure your Fiori App on your Android system

2. Enter Username and password


Screen Shot 2016-08-16 at 17.22.18.png


3. Scroll down to “Buyer” Section and Click “Approve Purchase Orders” logo


Select the Purchase Order number on Left side to look into details


You can also see the items details such as Price, Discount and any other information.


Now user have option to click on "Approve" Button or "Reject" Button or "Forward" button.

Approver can also maintains his comments while approving the purchase order and these comments get maintained in the purchase order header level text


In SAP, the Text PO Approval Note is maintained in Header Text.


Escalation Mechanism - Deadline Monitoring:


Deadline monitoring defines the time span with in which a job is scheduled to End.

Business Requirement:

If a workflow task (say, approval of the PO) is not executed within the specified time, Escalation happens. It may be required to inform his/her immediate superior / colleague regarding the activity if the approver misses on the deadline.

The particular work item is then terminated and the subsequent step (Mail) is executed.



Use transaction SWDD Workflow WS20000075 -> Go to User Decision step, click on the Latest End Tab


By default, no Deadline Monitoring is Active,

Choose the “Work Item Creation” from the List Box.


After selection “Work Item Creation”, choose an offset of 5 minutes. This means that work item must be executed within 5 minutes of the creation, if not this would trigger.


     Enter recipient details to whom the message to be escalated, if the work item is not executed within 5 minutes after work item creation.


Save and Activate the Workflow Definition.


Use transaction code SWWA to check how the deadline monitoring program is scheduled in program.


Status Monitoring


Business Requirement:


In order to monitor a PO status at a particular time point, for eg., with which approver a PO is stuck, or the workflow steps undergone by a particular PO, we need to run some standard reports which enables Status Monitoring of the Work Items.

Status Monitoring of PO’s awaiting approval can be viewed using transaction SWI6.

Go to transaction SWI6 and give Object Type BUS2012


The report provides information on Status of PO s for which release strategy has been triggered.



Audit Trail:


Business Requirement:


As part of Audit Requirement, one might be interested to see who all are involved in approving a given PO. It is required to check the SAP User IDs that actually processed the approval workflow. In order to meet such requirements, there are certain standard SAP transactions which can be used.


     In order to check PO Release History, one can use standard report ME2N


     Select a PO line and click on 'Changes'


This gives the change history in a give Purchase Order


One can also make use of the standard Workflow SWI6, SWIA, etc to check on the Audit relevant reports (We can search in TSTC table with transaction code SW* in order to check on the workflow relevant report transactions)


Workflow Notification Automatic Deletion:


Report for Deleting Completed Notifications 

Business Requirement:

Completed notifications are not deleted immediately but are initially assigned the status Logically Deleted. You can physically delete these notifications from the database by using an appropriate report. In doing so, you can reduce the size of the relevant database table. This can result in reduced database-access times. Furthermore, you can reduce the amount of memory required.


Standard Report RSWNNOTIFDEL can be scheduled as a background job or execute it immediately.

If we schedule it as a background job, it is executed once daily and deletes all notifications that have been set to logically-deleted for more than 10 days. To change the number of days, we have to use transaction Schedule Background Job Job (SM36) .

If we execute the report immediately, we can also enter the number of days.


Transaction Code SWWL can also be used to delete Workflows based on their status.


Note : Execution of SWWL is not recommended in the Production environment.


Transaction SWIA can be used to manually complete the workflow instead of deleting it.


Security Assets - Roles & Authorisations:


Business Requirement:


In SAP, Roles and Authorization plays a vital order in order to restriction a transaction / Activity to the concerned user only. In PO Approval Workflow as well, it is very important that the Approvers are provided appropriate role in order to release a PO at a level defined for them by the management. For eg., A Level 1 Approver should not be authorized to approve a PO for level 2 or A level 2 Approver does not require interventions to approve PO at level 1.

For this reason, appropriate authorizations need to be set up in the user profiles where they user/approver would be given access to the relevant Release Code and Release Group only to which they are authorized to.


This is a Basis activity to provide the appropriate Authorization for release codes to the approvers.

Procedure to set up Roles & Authorizations:

Step 1: Through transaction Code PFCG, create a new authorization group, say, ZPO_APPROVER1

Step 2: The authorization group should contain the object M_EINK_FRG. The object needs to be added manually. First, select the object MM_E. Under that, select M_EINK_FRG.

Step 3: Assign values to the following as per release strategy

Release code: FRGCO

Release group: FRGGR

Step 4: Use Transaction Code SU01 to provide the rights to the approver as required. The appropriate Release code and release

group combination needs to be used for every user Authorization.



I have tried to explain the basic settings for configuring a PO workflow release strategy. Although the basic workflow configuration may be done by a Functional Consultant, help of a workflow consultant would be required in order to accommodate more complex business scenarios. This blog would give you a basic idea on the functionalities we can perform parallel to configuring the business workflow.


I hope you have enjoyed going through the configuration steps and scenarios. Any suggestions to this would be highly appreciated.

Update from previous version:


New features with version 9 of the Ariba integration with SAP Business Suite:

  • Ariba Sourcing integration, supporting operational and strategic sourcing
  • Ariba Collaborative Supply Chain Integration (CSC 3.0) with enhanced support of Schedule Agreement Release processing, and new support of Sub-Contracting and Consignment processing.
  • Enhanced and improved support of ERP SD Supplier integration from sales orders to invoicing.


Download the latest version now!

A new version of Ariba integration with SAP Business Suite is available now, extending Ariba Sourcing and Ariba Collaborative Supply Chain. Well-established SAP best practices for highly automated network-integrated procurement processes have further been improved.


To download the latest content for free, go to


New and existing SAP Ariba customers with an SAP ERP system will benefit from the packaged integration solution:


  • Simple and clear configuration guides
  • Predictable project outcomes
  • Reduces TCO
  • Quicker go-live
  • Expert knowledge and best practices


Once again, this content is free of charge for SAP customers, and can be accessed and downloaded from SAP Service Marketplace at Based on the guidance of that content, SAP customers are empowered to connect their ERP with Ariba on their own or with a partner. For those customers who would like to take advantage of SAP Ariba’s experience, SAP is offering a service to implement the standardized scope of the rapid-deployment solution within 5 weeks for a very competitive price.


This solution covers the integration between SAP Business Suite and Ariba to support procurement processes.


For buyers, the scope includes:


  • Integration of SAP ERP with Ariba Sourcing, supporting operative and strategic sourcing (optional)
  • Integration with the Ariba Network, supporting automated procurement document exchange with suppliers for SAP ERP MM & SRM classic, from purchase order to payment
  • Discount Management integration with Ariba Network (optional)


The scope supports aspects of these scenarios:


  • Self-Service and Indirect Procurement
  • Direct Procurement
  • Service Procurement
  • Invoice Management.


Ariba Collaborative Supply Chain 3.0 integration (optional)


  • Schedule Agreement Release processing
  • Sub-Contracting
  • Consignment processing


For suppliers, the scope includes the integration of SAP ERP Sales and Distribution with the Ariba Network, automating the creation of sales orders from incoming purchase orders and the sending of invoices to buyers.




For RDS content please contact

For RDS integration services by SAP please contact

To download the latest content for free, go to

Last week I attended a design thinking workshop. Design thinking is an approach to solve challenges and accelerate innovation by combining three different interests: desirability, feasibility and viability.


Excited by what I learned there, I shared my newly acquired knowledge with a colleague. After discussing, we looked at areas where design thinking could be applied to topics we deal with every day at SAP. Currently, we work on the integration of Ariba procurement and sourcing solutions to SAP ERP applications. Could we use design thinking to accelerate innovation in even that topic? In order to answer that question, we simply applied design thinking to this particular scenario and tried to come up with an ideal solution!


So what’s important for a smooth integration to SAP Ariba apps? First, the integrators need to develop the business processes across the different applications. Wouldn’t it be great if they had already best practices and ready-to-go business process diagrams?


Our customers don’t want to waste their resources on paper work and manual processes. That’s why they decided to exchange documents with their business partners electronically on the SAP Ariba Network in the first place. This brought up our second requirement. Integrators need to properly configure the communication channels among the apps for those electronic documents to fly back and forth across the network. Wouldn’t it be great if they had best practices and ready-to-go configurations available?


Before going live with integration, you have to test it. Everybody who has done this before, would agree that developing test scripts on your own can be a pretty tedious task. Wouldn’t it be great if they had access to best practices and ready-to-go test scripts?


Obviously, it did not take long until our SAP Ariba Integration rapid deployment solution (RDS)  came to our minds. It contains best practices with business process diagrams, with configuration guides and test scripts. It already provides the necessary tools and, by the way, combines the three pillars of design thinking, namely; feasibility, desirability and viability.


Summing up our little experiment: we could have saved our resources and brain power on design thinking and just used the prepackaged SAP Ariba Integration RDS instead. The great news is that if you’re looking to simplify your own integration with SAP Ariba, you can save yourself a lot of time and effort and simply leverage the RDS!


The current limit of the MIGO Serial number screen is to accept Serial numbers in a batch of 6. This makes it difficult and incurs time to receive goods more than 6.



The functionality should allow the user performing Goods Receipt to select any number of serial numbers from the excel sheet and use the functionality of clipboard to paste the same instead of keying in each serial number one by one.



Include: LMIGODS3


Step1: created an implicit enhancement ZMIGO_SERIAL_NUM for the method tableview_serial_cursor .


Attached the clipboard functionality to the ENTER command


Step2: Get the cursor field to determine where the enter in pressed.


Step3: Use the clipboard method to get the data.


Step4: Update the structure.


Step5: Clear the clipboard.


Go to transaction MIGO


Open a purchase order


Copy some serial numbers from excel, place the cursor on the row and paste them by pressing ENTER.


Now we can enter as many as serial numbers directly without scrolling down.

    Sometimes after posting material documents, user found the G/L account for transactions in accounting
document is unexpected. But how to check the customizing of G/L account maintained for transactions?
Please let me take transaction GBB for example and introduce it:


    Firstly you need to access T-code OB62, to get the "Chart of Accounts" which is assigned to the company
code in your case.





    Secondly please goto T-code SE16 and display table T001K. Get the value of field "BWMOD" for corresponding
valuation area and company code. This is for "Valuation modification".




    If you need to know the "General modification", you can run T-code OME9 for the corresponding account
assignment in your case and get the value of "Account Modification".
Also in T-code MM03, you can get the
"Valuation class" in the 'Accounting' view for
this material.




    Finally, you can run T-code OBYC and select transaction GBB, enter the "Chart of Accounts" you got in the
first step, you can see the G/L accounts maintained for all "Valuation modification" and "Valuation class".

You can select the line according to the value you got in the steps above, and check the accounts.


Hope this is helpful and you like it


     When creating or changing a purchasing document the message determination will

be always processed to find out if an output message can be created at header level.

But sometimes, the output determination is not working well. In this blog, I will share

some tips about trouble shooting for output issue in PO.

1.  No output message was created automatically

   a. Try with standard settings

    b. Are partners correctly determined?

    c. If reproducible with standard settings, check the configuration.

2.  Wrong output message appears by default

   a. Try with standard settings

    b. If reproducible with the standard settings go to header/message, goto/determination

        analysis. You’ll see where the message is coming from. See the following example.


    c. Are partners correctly determined?

    d. Check the configuration.

3. The message is not processed, get a red cross or/and red light in header/message.

    a. Go to header/messages/ processing log, look at the error message

     b. Try with standard settings.

     c. Check that there is no release strategy. If there is one, the purchasing document

         needs to be fully release before being able to process it.

     d. If processing time is 4, try with 3.

     e. Check the configuration.

4. change message - problem to create it or to process it.

     a. A change message is created automatically if you change a field and if you have the
         following settings in place: 
For output type NEU you have Prog: FM06AEND and

         Form routine: CHANGE_FLAG.


         You should have one line with output type and the require operation for change.


         MM/Purchasing/Messages/Output control/ Message determination schema/assign

         schema to …: ‘M’ should be flagged.

    b. Two ways to repeat messages: Go to ME22N and Go to header/message,

        select the message you want to repeat and press ‘repeat output’. Then Go to

        ‘Message output’ transaction (e.g. ME9F for Pos) to output the message.

        The other way is Go to ‘Message output’ transaction (e.g. ME9F) and execute

        with ‘processing status’ = 1, Select the correct line + click on ‘message details’.

        Select the correct output message + click on ‘repeat output’. Click 'Save' and return

        to the initial ME9F screen and execute it again with ‘processing status’ = 10.

Hope these information can be helpful.

       In April, our new wiki page for "ERP Materials Management" went live. The new page is more user-friendly,
also easy to read on mobile.


wiki page.JPG


   As a member of MM wiki housekeeping project, please let me introduce the features about this new page, including
some guidance about how to use it:

  ★Main page


   1. Big button replaced the link for every sub-space. You can easily access it when using mobile.
   2. Relevant links are listed on the right hand side. For example: SCN, Hot KBA, Online Help etc.
   3. There is a box to show you the contents which are updated recently.

   4. PS social media channels are listed to provide you various ways to find out information.
   5. Provide different channels for your suggestion and your content.
   6. Quick link to other areas if a question came to your mind suddenly when you went through the MM knowledge.
   7. Highlight the Trouble Shooting Guide before introducing sub space, so that you can easily find it.



  ★Sub space


   1. List all the child page in the box. You don't need to search the right one from the whole list.
   2. The sub title is defined as per function, not the technical component of MM area. This way is more intuitive
      and easier for users to understand and find useful information.
   3. Put the common one in a single box on the right hand side.





    With less clicks, you can easily get what you want. You cannot wait to try this new wiki page ERP Materials Management - ERP SCM - SCN Wiki ? Welcome to any feedback or suggestion about this new Wiki page.

We were once handling a high profile Customer who implemented SRM Central Contracts and replicated them to ECC. They faced many issues related to data consistency between the 2 systems particularly in the MM-Services module. This is one such case where the added  services in SRM went missing in ECC.

Basically when you create a contract and change it by adding an outline and some services under it from SRM , the services under the new outline went missing. Initially it started off that only bigger contracts with many outlines were causing the issue but also for very simple structures also this occured like,


Main Outline

  • First Outline  ==> with services
  • Second Outline

           -->Sub outline




We could not reproduce by blocking the queue and re-running it (or) via SPROXY debugging, it happened when the outbound and inbound queue processing was really fast i.e., when we execute the end-end process from SRM.


But luckily we found a pattern and we tried to re-create it whilr debugging and it indeed reproduced the same issue.

Root Cause

In all working scenarios in table ESLL , SUB_PACKNOs are generated in ascending order,


0031843468   0000000001 0000000000                     0     0000000000

0031843468   0000000002 0000000001                     1     13.13                X 0031843469

0031843468   0000000011 0000000001                     1      90000                  0000000000

0031843468   0000000012 0000000011                     2      70000              X  0031843475   >> sub_packno is generated in ascending…

0031843469   0000000007 0000000010   13019828 0 0000000000

0031843469   0000000008 0000000020   13019829 0 0000000000

0031843469   0000000009 0000000030   13019830 0 0000000000

0031843469   0000000010 0000000040   13019831 0 0000000000

0031843475   0000000013 0000000010   13019742 0 0000000000


In all NOT working cases , SUB_PACKNO were generated in descending order…  

  1. Table: ESLL


0031844534   0000000001 0000000000 0000000000                     0000000001

0031844534   0000000002 0000000001 13.13                X              0031844535   0000000137

0031844534   0000000011 0000000001 98765               X              0031844499   0000000142 > sub_packno in descending order

0031844535   0000000007 0000000010 000000000013019828     0000000000   0000000138

0031844535   0000000008 0000000020 000000000013019829     0000000000   0000000139

0031844535   0000000009 0000000030 000000000013019830     0000000000   0000000140

0031844535   0000000010 0000000040 000000000013019831     0000000000   0000000141


Debugging Analysis:


After create, 


0031844634 0000000001 0000000000                                         0                                             0000000000

0031844634 0000000002 0000000001                                         1         13.13             X             0031844635

0031844635 0000000007 0000000010   000000000013019828       0                                             0000000000

0031844635 0000000008 0000000020   000000000013019829       0                                             0000000000

0031844635 0000000009 0000000030   000000000013019830       0                                             0000000000

0031844635   0000000010 0000000040     000000000013019831   0                                             0000000000



During change New PACKNO is generated from below FUNCTION,



SAPLSNR3              FUNCTION              NUMBER_GET_NEXT









Since I suspected that if the generated number from the FM is not in ascending order from the previously generated service package then the following thing happens, I changed the number to ‘0031844633’, one number prior to the first outline '0031844634.'.


So the programs came to the below flow,






SAPL2014              METHOD                CHANGE_PACKAGE

SAPL2014              METHOD                IF_BAPI_MEOUT~SET_ATTRIBUTE

SAPL2014              METHOD                POST_PROCESS

SAPL2014              METHOD                SET_OBJECT_ATTRIBUTES

SAPL2014              METHOD                PROCESS

SAPL2014              METHOD                IF_PURCHASE_OUT_BAPI~PROCESS


There is a READ table with Binary search


  READ TABLE ix_esll WITH KEY packno = esll-packno

                              introw = esll-introw

                              BINARY SEARCH.


Internal table    ix_esll[]

0031844634|0000000001|000000000<                  |0031844635    |U |

0031844634|0000000000|000000000<                  |0000000000    | |

0031844634|0000000001|000000000<                  |0031844635    |U |

0031844634|0000000001|000000001<                  |0031844633    |I |

0031844635|0000000010|000000000<000000000013019828|0000000000    | |

0031844635|0000000020|000000000<000000000013019829|0000000000    | |

0031844635|0000000030|000000000<000000000013019830|0000000000    | |

0031844635|0000000040|000000001<000000000013019831|0000000000    | |

0031844633|0000000010|000000001<000000000013014792|0000000000    |I |


Since IX_ESLL is not in sorted order the read table failed with SY-SUBRC = 4. But since there was no SY-SUBRC check, the next statement where ESLL held the new service line Information got overwritten to IX_ESLL structure




MANDT  C              3 100

PACKNO N             10 0031844633

INTROW N             10 0000000012

EXTROW N             10 0000000010

DEL         C              1

SRVPOS  C              18 000000000013014792


, and later the content is updated into IX_ESLL internal table but the KZ flag is ‘U’ because it has the flag of the previous read outline.


We had a discussion with Development and came up with a logic in the calling subroutine and created note 2110200 for this rare case.


Hope the above information would be useful in such kind of weird cases where blocking queues would not reproduce the issue but only when queue processing is very fast.










Years ago, a friend of mine, gave me a gift that represented this expression ‘Old is Gold’. It is a Hindi proverb and, if I understood properly, it means that ‘we should not neglect our elders just because they are old but take care of them like they are precious as gold’.


This year, I am leading a project to reshape the layout of ERP Materials Management Wiki in our SAP Community Network (SCN), and during all projects phases this Hindi expression was coming to mind in a different perspective. I was trying to figure out how to bring a ‘21st century look’ to our MM Wiki Space without losing the precious content produced along the years. ‘Old is Gold’ and we could not destroy everything just trying to achieve an innovative concept. The key factor to deal with this point was to use a ‘bottom up’ perspective, involving SAP Consultants worldwide (Seniors and Millennials). We created several prototypes in different SAP locations and, building on top of other’s idea, we reached our final prototype.


Therefore, I would like to announce that our new ERP MM Wiki Space is live.



old is gold.png


ERP MM Wiki Space is divided in the following areas:


In this space, you can find all SAP Product Support Media Channels and relevant links (Troubleshooting Guides, FAQ Notes, SAP Help, etc). It is also possible to submit your own content in our Staging Area and suggest a new content to be created by SAP Support.


Feel free to go through this channel and please share to your peers.


Kind Regards,

Fábio Almeida - MM Support Consultant/Project Manager

Have you experienced the issue that the commitment was not generated for Purchase Requisition and Purchase Order? Or the commitment value was not reduced or displayed as you expected? Now a new tool has been released with SAP KBA 2272940.


By running this tool, you will get the information about which customizing setting is requested for generating the commitment, and whether the commitment value is correct. In case of there is data inconsistency in the commitment table, it will provide you the resolution for fixing it.


You can find more detailed instruction in SAP Wiki page Commitment checking tool and the troubleshooting guide Commitments in Material Management.

All of you who heard about Lean Manufacturing also are probably familiar with KANBAN concept. It is not new anymore but surprisingly not that popular around production facilities using SAP, even though SAP ERP has the KANBAN submodule sitting there in Production Planning section (though often the actual process is much more present in internal and external logistics area the production).

If you are one of those who knew about SAP KANBAN and managed to get the customer to use some of internal, external or in house manufacturing scenarios of KANBAN, you might find topic of this post quite interesting. As the solution itself offers some very well thought, flexible and diverse standard customizing options, the problem is with maintaining of implemented KANBAN cycles.

If you take an example of automotive company using a lot of KANBAN cycles with a lot of small parts used for manufacturing, you will see the problem of managing these hundreds of records in the system. How to massively change status sequence if you decided to do it? How to follow the lifecycle of particular cycle? This is not easy in SAP… unless you know the add-on Kanban Enhancements for Lean Manufacturing.

This is the add-on that you can activate via Switch Framework in t-code SFW5. Technical name is LOG_PP_LMAN_02 located in DIMP Business Function Set. What is very good also is that the activation is reversible so if it clashes with some of your other settings or custom development, you can go back anytime.

There are several functions delivered with this add-on, I wanted to mention ones most useful from maintenance point of view:



Mass-Processing for Control Cycles - that, by adding ALV view for PKMC transaction (KANBAN control cycle maintenance), enables you to process several control cycles centrally and quickly gain an overview of the consistency of the control cycle data.


Lifecycle for Control Cycles - you get four new statuses to represent the state of your control cycles plus ability to turn on change documents for control cycles and trace all changes in the control cycle data


Authorization Concept for Status Changes - you can grant authorization for status changes on a targeted basis and restrict the steps in the Kanban process to certain user groups or individuals (only desired groups can trigger particular KANBAN statuses).


The full description of this add-on, together with some further customizing needed to make it work is available in SAP help portal under:

Recently I am on a project. In this project, we had a challenge.

In their business, they have 61 plants (for three company codes) and they are using stock transport order from 5 manufacturing plants to all those 56 plants (basically called Depots).

They are using a transfer price for each stock transport order. Transfer price is nothing just a condition type is added into schema and amount will be fetched automatically from condition record.

They have over 20k material and they have 7 different price as per different locations. Multiple plants is exist for one location. They have categorized all plants into 7 different price lists.

First we have tried to map condition record by using combination Receiving plant and Material. But then we realized that condition record has to be maintained 56 times for all 20k materials. It’s really a tough job for user to maintain price for 56 times for 20k materials.

Basically, their requirement was to categorized plant with regards to price list. So we did need to find a field which can be assigned to multiple plants (with same value) and this field can be used for price determination. Unfortunately we did not find any such field.

Then we found an option to map their requirement. A customer (plant as customer) need to be assigned to plant in case of stock transport order. We take the field Price list (PLTYP) from customer master as a category of those customers which are assigned to certain plants.

Note: They were not using that field (Price list) in SAP system.

Price list is available in field catalogue for MM pricing. If not, then you can add it from OLME-Conditions-Define Price Determination Process-Extend Field Catalog for Condition Tables.

Then create a new condition table from M/03:


Then add this condition table to certain access sequence from M/07. Then use this access sequence for that certain condition type.


These were the configuration done from functional side (for clear information, you can check this blog post Pricing procedure Steps and Details in SAP MM). Now one enhancement has to be done from technical side.

We need to pass the price list value to KOMK and KOMP structure by using enhancement LMEKO001 - Extend communications structure KOMK for pricing and LMEKO002 - Extend communications structure KOMP for pricing.

Coding part is:

DATA: lv_kunnr TYPE kna1-kunnr.
IF i_ekko-bsart = 'ZUB'.

   SELECT SINGLE kunnr FROM t001w
     INTO lv_kunnr
     WHERE werks EQ i_ekpo-werks.
   IF sy-subrc EQ 0.
     SELECT SINGLE pltyp FROM knvv
       INTO e_komp-pltyp_p
       WHERE kunnr EQ lv_kunnr
       AND   vkorg EQ i_komk-vkorg
       AND   vtweg EQ i_komk-vtweg
       AND   spart EQ i_komk-spart.


We have made it for ZUB document type only (you can do it for UB document type also), so that it wont take effect for any other process (like Inter company STO). In that coding you can see we have taken KUNNR from T001W table and take the price list (PLTYP) value from KNVV table with certain selection criteria (like Sales organization, Distribution channel and Division) and pass the value to certain structure.

Note: You have to do this coding for both enhancement (LMEKO001 and LMEKO002).

Now take those assigned customers from T001W table and categorized these customers (plant as customers) with certain value in Price list. E.g. S1 - Sales Price_West Bengal, S2 - Sales Price_Delhi, S3 - Sales Price_Mumbai etc. You can find it in sales view of customer master record:


Now create condition record by using this condition table from MEK1:


Now create stock transport order where be sure you are using correct receiving plant, as customer (plant as customer) will be fetched from shipping data of particular receiving plant.


Here, you can see Transfer price has come automatically with correct price which we have maintained in condition record. In shipping tab, you can find the same customer code.

Now they are happy with that. They just need to maintain condition record for 7 price list and it will be effected for all 56 plants.

I have given an example to use the field Price List (PLTYP), you can use any other field. Just remember, that field has to be exist in price field catalog.

Have you ever wondered why planners tend to rather use a safety stock with MRP Type 'PD' to buffer variability, as opposed to a reorder procedure? Oftentimes PD is used across the board and no one wants to bother with another MRP type. However, with SAPs standard configuration the safety stock doesn't serve as a planning buffer and the additional inventory ends up being dead stock.


Consider the following scenario: a safety stock of 30 pieces is set and a production order asks for 10 pieces on April 15. A deterministic planned material (PD) would replenish the inventory up to 40 pieces just before April 15. If, for some reason, the production order would increase the required quantity to 15 pieces two or three weeks before its start date, the MRP run (which excludes safety stock in the net requirements calculation) would generate an additional order proposal for 5 pieces. In that case, the inventory on April 14 would be 45 pieces... even though 40 would be plenty (25 more than needed). Simply speaking: safety stock is taken out of the planning efforts and the entire safety stock remains unused (...becomes dead stock).




A far better solution, in my opinion, is the use of a reorder point method. If we're taking the same example, we'd set the reorder point to 30 pieces and thge MRP run would only replenish if the inventory level is lower than 30. During the replenishment lead time these 30 pieces serve as a true buffer and are consumed by regular consumption. Any safety stock that is set, is only used as a signal (exceptional message) when inventory gets really low. As you can see in below graphic, this method is a true buffering strategy.



Switching your policy from a PD with safety stock to a reorder point procedure will instantly reduce your dead stock and bring average inventory holdings down. If you're concerned about stock-outs, increase the reorder point. That is much better than never dipping into safety stock.


(note: if you're adamant about using PD. you can customize SAP so that at least a portion of the safety stock is considered as a buffer for planning)

When you create an STO, do you know it is one-step or two-steps transport? When you

create delivery for the STO, can you judge if the movement type system determined is correct or


In this blog, let me introduce my way to check these points.


★Whether the STO is considered as 1-step?
    debugging screen.jpg


As you can see in the picture above, system check table T161W with supplying plant+ recieving plant +
document category.
The document type of the STO is not a key for determination at all. You can check

table T161W to see if this STO is considered as one-step or not.


★How system determines the movement type?

    Afterwards, system checked the delivery item category, in T-code VL03N you can see it,

    for example the delivery item category is NLRN. Then in the following customizing:


         Sales and Distribution ->
               Sales -> Sales documents ->
                      Schedule lines -> Assign schedule line categories


system founds the schedule line category, for example it is NR. At last, in T-code VOV6, for Sched.line cat NR,
you can see there is setting: 



    Movement Type             671

    Movement Type 1-Step   677



Therefore if the STO is one-step transport, then the movement type will be 677 in the delivery. Otherwise it will
be 671.

Hope this can be helpful. You may also want to read KBA 1774717 - Table T161W - document type not taken into account.


Filter Blog

By author:
By date:
By tag: