Scenario 15 — Outline Agreements (Contracts & Scheduling Agreements)
Every master-data code below is the real one on our PakSteel IDES (client 250, company code PSPK) — the material, the vendor, and Mughal's info record are all confirmed live, so there is nothing to translate. The contract (ME31K) and the scheduling agreement (ME31L) were created live — their real numbers are shown below. The release order (ME21N, step 15.2) and the delivery-schedule lines (ME38, step 15.4) are the parts you create while running it, so those appear as neutral placeholders like (your release-order PO number) — we never invent them.
| What | Live value on the system |
|---|---|
| Material | RM-IRON-01 "Iron Ore Lump Grade A 50-100mm" (type ROH) |
| Vendor | MUGHAL21 "Mughal Steel Industries Ltd" (Business Partner) |
| Info record | 5300079940 (net price ₨250,000 / TO) |
Contract (ME31K, type MK) | 4600000032 — created live (1000 TO @ 250,000, valid 23.07.2026–22.07.2027) |
Scheduling agreement (ME31L, type LP) | 5500000000 — created live (1000 TO @ 250,000) |
| Release order (ME21N) | (your release-order PO number) — you create this during the run |
Honesty note — the two framework documents (contract 4600000032, SA 5500000000) were built live; the release order (15.2) and schedule lines (15.4) are done by you during the run. ⚠️ Because Scenario 14 switched on source-list enforcement for RM-IRON-01, the SA's schedule lines throw 06 722 until the SA is added to the source list — see the Errors box (we hit this live). Hit a snag? Troubleshooting Center.
📊 Business Case
An outline agreement is a long-term purchasing arrangement with a vendor — a commitment to buy a target quantity or value over a period at agreed terms, instead of negotiating every order from scratch. The two flavours are contracts (a price/quantity framework you call off against with release orders) and scheduling agreements (the delivery schedule is built into the agreement itself). Both lock pricing and commit volume, which protects you from spot-market volatility and cuts the paperwork on every shipment.
🕐 When to use it
Repeated buying of the same material from the same vendor over months: a yearly raw-material supply deal, or a steady JIT delivery cadence into production.
❓ Why it matters
It locks the price for the whole period and secures capacity. You're insulated from price swings, and each call-off auto-fills terms from the agreement — faster, consistent, and auditable against the committed volume.
👤 Who triggers it
Strategic purchasing negotiates and creates the agreement (ME31K / ME31L). Operational buyers then raise release orders (ME21N) or the schedule lines (ME38) drive deliveries automatically.
🔁 The key distinction
Contract = framework + separate release orders. Scheduling agreement = framework with the delivery schedule embedded (no separate PO per shipment). Contracts suit volume guarantees with flexible timing; scheduling agreements suit predictable JIT cadence.
💰 Financial Impact — The Easy-Money Example
This is a control scenario — the win is the cost it avoids. PakSteel locks 1000 TO of iron ore at PKR 250,000/TO for a year. Now imagine the spot price climbs mid-year. Here is the money story:
The big idea: a contract converts an unknown future price into a known one. The agreement doesn't move the P&L by itself — it's the release orders (or schedule lines) that drive the actual GR and invoice — but it caps your input cost and guarantees the volume, which is exactly the protection a steel mill needs against commodity swings.
🇵🇰 The Business Story
🎯 What you'll learn — Contract vs Scheduling Agreement
| Aspect | Contract (ME31K) | Scheduling Agreement (ME31L) |
|---|---|---|
| What it is | Long-term price/qty agreement | Long-term delivery schedule |
| Release Order needed? | Yes (ME21N referencing contract) | No — delivery schedule embeds releases |
| Document Type | MK (quantity) or WK (value) | LP (with release docs) or LPA (without) |
| Use when | Volume guarantee + flexible scheduling | JIT, predictable cadence |
- Your org structure (company code, plant, purch org = your buying team) is already built — Setup Guide.
- The material
RM-IRON-01exists — Material Master. - The vendor (Mughal Steel) exists as a Business Partner (BP = the vendor's record) and is extended to your purch org — BP Guide.
- The contract itself (ME31K / ME31L) is built in the steps below — nothing else external is needed.
- Goods receipt against a release order can post — Stock-Readiness Checklist.
RM-IRON-01 (ROH, raw) — create steps. New to MM01? the why behind every field.
📋 Prerequisites — what must be in the system (and why)
These are the records and settings an outline agreement needs before ME31K / ME31L will save and before a release order will draw on the deal. All master data is confirmed live (client 250, company code PSPK). Each item is a link in the chain — miss one and SAP throws a message from the Errors box. Read this first; the steps stand on it.
① Master data — the records the steps use
| Record | Live value | What it is · why needed |
|---|---|---|
| Material | RM-IRON-01 "Iron Ore Lump Grade A 50-100mm" (ROH), plant PK01, SLoc RMT, unit TO | The ore the contract and SA are written for. Needs a Purchasing view (see ③) so the agreement item has purchasing data to read. |
| Vendor | MUGHAL21 "Mughal Steel Industries Ltd" (Business Partner), extended to PKLO + PSPK | The mill we signed the year deal with — the partner on both the contract and the SA. |
| Info record | 5300079940 (₨250,000 / TO) | Gives the agreement item a saved price so the net price defaults instead of being keyed by hand. |
MUGHAL21 extended to purchasing org PKLO🎯 In plain words: a supplier is only usable by a buying team once that team's purchasing org is switched on for it — like a shop being registered with your branch before you can order from it.
- What to set:
MUGHAL21must exist as a Business Partner carrying the Supplier (Purchasing) role for purch orgPKLO, order currency PKR. - Why SAP needs it: ME31K / ME31L write the agreement against purchasing-org-level vendor data; a vendor not extended to PKLO cannot head an agreement for PKLO.
- What breaks without it: error 06 010 — vendor not extended to purchasing organization (also seen at info-record time as 06 321).
- ✅ How you'll know it worked: BP shows the FLVN01 (Supplier–Purchasing) role with the Purchasing tab filled for PKLO; ME31K accepts
MUGHAL21on the initial screen without 06010.
BP, not XK01/MK01- XK01 / XK02 / XK03 (and MK01, FK01) are obsolete in S/4HANA. Type any of them and SAP redirects you to transaction BP (Business Partner) — there is no separate "create vendor" screen any more.
- You create the vendor inside BP by adding two roles:
FLVN01(Supplier — Purchasing; holds the PKLO purchasing data) andFLVN00(FI Vendor; holds the PSPK company-code data). - Why a BP still has a classic vendor number: behind the scenes CVI (Customer-Vendor Integration) links the BP to a traditional vendor number (
LIFNR) that the agreement tablesEKKO/EKPOstill store and read.
RM-IRON-01 with a Purchasing view🎯 In plain words: an outline agreement is a purchasing document, so the material must have its Purchasing side filled in before it can go on an agreement line.
- What to set: MM02 → Purchasing view for plant
PK01(order unitTO, purchasing groupRMT). - Why SAP needs it: no Purchasing view = the material has no purchasing data for the agreement item to inherit (order unit, group, tax indicator).
- What breaks without it: the item errors on save, or mandatory purchasing fields (e.g. tax code) come up blank and stop you.
- ✅ How you'll know it worked: MM03 → Purchasing view present for
PK01; ME31K acceptsRM-IRON-01on the item overview without a "maintain purchasing data" message.
5300079940 or a manual net price🎯 In plain words: the agreement line must carry a rate; either it pulls one from a saved price page (the info record) or you type it in.
- What to set: the standard info record
5300079940(RM-IRON-01 / MUGHAL21 / PKLO, ₨250,000 / TO) already exists and defaults the price — or, with no info record, type the net price250,000on the item yourself. - Why SAP needs it: a contract/SA line with no price cannot be saved — the whole point of the deal is the locked rate.
- What breaks without it: ME 083 — enter net price on the item.
- ✅ How you'll know it worked: on the ME31K item overview the Net Price column shows
250,000 / TOwithout you typing it (or accepts the value you keyed); ME1M / ME03 lists an active info record for the vendor.
PKLO + purch group RMT + plant PK01🎯 In plain words: the deal has to be owned by a buying desk and delivered to a real plant — these codes say who buys and where it lands.
- What to set: purchasing org
PKLO, purchasing groupRMT, plantPK01all exist and are assigned to company codePSPK(built in the Setup Guide). - Why SAP needs it: ME31K's initial screen demands purch org + group; the item demands a plant. All three must be live before an agreement can exist.
- What breaks without it: "purchasing organization not defined" / "plant not assigned" on the initial or item screen.
- ✅ How you'll know it worked: ME31K's initial screen accepts
PKLO/RMTand the item accepts plantPK01with no org-assignment error.
MK and LP active🎯 In plain words: SAP has to recognise the kind of deal you're making — a quantity contract (MK) and a scheduling agreement (LP) are two separate document types that must be switched on.
- What to set: doc types
MK(quantity contract, used in 15.1) andLP(scheduling agreement with release docs, used in 15.3) exist in Purchasing config (SPRO → MM → Purchasing → Contract / Scheduling Agreement → Define Document Types). These are SAP standard and normally already active. - Why SAP needs it: ME31K only offers the contract types defined in config; ME31L only offers the SA types. An undefined type can't be chosen.
- What breaks without it: "document type … not defined" on the ME31K / ME31L initial screen. (Companion types:
WK= value contract;LPA= scheduling agreement without release docs — see the comparison table above.) - ✅ How you'll know it worked: ME31K accepts
MKand ME31L acceptsLPon the Agreement Type field with no "not defined" error.
🔧 Step-by-Step
| Step | T-code | What it does | Why this step exists |
|---|---|---|---|
| 15.1 | ME31K | Create quantity contract: 1000 TO at a locked yearly price | a year-long promise needs its own document |
| 15.2 | ME21N | Raise a release order pulling 100 TO from the contract | each pickup against the deal still needs an order |
| 15.3 | ME31L | Create scheduling agreement: same locked deal, built for a calendar | regular deliveries deserve a deal that carries dates |
| 15.4 | ME38 | Add delivery dates + quantities inside the agreement | each calendar line replaces a whole PO |
Material RM-IRON-01 "Iron Ore Lump Grade A 50-100mm" (ROH) · Vendor MUGHAL21 (Mughal Steel Industries Ltd) · Info record 5300079940 (₨250,000 / TO) · Plant PK01 · SLoc RMT · Purch org PKLO · Purch group RMT · Company code PSPK · UoM TO · Quantity contract type MK, target 1000 TO · Scheduling agreement type LP · Contract # (your contract number) · SA # (your scheduling-agreement number) · Release PO # (your release-order PO number) · Transactions ME31K/ME33K · ME21N · ME31L/ME33L · ME38 · Tables EKKO/EKPO (agreement header/item), EKET (schedule lines).
🔄 Contract Flow
15.1 — Create Quantity Contract · ME31K
⚡ This step will: create the year-long framework promise itself — after saving, a contract exists that locks 1000 TO at 250,000/TO, ready for release orders to draw from. 📄 paper: quantity contract (outline agreement) · 📦 stock: no change · 💰 money: no posting
Do: ME31K → fill the fields below → Save → note the contract number. Ours came out as 4600000032 (created live on our IDES).
A contract is like a yearly rate deal with your atta wholesaler: agree the rate and the year's total once — then take a little whenever you need it, always at the agreed rate. Saving it moves no goods and no money — it is only the promise.
ME31K walks through three screens in order: ① the initial screen (agreement type, vendor, and the buying org — purch org + group), ② the header data screen (the validity period the whole deal runs for), then ③ the item overview (one row per material — target quantity, net price, plant). The first column below names the screen each field sits on.
| Where on screen · Field | Fill | What the field asks — in plain words | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Initial screen · Agreement Type | MK (Quantity Contract) | What KIND of promise is this? Like choosing "prepay 10 haircuts" vs "prepay a rupee balance". | MK = commit to a total QUANTITY (our 1000 TO). Impact: pick WK (value contract, a money cap) by mistake and the system counts down a rupee limit, not tonnes — releases won't consume your 1000 TO the way you expect |
| Initial screen · Vendor | MUGHAL21 (Mughal) | WHO are you locking this deal with? | Mughal is the mill we negotiated the year rate with. Impact: a wrong vendor writes the contract against a supplier who never agreed to it, so no release can legitimately draw on it |
| Header data screen · Validity From | start of the contract year | From WHEN does the promise run? | Marks when call-offs may begin drawing the locked price. Impact: a release dated before this can't use the contract — it reverts to ordinary, unprotected pricing |
| Header data screen · Validity To | end of the contract year | Until WHEN does the promise run? | Closes the locked-price window. Impact: set it short by mistake and the deal expires early — later releases lose the price protection you negotiated |
| Initial screen · Purch Org (Purchasing Org) | PKLO | WHICH buying company/desk owns this deal? The purchasing org is the entity that legally places the orders. | PKLO negotiated it and will release against it. Impact: owned by the wrong org, PKLO's buyers can't call it off |
| Initial screen · Purch Group (Purchasing Group) | RMT | WHICH buyer / buying desk is responsible day-to-day? A smaller unit inside the purchasing org. | RMT = the raw-materials buying desk that manages this ore. Impact: mainly reporting and work-item routing — the wrong group sends follow-ups and reports to the wrong team |
| Item overview · Material | RM-IRON-01 | WHICH material is the promise for? | The iron ore we're committing to buy. Impact: a wrong material means releases for the ore never find this contract |
| Item overview · Target Qty | 1000 TO | HOW MUCH do you promise to buy in total? Not a delivery — just the counter releases draw down. | 1000 TO is the year's commitment; future releases (100 now, 80 next month…) count against it. Impact: set it too low and you can't call off the volume you actually agreed |
| Item overview · Net Price | 250,000/TO | At WHAT locked rate? The rate every release will carry. | A fixed rate that cannot drift for a year is the whole reason to sign a contract. Impact: a wrong rate here is applied to every single release order, silently over- or under-paying on all of them |
| Item overview · Plant | PK01 | WHERE will the released goods be delivered? | PK01 is the receiving steel plant. Impact: a wrong plant sends releases to the wrong location and breaks stock/valuation for the plant that actually needs the ore |
15.2 — Create Release Order · ME21N referencing contract
⚡ This step will: turn one slice of the contract into a binding order to the vendor — the plant starts showing 100 TO as On-Order (a promise, not stock), and the contract counter ticks down by 100. 📄 paper: release order (PO) · 📦 stock: no change · 💰 money: no posting
Do: ME21N → pull the contract in → enter only the quantity → Save. A release order = one "pickup" against the yearly deal.
The release order is a normal ME21N PO — the same three zones as Scenario 6: the Header (top), the Item overview grid (middle), and the Item detail tabs (bottom). The one extra move is the Document Overview side-panel on the left, used to pull the contract in.
| Where on screen · Field / Action | Fill | What it asks — in plain words | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Header · Doc Type | NB (standard PO) | What KIND of purchase order is this? | A release order is just a normal PO (NB); its special power comes from pointing at the contract, not from its type. Impact: none special here — the linking in the next row is what makes it a call-off |
| Header · Vendor | MUGHAL21 | WHO is the order going to? | Must be the contract's own vendor. Impact: a different vendor cannot consume Mughal's deal — you'd just raise an ordinary, unprotected PO |
| Document Overview panel (left) → My Contracts → drag the contract line | — | Buying against WHAT? This action tells SAP "this PO draws from your contract." | Linking the PO to the contract is what makes the call-off count. Impact: skip it and you create an ordinary PO that never touches the contract — no locked price, and the contract counter never moves |
| Item grid · Qty | 100 TO (this call-off) | How much do you call off NOW? | Only what you currently need; the rest of the 1000 TO stays available for later. Impact: over-ordering here eats the remaining contract quantity faster than planned |
| Item grid · Price | comes in at 250,000/TO — you do NOT type it | What rate applies to this call-off? | A locked rate the buyer cannot key freely is exactly the protection the contract exists to give. Impact: if this rate is ever overtyped, that line loses the price guarantee you negotiated for the year |
| Item grid · Plant | PK01 — already set | WHERE is it delivered? | The call-off should land where the deal's goods are needed — the receiving plant on the contract. Impact: point it elsewhere and this receipt goes to the wrong location, breaking stock and valuation for the plant that actually needs the ore |
Save → the release order gets number (your release-order PO number). The contract's released quantity updates (now 100/1000 consumed) — the counter ticking down.
Track contract usage: ME33K → display contract → release qty visible.
🔄 Scheduling Agreement Flow
15.3 — Create Scheduling Agreement · ME31L
⚡ This step will: create the second flavour of deal — a scheduling agreement that locks price and volume AND is built to carry its own delivery calendar (added in 15.4), so no release POs will ever be needed. 📄 paper: scheduling agreement · 📦 stock: no change · 💰 money: no posting
Do: ME31L → same shape as the contract → Save → note the SA number. Ours came out as 5500000000 (created live on our IDES).
ME31L has the same three screens as the contract (15.1): ① the initial screen (agreement type LP, vendor, buying org), ② the header data screen (the validity window), then ③ the item overview (material, target quantity, price, plant). The delivery dates themselves come later in ME38 (15.4).
| Where on screen · Field | Fill | What the field asks — in plain words | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Initial screen · Agreement Type | LP | What KIND of agreement? Here the DELIVERY CALENDAR lives inside the document itself (see the LP vs LPA note in the comparison table above). | LP = scheduling agreement with release documentation. Choose it over a contract when deliveries follow a predictable rhythm. Impact: pick a plain contract type instead and you're back to raising a separate PO per shipment (15.2) — you lose the paperwork saving |
| Header data screen · Valid From | start of the agreement period | From WHEN does the deal run? | Schedule lines must fall inside this window. Impact: a delivery date before it is not covered by the agreement |
| Header data screen · Valid To | end of the agreement period | Until WHEN does the deal run? | Closes the agreement window. Impact: set it too short and later schedule lines fall outside the deal and lose its locked terms |
| Initial screen · Vendor | MUGHAL21 (Mughal) | WHO is the agreement with? | Same promise frame as the contract. Impact: a wrong vendor writes the schedule against the wrong mill |
| Item overview · Material | RM-IRON-01 | WHICH material is scheduled? | The ore whose deliveries the calendar will drive. Impact: a wrong material schedules the wrong stock |
| Item overview · Target Qty | 1000 TO | HOW MUCH in total over the period? | The volume the schedule lines will add up to (same meaning as 15.1). Impact: too low and you can't schedule the full year's need |
| Item overview · Price | 250,000/TO (locked) | At WHAT locked rate? | A fixed rate protects every delivery from market swings. Impact: a wrong rate is applied to every delivery the calendar generates |
| Item overview · Plant | PK01 | Delivered WHERE? | The receiving plant. Impact: a wrong plant misroutes every scheduled delivery |
15.4 — Add Delivery Schedule · ME38
⚡ This step will: fill the delivery calendar — each date + quantity row you save acts as its own mini-order, so the vendor now owes those deliveries without any PO being raised. 📄 paper: schedule lines saved inside the SA (no new document) · 📦 stock: no change · 💰 money: no posting
Do: ME38 → SA # → select the line → Delivery Schedule tab → add the rows → Save.
ME38 opens on an initial screen (type the SA number), shows the item overview, and once you select the line and choose Item → Delivery Schedule you land on the delivery-schedule grid — a list of schedule lines, each one a date plus a quantity. Both fields below live on that grid.
| Where on screen · Field | Fill | What the field asks — in plain words | Why we choose this — and the impact if wrong |
|---|---|---|---|
| Delivery-schedule grid · Delivery Date | 15-Jan, 15-Feb, … | WHEN should each lot arrive? Like a doodh-wala's delivery calendar written once. | Each date is itself an "order" — nobody phones in a PO per delivery. Impact: a wrong date makes the vendor deliver early or late, and MRP plans your stock around that date |
| Delivery-schedule grid · Scheduled Quantity | 100 (against each date) | HOW BIG is the delivery due on that date? | The amount owed on that date, counted against the 1000 TO target. Impact: a wrong quantity over- or under-delivers and drifts the running total against the agreement |
The system treats each schedule line as a "release" — GR/IV is done against the SA + schedule line directly. That is the paperwork saving: contract = one PO per call-off (15.2); scheduling agreement = zero POs, the calendar does it.
✅ Verification
| # | T-code | Check |
|---|---|---|
| 1 | ME33K | Display the contract → target qty 1000 TO and net price 250,000/TO are stored; released qty updates after each release order |
| 2 | ME21N | The release PO auto-fills price + plant from the contract; you cannot exceed the target without a warning |
| 3 | ME33L | Display the scheduling agreement → header + line target qty present |
| 4 | ME38 | Schedule lines (15-Jan, 15-Feb …) are saved against the SA line and drive GR/IV directly |
🐞 Errors we hit live — and how to fix them
These are the standard outline-agreement messages. On a fresh setup, a missing prerequisite throws one of them, so each row names the message, what it really means, and the Prerequisite that clears it. The columns are: where it appears, the message SAP shows, what it means & why, and how to fix it. The ★-marked row is one we actually hit during our live run; the other message IDs are the standard/typical ones — confirm the exact number and wording against your live screen when you run it.
| Where it appears | The message SAP shows | What it means & why | How to fix it |
|---|---|---|---|
| ME31K / ME31L — item overview, on Enter/Save | ME 083 "Enter net price" | The item has no rate: no info record defaulted a price and none was typed. | Confirm info record 5300079940 exists for RM-IRON-01 / MUGHAL21 / PKLO, or type 250,000 in the Net Price column. → Prereq ④ |
| ME31K / ME31L — item, on save | "Make an entry in all required fields" / "Enter tax code" | A mandatory item field (commonly Tax Code, or plant) is blank — usually because the material's Purchasing view is thin. | Fill the flagged field (tax code, plant PK01); if tax code keeps recurring, maintain it on the material Purchasing view. → Prereq ③ |
| ME21N — release order, on entering the item | 06 xxx "Delivery date lies outside the validity period of the outline agreement" | The release/delivery date is before Valid From or after Valid To of the contract, so the call-off can't draw on it. | Use a delivery date inside the validity window, or extend validity in ME32K. → step 15.1 / Prereq ⑥ |
| ME21N — release order, on entering the quantity | 06 xxx "Target quantity exceeded" (warning) | The running total of release orders would push past the contract's 1000 TO target. It is a warning, not a hard stop — press Enter to continue. | Reduce this call-off, or raise the contract target in ME32K if the extra volume is agreed. → step 15.2 |
| ME31K / ME31L — partner screen | ME 329 "Role VN not defined for …" (warning) | Harmless partner-determination warning — the vendor's partner schema has no explicit VN (vendor) role row. Does not block the save. | Press Enter through it; if it recurs on every agreement, maintain partner roles in the vendor's purchasing partner schema. |
| ME21N — release order (the silent trap, no error) | (no message) — "the contract counter never moved" | You created an ordinary NB PO by typing the vendor directly instead of pulling the contract in, so the PO is unlinked: no locked price, and the contract's released quantity stays at 0. | In ME21N use Document Overview → My Contracts → drag the contract line (step 15.2), or key the agreement number + item on the PO line. Verify in ME33K that released qty went up. → step 15.2 |
| ME38 — schedule line, on save | 06 xxx "Schedule line date outside validity period" | A delivery date on a schedule line falls outside the SA's Valid From/To. | Keep every ME38 schedule-line date inside the SA validity window (set in 15.3), or extend it in ME32L. → step 15.4 |
| ★ hit live: ME38 — schedule line, on save (same block hits an ME21N release order) | 06 722 "Material RM-IRON-01 not included in source list despite source list requirement" | A real cross-scenario catch we hit: Scenario 14 switched on source-list enforcement (the "Source list" flag on this material). SAP then requires the outline agreement itself to be a listed source before its releases/schedule lines are allowed — a plain vendor row is not enough. | Add the agreement to the source list: ME01 → RM-IRON-01 / PK01 → a row with vendor MUGHAL21 and the Agreement field set to your contract/SA number (+ item 10). That is exactly the source-list↔outline-agreement link described in the Interview answers below. → Scenario 14 |
🎓 Interview-Ready Answers
Q: What's the difference between a contract and a scheduling agreement?
A contract (ME31K) is a long-term price/quantity framework — you call it off with separate release orders (ME21N) whenever you need stock, so timing is flexible. A scheduling agreement (ME31L) embeds the delivery schedule in the agreement itself (ME38), so deliveries are driven by schedule lines with no separate PO per shipment — ideal for predictable JIT cadence.
Q: What's the difference between a quantity contract (MK) and a value contract (WK)?
An MK quantity contract commits to a target quantity (e.g. 1000 TO) — releases consume against that quantity. A WK value contract commits to a target value (a money cap, e.g. ₨50 crore) and is useful when you'll buy many different items from one vendor up to a spend limit rather than a single fixed quantity.
Q: How does a release order know the price?
When you create the release order in ME21N referencing the contract (via Document Overview → My Contracts), SAP copies the net price, plant, and conditions from the contract line. The buyer only enters the call-off quantity; the agreement guarantees the locked price, and the contract's released quantity is updated so you can track consumption (visible in ME33K).
Q: How does an outline agreement link to source determination?
You can reference the agreement in the source list (ME01 — see Scenario 14): set the Agreement number and item on the vendor's row. Then PRs/POs auto-pull that contract as the source, so call-offs consume the agreement automatically and invoice verification validates against its terms.