ML81N — Maintain Service Entry Sheet
ML81N creates, changes, and displays service entry sheets against a service purchase order. Saving the sheet only records the services entered; a separate acceptance step is what actually posts the equivalent goods-receipt document, reduces the PO's open value, and unlocks invoice verification. Most ML81N problems trace back to a sheet that was saved but never accepted.
This page covers ML81N, the transaction used to record and accept services performed against a service purchase order. It focuses on the save-versus-accept distinction that causes most confusion, the tables the posting writes, and the diagnostic order for troubleshooting entry sheets that appear complete but have not posted financially or reached invoice verification.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,215 words
Purpose
ML81N is the transaction for creating, changing, and displaying service entry sheets against a service purchase order. It is the service-procurement counterpart to a goods receipt for materials. The structural fact that explains most confusion is that a service entry sheet is a two-step object: saving the sheet only records which services were rendered against the PO's service lines, while acceptance is a separate action that posts the equivalent of a goods receipt document, reduces the PO's open service value, triggers the accrual reversal, and unlocks invoice verification. A sheet that is entered and saved but never accepted looks complete on screen but has not touched financials, PO history, or account assignment postings, and will not be available as a reference for MIRO.
When it is used
ML81N is reached for whenever a purchase order or contract release order carries a service item category or a limit item with a service specification attached, after the vendor has actually performed the work. The requester, the vendor through a portal, or the buyer creates the entry sheet referencing the PO's service package, selects which planned or unplanned service lines were delivered, and enters actual quantities and prices. In S/4HANA, Fiori apps for entry sheet creation and approval are increasingly the intended front end for business users, but ML81N remains the transaction consultants drop into for troubleshooting, mass display, and fixing sheets stuck at an unaccepted or unreleased status, because it exposes account assignment and acceptance status the simplified apps abstract away.
How to use it in practice
- Enter the PO number on the initial screen, or use 'Other Purchase Order' to search by vendor or plant
- Review the service lines pulled from the PO's service package and check open quantity or value per line
- Enter actual quantity, unit, and price for each delivered service; add unplanned lines with short text if the work was not originally specified
- Check the account assignment tab for correct cost center, WBS element, or order, and confirm the posting period is open
- Save the sheet - this writes the entry but does not post anything financially
- Accept the sheet, or submit it into release if a release strategy is configured - this is what actually posts the FI/CO document and reduces the PO's open value
- Confirm the status shows accepted or released before handing the sheet number to invoice verification
Key data objects
- ESSR - service entry sheet header: sheet number, PO reference, and the status flags that distinguish saved from accepted
- ESLL - service line items: line number, service master or free-text description, quantity and price, linked by package number to the PO's service specification
- ESKN - account assignment per service line: cost center, WBS element, internal order, and percentage split
- EKBE - purchase order history: gains a row for the entry sheet only once it is accepted, which is what moves PO value and enables invoice matching
- EKKO and EKPO - the underlying PO header and item that ML81N looks up by service package number to find the specification being entered against
How to prove it in the data
Pull ESSR for the sheet number and check the status field first: if the sheet is saved but the accepted indicator is not set, nothing downstream has posted. Then check EKBE for the corresponding PO item, filtered on the history category used for service entries - if no row exists there, PO value has not moved and invoice verification against that item will fail or valuate incorrectly. Cross-check ESLL quantities and unit price against EKPO's service specification for the same package number to confirm the entry matches what the PO actually expects.
ECC vs S/4HANA
ML81N continues to work unchanged in S/4HANA, still driven by ESSR, ESLL, and ESKN. What changed is the front end: Fiori apps for creating and approving service entry sheets are the intended entry point for business users and for approval workflows tied to a release strategy, while ML81N remains the transaction consultants use for direct editing, mass processing, and diagnosing sheets stuck in an unaccepted or unreleased state. No table structure or posting logic changed between ECC and S/4HANA for this object.
Common pitfalls and how to diagnose them
- Saved-not-accepted trap: the sheet exists with quantities entered but acceptance was never triggered. Check the ESSR status field before assuming a technical error; MIRO will either reject the PO reference or ignore the entered value entirely
- Release strategy blocking acceptance: if a release strategy is configured on entry sheets, the accept option is unavailable until release codes are set. Check the release status and history first rather than treating this as a missing authorization
- Wrong service line reference: the entry posts against the wrong service line or the wrong package number, common when a vendor has several open service POs. Verify the short text and unit price against the PO's service specification, not just the entry sheet number
- Tolerance and price variance: the entered price deviates from the PO service line beyond the configured tolerance. The sheet saves but acceptance throws a variance message or posts to a blocking account; check the tolerance key against the actual price entered
- GR-based invoice verification mismatch: the PO is flagged for GR-based invoice verification but the vendor invoice references the PO item directly instead of the entry sheet number, causing invoice verification to reject it
- Reversal confusion: an accepted sheet cannot simply be deleted. It must be reversed through the same transaction, and partial reversal of individual service lines is not always possible; re-entering negative quantities instead of reversing creates duplicate account assignment postings
- Closed account assignment: the WBS element, internal order, or cost center was closed or blocked between saving and accepting. Acceptance fails on a posting-period or account-assignment error that has nothing to do with the service data itself
Whose problem this is
Almost always a functional MM/procurement problem - acceptance status, release strategy, tolerance keys, and account assignment are configuration and process, not code. Escalate to FI only when the accrual account or automatic account determination behind the acceptance posting is wrong. Escalate to Basis/ABAP only if a release strategy step or custom validation exit fails to trigger. A good handover states the sheet number, its exact status flag, the PO and service line it references, and whether the block occurs at save or at acceptance.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tcodes/ml81nERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.