Scenario 4 — Service Procurement (Consulting Hours)
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:
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.
🇵🇰 The Business Story
🎯 What you'll learn
- No material master needed — use Service Master (AC01) or short text
- Item Category D (Service) in PO — different flow from blank (standard stock)
- No MIGO — use ML81N Service Entry Sheet instead
- Cost goes directly to a cost center (no inventory) → CO must be set up
- Account Assignment
Kmandatory - Two-step acceptance: SES creation + approval (release)
📋 Prerequisites
- CO setup complete — Setup Guide Step 19 (Controlling Area + cost centers)
- Cost Center
PKADM-ITcreated in KS01 - G/L 470000 (Consulting Expense) exists in INT chart, marked as Cost Element Cat = 1
- Vendor VEN-LCK-CON (Lucky Consulting) created via BP with FLVN00/01/02 roles
SVC-CONSULT-01 is a service master (not a material) — this scenario creates it below with AC01. Full field reference: Create the service.
- Org structure + MM-FI integration are built — Setup Guide.
- Controlling is set up — a controlling area and the cost center
PKADM-IT— Setup Step 19. - A direct-postable expense G/L set as a cost element (e.g.
470000) exists — FI vs CO. - The vendor (Business Partner) exists — BP Guide.
- No material master or stock-readiness is needed — a service never touches inventory.
🔧 Step-by-Step
| Step | T-code | What it does | Why this step exists |
|---|---|---|---|
| 4.1 | AC01 | Creates a reusable name card for the consulting service | a service bought often needs one saved name |
| 4.2 | ME21N | Orders 120 hours at a fixed price (item category D) | a promise needs a document |
| 4.3 | ML81N | Records delivered hours; Accept posts the expense | work must be confirmed before paying |
| 4.4 | MIRO | Enters the vendor's bill; a real debt appears | pay only for accepted hours |
| 4.5 | F-53 | Pays the bill; vendor clears, bank goes down | a 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:
- Run AC01
- 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") - Description (required):
SAP Functional Consulting Hour— use this as your "SVC-CONSULT-01" label - Base Unit (required):
HR/HUR(Hour) - Optional defaults — Valuation Class
3200(lets the G/L auto-determine; skippable), Material/Service Group007(reporting), Tax Indicator, Purchasing Org Data (Purch Org PKLO, Group SRV) - Save
⚠️ 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:
- Run ME21N
- 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 likeMUGHAL21, or a dedicated services vendor (see note) - Header → Org Data: Purch Org PKLO · Purch Group SRV
- 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
Kand leaveIblank, 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-01here) - Quantity: leave the item default (shows
1, unitAU) — the real quantity is entered on the service line - Plant:
PK01 - Short Text: SAP MM Implementation Support
- Item Category (column I):
- 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:
120HR - Gross Price:
5000PKR/HR - Cost Center:
PKADM-IT - G/L Account:
470000(Consulting Expense) — must allow direct posting. Don't use400000(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.
- Service No:
- 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" - Save → PO # assigned
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:
- Run ML81N
- Click Create · enter PO # → Enter
- SES line: pulls service from PO → enter Actual Quantity (e.g., 40 hours this week)
- Header: External Number (e.g., timesheet ref), Period
- Save (creates SES, status = "Created")
- Click Accept (green tick) → status = "Accepted" → FI/CO posted
Accounting on Acceptance:
| Consulting Expense (470000) | Dr 200,000 | Cost 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 / Action | Fill | What it asks (plain words) | Why — and the impact if wrong |
|---|---|---|---|
| Header · Transaction dropdown (top-left) | Invoice | Is 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 Date | the date on the vendor's bill | When 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 · Reference | the vendor's bill number | What 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 · Amount | 600,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 Code | V0 (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 Order | your service PO → Enter | Which 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 indicator | must be 0.00 · green | Does 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 · Field | Fill | What it asks (plain words) | Why — and the impact if wrong |
|---|---|---|---|
| Header · Document Date / Posting Date | today (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 Code | PSPK | WHOSE 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 + Amount | 113100 · 600,000 | From 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 Items | click | Show 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 line | double-click it → Not assigned = 0.00 | WHICH 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 · Post | save → payment doc number | Commit 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,000 | the payable is cleared |
| Bank (113100) | Cr 600,000 | cash leaves the bank |
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
| Step | Error | Fix |
|---|---|---|
| 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) |
| ML81N | Fields greyed — can't type the PO | The 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
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:
| # | Step | T-code / app | Who |
|---|---|---|---|
| 1 | Raise Purchase Requisition (service, est. value, cost center) | ME51N | Requisitioner (dept) |
| 2 | PR approved via release strategy | release code | Budget owner |
| 3 | Source: existing service contract, or RFQ → pick vendor | ME41 / contract | Buyer |
| 4 | Create service PO by adopting the PR (cost center + G/L flow in); PO approved | ME21N | Buyer → Approver |
| 5 | PO sent; vendor performs the work | output | Vendor |
| 6 | Service Entry Sheet records delivered hours | ML81N | Vendor / dept |
| 7 | Accept the SES → cost posts to the cost center (Dr expense / Cr GR-IR) | ML81N | Approver |
| 8 | Invoice verification — 3-way match PO ↔ SES ↔ invoice | MIRO | AP clerk |
| 9 | Pay the vendor | F110 | AP / 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
- ML84 → list of SES for PO → all accepted
- S_ALR_87013611 → Cost Center PKADM-IT → debit 600,000
- FBL1N vendor cleared after F-53 payment
🎓 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 where | Warehouse = asset | Straight to expense |
| At receipt (GR vs SES accept) | Inventory Dr / GR-IR Cr — not a cost yet | Expense 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 expense | Later, 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.