Scenario 4 — Service Procurement (Consulting Hours)

TIER 2 · ACCOUNT-ASSIGNED ★★☆☆☆ ⏱️ ~2 hours AC01 → ME21N (item D) → ML81N → MIRO → F-53
← 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). Hit an error? Every message has its plain cause and fix in the Troubleshooting Center.

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

✅ Before you start — what this scenario assumes

🔧 Step-by-Step

🧭 The route at a glance — read this first
StepT-codeWhat it doesWhy this step exists
4.1AC01Creates a reusable name card for the consulting servicea service bought often needs one saved name
4.2ME21NOrders 120 hours at a fixed price (item category D)a promise needs a document
4.3ML81NRecords delivered hours; Accept posts the expensework must be confirmed before paying
4.4MIROEnters the vendor's bill; a real debt appearspay only for accepted hours
4.5F-53Pays the bill; vendor clears, bank goes downa purchase isn't finished until the vendor is paid
4.1 — Create Service Master · AC01

⚡ This step will: create a reusable name card for the consulting service — future POs can pick it instead of retyping the description, but nothing is bought or promised yet. 📄 paper: — (master record only) · 📦 stock: no change · 💰 money: no posting

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 "… not within external number range" (30042)? → plain cause & fix

4.2 — Service PO · ME21N with Item Category D

⚡ This step will: turn the need into a binding promise to the vendor — 120 hours at a fixed price, pointed at the IT cost center — with no hours delivered and no money owed yet. 📄 paper: purchase order · 📦 stock: no change (a service never becomes stock) · 💰 money: no posting

The ME21N screen has 3 zones — ① the Header (doc type, vendor, Org Data tab), ② the Item overview grid (one row per line — here the item-category D and account-assignment K columns), ③ the Item detail tabs below. Item category D makes a Services tab appear in zone ③ — that is where the service number, quantity and price go, NOT the item line.

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

⚡ This step will: record the delivered hours and — the moment you click Accept — make the cost real: the expense hits the IT cost center now, before any invoice arrives. 📄 paper: service entry sheet + accounting document (on Accept) · 📦 stock: no change · 💰 money: Dr Consulting Expense / Cr GR/IR Services

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

The ML81N screen has 3 areas — ① the top toolbar (the entry-sheet number + Short Text, with the key buttons: Other Purchase Order to point at the PO, Create Entry Sheet, Service Selection to adopt the PO's service lines, and the green Accept flag), ② the header tabs — Basic Data (service location + service period) and Acceptance Data (the red / yellow / green acceptance signal), ③ the service line items at the bottom (each delivered line — service no., actual quantity, price; the cost center + G/L flow in from the PO).

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

⚡ This step will: record the vendor's bill — the GR/IR IOU from the accepted sheets clears and a real debt to Lucky Consulting appears (no new expense: that already posted at acceptance). 📄 paper: invoice document · 📦 stock: no change · 💰 money: Dr GR/IR Services / Cr Vendor

Do: MIRO → Transaction Invoice → type the vendor's total in the header Amount → PO Reference tab → your service PO → Enter → Balance 0.00 · green → Post. It is the same three-way-match screen you know from Scenario 1, with one twist: the expected side is built from the accepted service entry sheets (step 4.3), not from a goods receipt.

Field / ActionFillWhat it asks (plain words)Why — and the impact if wrong
Header · Transaction dropdown (top-left)InvoiceIs this a normal bill, or a credit note?Lucky Consulting is billing you → Invoice. Impact: picking Credit Memo reverses the sign and reduces the payable instead of creating it.
Header · Basic Data tab · Invoice Datethe date on the vendor's billWhen did the vendor write this bill?Drives the payment due date via the payment terms. Impact: a wrong date shifts when the payment falls due.
Header · Basic Data tab · Referencethe vendor's bill numberWhat number does the VENDOR call this bill?The audit link between your books and theirs. Impact: without it, matching disputes later are painful.
Header · Basic Data tab · Amount600,000 (the vendor's total)What is the TOTAL on the vendor's paper bill?You must type this yourself — the PO only fills the expected/debit side. Impact: if it is left empty the Balance shows red "not zero" (the #1 service-MIRO error).
Header · Basic Data tab · Tax CodeV0 (input 0%, from the PO)How much input tax is on this bill?V0 = 0%, so gross = net. Impact: a different code changes the tax line and can unbalance the invoice.
Allocation area · PO Reference tab · Purchase Orderyour service PO → EnterWhich purchase is being billed?Loads the accepted SES hours (service-based IV) into the item grid below. Impact: the SES must be accepted first (4.3) — an unaccepted sheet shows no quantity and MIRO won't match.
Header · top-right · Balance indicatormust be 0.00 · greenDoes the bill match the accepted hours and the PO price?Zero = PO ↔ SES ↔ invoice all agree → Post. Impact: a red balance means the amount, hours or price differ — check before forcing anything.

What changes at this exact moment: the invoice clears the GR/IR Services account that the SES acceptances filled up, and books the real payable to Lucky Consulting. No new expense posts here — the ₨600,000 cost was already recognised at SES acceptance (4.3); MIRO only swaps GR/IR for the vendor liability.

GR/IR Services (191200)Dr 600,000
Vendor (160000 via VEN-LCK-CON)Cr 600,000

See it / pay it: ME23N → your PO → Purchase Order History shows the SES entries and the invoice (RE) line. Then pay it — full execution step in 4.5 below.

4.5 — Pay the vendor · F-53

⚡ This step will: pay the debt — the vendor's account clears to zero and the bank shrinks by ₨600,000. 📄 paper: payment document · 📦 stock: no change · 💰 money: Dr Vendor / Cr Bank

Do: F-53 → fill the header (dates + company code) → Bank data (which cash account + how much) → Open Item Selection (the vendor) → Process Open Items → double-click the invoice so Not assigned = 0.00 → Post.

Where on screen · FieldFillWhat it asks (plain words)Why — and the impact if wrong
Header · Document Date / Posting Datetoday (proposed)When is the payment made / in which period does it post?Same-day defaults are right. Impact: a wrong posting date can land in a closed period.
Header · Company CodePSPKWHOSE books release the cash?PSPK owes Lucky Consulting and pays. Impact: the wrong company code pays from the wrong firm's bank.
Bank data · G/L Account + Amount113100 · 600,000From WHICH cash account, and HOW MUCH leaves?113100 = Bank Main Account, the same bank G/L as Scenario 1; ₨600,000 is the full service payable. Impact: a wrong account credits the wrong cash line; a wrong amount leaves a balance that will not post.
Open Item Selection · Account (vendor)VEN-LCK-CON (Lucky Consulting)WHOSE unpaid bills are we clearing?The vendor that carries the payable MIRO booked in 4.4. Impact: the wrong vendor shows no matching open item.
Button · Process Open ItemsclickShow this vendor's open (unpaid) invoices.Opens the open-items list so you can pick the exact invoice. Impact: skip it and there is nothing selected to pay.
Open-items screen · the invoice linedouble-click it → Not assigned = 0.00WHICH bill exactly are you paying?Activating the line makes Assigned = Amount Entered, so Not assigned falls to 0. Impact: if it is not 0 the payment is unbalanced and will not post.
Toolbar · Postsave → payment doc numberCommit the payment?Post writes the FI document and clears the invoice. Impact: nothing is real until you Post.

What changes at this exact moment: the ₨600,000 leaves the bank and Lucky Consulting's account goes to zero; the invoice's open item flips to CLEARED:

Vendor payable (via VEN-LCK-CON)Dr 600,000the payable is cleared
Bank (113100)Cr 600,000cash leaves the bank
💡 Paying a service invoice — the same F-53 as goods

Nothing here was ever stocked — the ₨600,000 was consulting hours. But once 4.4's MIRO booked the payable to Lucky Consulting, paying it is the identical F-53 you ran for iron ore in Scenario 1: Vendor Dr / Bank Cr. Whether the bill came from goods, an asset, or pure service, the money loop closes the same way — a payable is a payable.

Verify: FBL1N → VEN-LCK-CON → the invoice (RE) now shows as cleared, no open items left. Full F-53 walkthrough with every field: Scenario 1.

🚨 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 · registry
ME21N"No direct postings to G/L 400000"Use a direct-postable expense G/L (470000), not the auto-only consumption account · registry
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 · registry
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 · registry
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) · registry

💼 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