Scenario 4 — Service Procurement (Consulting Hours)

TIER 2 · ACCOUNT-ASSIGNED ★★☆☆☆ ⏱️ ~2 hours AC01 → ME21N (item D) → ML81N → MIRO
← Previous
Scenario 3: Goods Issue & Transfers
Next →
Scenario 5: Consumable Direct Purchase
✅ Live-tested on S/4HANA 2023 (PSPK)
Executed end-to-end: service master (AC01) → service PO (item cat D, acct assignment K) → service entry sheet (ML81N, accepted) → invoice (MIRO). Every first-run gotcha is captured in the steps and the fixes table below — service number range (error 30042), item category D vs account assignment K, the G/L "post automatically only" trap (use 470000), the Tax Code, the greyed ML81N screen, and the MIRO balance / BD-tolerance behaviour.

📊 Business Case — When & Why You Use This

Service procurement is how you buy work, not goods — consulting, maintenance labour, transport, security, audits. There is nothing to put on a shelf, so SAP uses a different flow: an item category D purchase order, a Service Entry Sheet (ML81N) instead of a goods receipt, and the cost lands directly on a cost center with no inventory in between.

🕐 When to use it

Any time you pay an outside party for effort rather than a physical item — SAP implementation hours, machine servicing, freight, legal/audit fees, housekeeping contracts.

❓ Why it matters

It gives Procurement control over services the same way as goods: a real PO, a quantity/price commitment, and a formal acceptance step (the SES) before any rupee is invoiced — so you only pay for hours actually delivered.

👤 Who triggers it

The requesting department (here, IT) raises the need; Purchasing cuts the service PO; the department head approves delivered hours by accepting the SES; AP runs MIRO against the accepted sheets.

🔁 The key distinction

No material, no MIGO, no inventory. The Service Entry Sheet (ML81N) is the goods receipt for services, and account assignment K is mandatory — the cost is an expense from the very first acceptance.

💰 Financial Impact — The Easy-Money Example

PakSteel engages Lucky Consulting for 120 hours @ ₨5,000 = ₨600,000 of SAP support. The consultants bill weekly, so the cost arrives in slices. Take one week of 40 hours = ₨200,000 and follow the money — notice the expense hits the moment you accept the sheet, long before the vendor is paid:

📝 SES created
₨200,000 logged
You record 40 delivered hours in ML81N. Status "Created" — nothing has posted to FI yet.
✅ SES accepted (mvt 101 equiv.)
GR/IR ↑   Expense ↑
Acceptance posts ₨200,000 to Consulting Expense (470000) on cost center PKADM-IT, offset to GR/IR Services.
📊 Invoice (MIRO)
Vendor owed ₨600,000
After all 120 hours, MIRO clears GR/IR and books the full payable to Lucky Consulting.

The big idea: unlike stocked material, a service is never an asset — it is expense from the instant you accept it. The SES acceptance is the cost-recognition event (Consulting Expense Dr / GR/IR Services Cr); MIRO only swaps GR/IR for the vendor payable. The IT cost center carries the full ₨600,000 once the engagement closes.

💡 Key lesson: the Service Entry Sheet is the financial heartbeat of service procurement. Acceptance = cost recognition. No accepted SES, no expense and no valid invoice — which is exactly why MIRO rejects a service invoice when the sheet hasn't been accepted.

🇵🇰 The Business Story

PakSteel hires Lucky Consulting (Pvt) Ltd for SAP implementation support — 120 consulting hours @ PKR 5,000/hour = PKR 600,000. Service is delivered weekly; PakSteel approves time sheets via Service Entry Sheet (SES). Cost hits the IT Department cost center (PKADM-IT).

🎯 What you'll learn

📋 Prerequisites

📦 Master data needed

SVC-CONSULT-01 is a service master (not a material) — this scenario creates it below with AC01. Full field reference: Create the service.

🔧 Step-by-Step

4.1 — Create Service Master · AC01

What: Service Master = the "material" for services. Optional but reusable. Alternative is to type service description directly in PO each time. (AC01 create · AC02 change · AC03 display.)

Action:

  1. Run AC01
  2. Service No.: leave blank (SAP auto-numbers — services are internally numbered by default) · Service Category: pick Service: purchasing (the procurement category — turns on Purchasing data; not "Basis service" or "Complete service")
  3. Description (required): SAP Functional Consulting Hour — use this as your "SVC-CONSULT-01" label
  4. Base Unit (required): HR / HUR (Hour)
  5. Optional defaults — Valuation Class 3200 (lets the G/L auto-determine; skippable), Material/Service Group 007 (reporting), Tax Indicator, Purchasing Org Data (Purch Org PKLO, Group SRV)
  6. Save
Minimum to create & use it: just Service Category + Description + Base Unit — the rest are optional. Because the service PO uses account assignment K (item category D), the cost center + G/L are set on the PO line, not on the service master, so a blank valuation class is fine (SAP: "valuation price is not required" for D/K). Fill the valuation class only if you want the G/L to auto-determine via account determination (GBB/VBR).
⚠️ Error 30042 "not within external number range"? The Service Category's number range is internal by default, so a typed key like SVC-CONSULT-01 is rejected. Easiest: leave the Service No. blank (above) and SAP numbers it. To keep the alphanumeric key, define an external interval in ACNR (SPRO → MM → External Services Management → Service Master → Define Number Ranges) and assign it to the category.
4.2 — Service PO · ME21N with Item Category D

Action:

  1. Run ME21N
  2. Doc Type: NB — shown in the dropdown as "Standard PO" (services use NB + item cat D; no special service doc type) · Vendor: any supplier — reuse an existing one like MUGHAL21, or a dedicated services vendor (see note)
  3. Header → Org Data: Purch Org PKLO · Purch Group SRV
  4. Line 1:
    • Item Category (column I): D (Service) — this is what makes the Services tab appear
    • Account Assignment Category (column A): K (Cost Center)
    • Heads-up: I and A are two adjacent columns in the item row — easy to swap. If you set only K and leave I blank, you get a normal cost-center line with no Services tab.
    • Material: leave blank — a service has no material number on the item line; the service master goes in the Services tab below (do not type SVC-CONSULT-01 here)
    • Quantity: leave the item default (shows 1, unit AU) — the real quantity is entered on the service line
    • Plant: PK01
    • Short Text: SAP MM Implementation Support
  5. Click line → Services tab (bottom) — this is where the service number, quantity & price go, not the item line above. (Tab blank? Press Enter or toggle to another tab and back to render the grid; drag the splitter above the tabs up if it has no height.) Enter service line:
    • Service No: SVC-CONSULT-01 (or short text)
    • Quantity: 120 HR
    • Gross Price: 5000 PKR/HR
    • Cost Center: PKADM-IT
    • G/L Account: 470000 (Consulting Expense) — must allow direct posting. Don't use 400000 (consumption): it's "Post automatically only" → error "No direct postings can be made to G/L acct 400000." If 470000 doesn't exist, create it in FS00 as a P&L expense, G/L type "Primary Costs/Revenue" (cost element), with "Post automatically only" off.
  6. Item Invoice tab → enter a Tax Code (e.g. V0 = input 0%, or your PK input-tax code) — required, else you get "Enter Tax Code"
  7. Save → PO # assigned
Separate "service vendor"? No. Any supplier provides goods and services — there's no service-only vendor type. Reuse e.g. MUGHAL21; the only requirement is it's extended to the PO's purchasing org. Easiest: use the same purch org the vendor already has (from Scenario 1); if you use a different one and hit "not created for purchasing organization," add that purch-org view via the BP guide. Creating a dedicated services vendor (e.g. Lucky Consulting) is identical to any vendor.

Tables: EKKO + EKPO (item D) + ESLL (service lines) + ESLH (service header).

4.3 — Service Entry Sheet · ML81N

What: Equivalent of GR for services. Records "service delivered." Vendor performs the work weekly; you create an SES for hours delivered.

Action:

  1. Run ML81N
  2. Click Create · enter PO # → Enter
  3. SES line: pulls service from PO → enter Actual Quantity (e.g., 40 hours this week)
  4. Header: External Number (e.g., timesheet ref), Period
  5. Save (creates SES, status = "Created")
  6. Click Accept (green tick) → status = "Accepted" → FI/CO posted

Accounting on Acceptance:

Consulting Expense (470000)Dr 200,000Cost Center: PKADM-IT
GR/IR Services (191200)Cr 200,000

Repeat SES weekly until all 120 hours delivered.

4.4 — Invoice Verification · MIRO

Same as Scenario 1's MIRO — reference PO, system pulls in accepted SES quantities, balance 0, post.

GR/IR Services (191200)Dr 600,000
Vendor (160000 via VEN-LCK-CON)Cr 600,000
🚨 Common Errors
StepErrorFix
ME21N"Item category D not allowed for doc type NB"OMG0 → allow item cat D for NB; or use service doc type FO
ME21N"Cost center PKADM-IT not assigned"KS01 → check valid-from date covers today
ME21N"Enter Tax Code"Item → Invoice tab → Tax Code (e.g. V0 input 0%); create in FTXP if none exist
ME21N"No direct postings to G/L 400000"Use a direct-postable expense G/L (470000), not the auto-only consumption account
ME21N"Role VN not defined for supplier"Warning only — vendor missing the VN partner function for this purch org; maintain in XK02/BP, or proceed (it allows save)
ML81NFields greyed — can't type the POThe PO field is display-only: click "Other Purchase Order" (top-left) → enter the PO → then the Create Entry Sheet icon; switch to Change mode if still greyed
ML81N"No message record could be found for output… Save anyway?"Harmless — no print/output type configured; click Yes, then Accept (green flag) to post the cost
ML81N"Service entry sheet not released"Click Accept (green tick) — required before invoicing
MIRO"Service-based invoice verification — no quantity"SES must be accepted first; check Header → "Service-based IV" flag
MIRO"Balance not zero (debits X / credits 0)"Enter the invoice Amount in the header (the vendor's total) — the PO only supplies the expected/debit side
MIRO"Maintain tolerance limits for tolerance key BD"Side-effect of the unbalanced amount → enter the header amount first. If it persists, maintain BD for the CoCode in OMR6 (same place as the PE tolerance)

💼 How this runs in a real company

On this sandbox you play every role at once — consultant, FI, buyer, approver, AP — so you hit setup work (create a G/L, untick "post automatically only", account determination) that in a real business was finished once at go-live. A real buyer never opens FS00 or OBYC; by the time they raise a service PO the expense accounts already exist and are usually auto-derived.

Set up once at implementation: FI builds the expense G/Ls (as cost elements, direct-postable) + account determination; the MM consultant builds service categories, number ranges, document types and release strategies. After that, the recurring cycle is just:

#StepT-code / appWho
1Raise Purchase Requisition (service, est. value, cost center)ME51NRequisitioner (dept)
2PR approved via release strategyrelease codeBudget owner
3Source: existing service contract, or RFQ → pick vendorME41 / contractBuyer
4Create service PO by adopting the PR (cost center + G/L flow in); PO approvedME21NBuyer → Approver
5PO sent; vendor performs the workoutputVendor
6Service Entry Sheet records delivered hoursML81NVendor / dept
7Accept the SES → cost posts to the cost center (Dr expense / Cr GR-IR)ML81NApprover
8Invoice verification — 3-way match PO ↔ SES ↔ invoiceMIROAP clerk
9Pay the vendorF110AP / Treasury

So steps 4.1–4.4 here = the buyer/AP slice of this cycle. The G/L creation you did is the one-time FI setup — do it once and every future service PO just works, exactly like a real company after go-live.

✅ Verification — Confirm Scenario 4 Worked

🎓 Interview-Ready Answers

Q: How does service procurement differ from buying stock material?

A service has no material master and no inventory. You use a PO with item category D, record delivery through a Service Entry Sheet (ML81N) rather than MIGO, and the cost posts directly to a cost center via mandatory account assignment K. There is never an inventory posting — it is expense from acceptance onward.

Stock material (iron)Service (consulting)
Goes whereWarehouse = assetStraight to expense
At receipt (GR vs SES accept)Inventory Dr / GR-IR Cr — not a cost yetExpense 470000 Dr (cost center) / GR-IR Cr — cost now
Stock tables (MARD/MBEW)Updated — qty + value ↑Not touched — no stock
Cost center needed?No (it's an asset)Yes — account assignment K
Becomes an expenseLater, when consumed (261/201)Immediately, at acceptance
Invoice (MIRO)Same for both → GR-IR Dr / Vendor Cr

In short: material = asset now, cost later (stock tables move, no cost center); service = cost now (no stock tables, must name a cost center).

Q: What is a Service Entry Sheet and why does it matter?

The SES (ML81N) is the goods-receipt equivalent for services — it records the actual hours/work delivered against the PO. It is a two-step control: you create it, then accept it. Acceptance is the event that posts the FI/CO document (Consulting Expense Dr / GR/IR Services Cr). No accepted SES means no expense and no valid invoice.

Q: Which tables store service data on the PO?

EKKO and EKPO hold the PO header and item (item category D), while the service specifications sit in ESLH (service package header) and ESLL (individual service lines — quantity, price, account assignment).

Q: Why is account assignment K mandatory on a service PO?

Because a service can't be stored, SAP must know immediately where to charge the cost. Account assignment K forces a cost center (here PKADM-IT) and a consumption/expense G/L on the line, so the value is recognised as a CO-relevant expense at SES acceptance rather than parked in inventory.

← Previous
Scenario 3: Goods Issue & Transfers
Next →
Scenario 5: Consumable Direct Purchase