M_BEST_EKO — Purchase Order Check by Purchasing Organization
M_BEST_EKO controls which purchasing organizations a user may create, change, display, or release purchase orders for. SAP checks it alongside M_BEST_WRK, M_BEST_EKG and M_BEST_BSA whenever a purchase order is processed; a missing value for the purchasing organization on the document is the single most common reason this check fails even when the role appears correct.
This page covers the M_BEST_EKO authorization object, which restricts purchase order processing by purchasing organization. It focuses on where the check fires in the procurement transactions, how to isolate it from the other M_BEST_* checks using SU53 and the authorization trace, and the pitfalls that make an apparently complete role still block a buyer.
Published 16 Sept 2026· 839 words
What it protects
M_BEST_EKO restricts purchase order activity to specific purchasing organizations. It is one of four objects SAP checks together for purchase orders - the others cover plant, purchasing group and document type - and all four must pass for the action to succeed. The structural fact that causes most confusion: the purchasing organization value used in the check is not typed in by the user, it is derived from the purchase order header (or from the item's plant, for plant-assigned purchasing organizations). A buyer can hold perfect authorization for the purchasing organization they think they are working in and still fail the check if the document's actual purchasing organization is different, for example because a plant was reassigned to a new purchasing organization and the role was never updated to match.
Fields checked
- ACTVT - the activity being performed: 01 create, 02 change, 03 display, and other values for release-related actions depending on the transaction.
- EKORG - the purchasing organization on the purchase order header, checked against the values maintained in the user's role.
Where it is checked
The check fires inside the purchase order transactions - ME21N on create, ME22N on change, ME23N on display, and ME28 or the release transactions when a PO is released - at the point the system resolves the document's purchasing organization, before it lets the user proceed into the item overview or saves the document. It also fires in list and reporting transactions that filter or display purchase orders by purchasing organization, such as ME2N, ME2M and similar list transactions, and in message output and output determination steps that touch the purchase order. Background and batch processing that creates or changes purchase orders, including conversion from purchase requisitions and scheduling agreement releases, runs through the same check because it calls the same underlying purchase order logic. The check is not tied to a single screen; any code path that opens, saves, or lists a purchase order object triggers it for the purchasing organization derived from that document.
How to trace a failed check
Start with SU53 immediately after the failure, before doing anything else in the session, since SU53 only shows the last failed check and gets overwritten. Look specifically for M_BEST_EKO in the list rather than assuming the first M_BEST_* object shown is the culprit - a failure can show multiple objects in this family and only one may actually be short. If SU53 is inconclusive or the session has moved on, run the authorization trace (transaction ST01 on older systems, STAUTHTRACE on current ones) for the user, reproduce the failing step, then filter the trace output to M_BEST_EKO and note the EKORG and ACTVT values the system actually checked. Compare that EKORG value against what the user expected - it may not match the purchasing organization the buyer believes they are working in. Hand the security team the transaction code, the ACTVT value, and the exact EKORG value from the trace, not the purchasing organization name the buyer typed or selected on screen.
Whose problem this is
This is a security team fix once the functional side has confirmed the correct purchasing organization and activity from the trace. A usable request states the user ID, the transaction, the ACTVT and EKORG values pulled from ST01/STAUTHTRACE or SU53, and confirmation of which purchasing organization the user's job actually requires - not the one they assumed.
Common pitfalls
- A role built with a purchasing organization value list that looks complete still fails because the failing document resolves to a purchasing organization not on that list, often after a plant-to-purchasing-organization reassignment in configuration.
- Consultants see the SU53 failure, assume the role is broken, and request a blanket EKORG value of asterisk from security - this fixes the symptom but removes a control the business asked for and gets flagged in the next audit.
- The purchasing organization check passes but the transaction still fails because M_BEST_WRK, M_BEST_EKG or M_BEST_BSA is short for the same document - fixing only M_BEST_EKO and retesting without checking the other three wastes a full round trip to security.
- SU53 shows a stale result from an earlier, unrelated failure in the same session, leading someone to chase the wrong object entirely; always reproduce the error immediately before pulling SU53.
- Composite or derived roles sometimes maintain EKORG at the org-level template but the value never gets pushed down correctly to the derived role, so the value looks present in the template but is missing where the user's actual role is checked.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-auth-objects/m-best-ekoERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.