Sapdup Blogging about SAP


Parameter EKO & Defaulting Purchasing Organization in the Purchase Requisition

Edit: I wasn't able to get our Basis guys to make the change in our sandbox system to either prove or disprove this post.  However I believe it to be accurate and would appreciate your comments.


First up, apologies for that awfully long title.

I spent hours yesterday trying to sort how to use user parameter EKO to default a purchasing organization (organisation) into a purchase requisition (PR).

All over the web about half the people said "all you have to do is set user parameter EKO" and the other half said "you're a bunch of idiots, it doesn't work!"

The answer, as is usually the case, is that you're all wrong (or right depending on how you look at it).

Here's the text for SAP OSS Note 73241 (hopefully these notes aren't proprietary or anything):


The field 'Purchasing organization' on the detail screen of the purchase requisition item is not supplied from user parameter EKO when you create a purchase requisition.
Additional key wordsME51N

Cause and prerequisitesIn most cases, it is not necessary to preallocate the field;it can even cause errors.
The purchasing organization is transferred with the selection of a source of supply when you start a source determination on the detail screen, thus, a manual entry is not required.In addition, you must only enter the purchasing organization during the manual allocation of a source of supply if there are several purchasing organizations responsible for the plant.Thus, the actual entry aid for the user would be a minimum.
A preallocation is a problem since the detail screen is generally processed in the background and, as a result, the user could not see the allocation of a value to the field.If you were working with another purchasing organization in a previous transaction, an incorrect purchasing organization would be written to the purchase requisition by the SET/GET mechanism.For this reason, preallocating fields via SET/GET parameters is generally limited to the initial screens of the transactions.
A further problem is the creation of purchase requisitions from other applications in the background (via function module ME_REQUISITION_EXT). For reasons of consistency, the field would have to be preallocated here also which in turn can easily cause incorrect values in the purchase requisitions.

Solution Provisioning the purchasing organization from the SET/GET parameter is not implemented until further notice.You must make a manual entry in the few case in which this is required.

So, as you can see, there are problems with setting the purchasing org automatically. However if you still want to do it, just get a developer (since you'll need a development key) to go into SE51 (Screen Painter), enter program SAPLMEGUI and screen 3322. Select Element List and go to the 'Special Attributes' tab. Ensure that the 'EKO' paramter is entered and check the 'GET' checkbox.

You should now be away and laughing.


SAP MM Automatic Account Determination

Sometimes I wonder how many implementations it would take to get the Automatic Account Determination process down-pat.

Every consultant I've dealt with has had to brush up on the account determination process before implementing it, no matter their experience level.

So, for my sake, and yours, here's a simple (as much as it can be) explanation of what Automatic Account Determination is, what it does, and how to do it.

Why do I need Automatic Account Determination?

Every time a transaction with financial implications is run, postings must be made to financial accounts. I'm a logistics consultant, so to be honest, I don't care. But it has to happen, so since this is an integration point between us and FI, unless you can make the FI consultant do it, we have to fight through it.

We could let the user enter the GL account each time we post an invoice or goods receipt, but SAP is supposed to be a productivity tool, so that's not really acceptable.

So, the idea is that the system will determine (based on our config) what account to post to depending on a number of factors, namely; company code, valuation area (plant vs company code), material / material type, transaction or business event and movement type.

So, with five variables, the determination system must be pretty complex?

Yes. When you come to understand the way SAP have done it, it is an elegant solution, but it is pretty damn complex.

Before you begin, sit down with the FI consultant, find out what accounts there are and in a business sense, how and when each of the accounts should be posted to. Discuss all five of the categories above. With this info set in concrete in front of you, you can begin the SAP config.

Here's the lowdown, try and stay with me.

Essentially all that is happening is that SAP are allowing us to maintain a record of "if x and y happen, then use account z" and "if a and b occur then use account q".

I can just imagine the conversation many years ago in Germany (translated for your convenience):

"Ok, we need a table of possible outcomes for account determination."

"That's faaarrr too easy. Let's break it into fifty different tables, come up with many interchangeable names for the same thing, and hide the tables beneath several different, unimaginable directory paths."

Configuration Steps

First up, since we have to do something first, let's specify our valuation control. This is done via IMG > Materials Management > Valuation and Account Assignment > Account Determination > Account Determination Without Wizard > Define Valuation Control.

All that we're doing here is specifying whether the system should consider the valuation grouping code in it's determination procedures.

"What's the valuation grouping code?" I hear you asking?

The valuation grouping code (vgc) is a collection of valuation areas that will have the same account determination. Since a valuation area can be a company code or plant, we can say that a vgc represents a group of plants or company codes that have the same account determination.

If you don't use the valuation grouping code, you'll have to set up account determination for each plant or company code in SAP.

If you're using the vgc, then jump into "group together valuation areas" and assign your company codes or plant a code (any code). They should be somewhere in the list automatically, all you should need to do is give them a code.

The next step is to manage different account determination per material type. This is where it can get complicated if you let it.

The valuation class is linked to an account category reference. The account category reference (acr) is an artificial code which allows flexibility in linking material types with valuation classes.

"Huh?" I hear you asking. Let's consider the alternatives.

We could relate the GL account directly to the material type. This would be easy to setup for a few material types, but would take a huge amount of time for many material types, and would be hard to understand if changes needed to be made.

We could use the valuation class, assign the GL account to it, and then assign valuation classes to material types. This is better, since we could for instance have a "Raw Materials" vc and a "Finished Materials" vc and then simply link all the various material types under each category to the valuation class. This would make updates and initial loads easier, but there is still one thing missing, a material type can only be part of one valuation class and can only post to one account.

However, in the real world, a material type may post to different accounts depending on things other than just the material type, such as plant, movement type or indeed any of the factors above.

So, we have an account category reference which is linked to a material type. This acr is then linked with a valuation class and the GL account is linked to the valuation class. So a material type can be linked to one or more valuation classes (and hence GL Accounts) and in turn, a valuation class can be linked to multiple material types (enabling ease of understanding and updates).

Now that you (hopefully) understand that, the actual updates are pretty simple.

Go to transaction: IMG > Materials Management > Valuation and Account Assignment > Account Determination > Account Determination Without Wizard > Define Valuation Classes and begin by defining your valuation classes. Then define your account category references and go back into your valuation classes and assign them (or you could do the acr's first). Then go into your material types and assign your acr's to your material types and done! For the moment.

At this point we should consider another factor, the actual business event that is occurring and it's effect on account determination. This is another area where you have to try and see through the impenetrable fog of terminology.

Each time "something" occurs in the system it produces a "key" for each of the postings that need to be made (i.e. debit and credit). This "key" is entered in our account determination procedure so that postings for credit and debit go to different accounts. Simple aye?

Well when (as far as I understand) the "something" can be called 'transaction (key)' or 'event (key)' and the "key" can be called 'value string', 'posting rule' or 'posting string for values' and the column header in SAP for the "key" says "Trans". Fun, fun, fun.

The combinations of movement type and "keys" and how they are determined are all internally programmed by SAP, so we don't really care. What we do care about is the account modifier or 'account grouping code'.

This is the topic I spent the most time on, and I'm still not completely clear, so don't feel bad if you're confused.

The account grouping code (aka account modification code, modifier or (in SAP) general modifier) is a three character code (which rather oddly has no link with the posting strings ("key")) which we use to break account determination down by movement type.

For example, by default in SAP, the system says for movement type 101 and posting key PRD there is no modification. So the account determination is not different based on movement type. However, I can enter a code (e.g. AAA) against movement type 101 and posting key PRD and code BBB against movement type 102 and PRD.

Then in 'Configure Automatic Postings' when we go into posting key PRD, we will make entries for 'general modifier' AAA, account 100000 and BBB of 100001 (there will also need to be an entry for a "blank" modifier which should cover all the other movement types).

So, make sense? Hopefully.

Now you need to go through and for each posting key that we're concerned with, record each of the defining factors mentioned above (you don't need to enter them if you're not using them) and enter a GL account for each permutation.

You should now find that your account determination is working. I wouldn't put any money on that promise. My hope is that having read this guide, you're a little bit closer to having your account determination working, and that in conjunction with a number of other resources you'll get there eventually.


PS: I will be updating this article periodically, and would appreciate your constructive criticism by commenting below.


SRM Sourcing via SAP Enterprise Buyer

Yeah, this is an official document from SAP about SRM.  I haven't used it extensively, but it probably has it's uses.


LO 530 Course Notes (aka SCM630) – Warehouse Management

If you're interested in SAP Warehouse Management, pick up this file of the SAP 4.6B Warehouse Management Notes.


LO 020 Course Notes (aka SCM500) – Processes in Procurement

This is the first in a series of posts of SAP logistics 4.6B notes that I found somewhere.  This post, the first, is of LO 020 - Processes in Procurement, Version 4.6B.

This is also referred to as SCM500 - Processes in Procurement.