A practical map of where AI pays off in order-to-cash, procure-to-pay, record-to-report and plan-to-produce, and a tool to size and rank your own use cases.
SAP S/4HANA already automates the normal path of most business processes. An order that passes its checks flows to delivery and billing without anyone touching it. A payment with a clean reference clears on its own.
People spend their time on everything else: the order stuck on a credit block, the invoice that doesn't match its purchase order, the customer purchase order that arrives as a PDF, the planning run that throws two thousand exception messages.
That is where AI creates value in S/4HANA. Not in the happy path, which rules and configuration already handle, but in the exceptions, documents and judgment calls around it. Five patterns cover most of it:
Read documents that arrive from outside and turn them into SAP data.
Match items that should belong together, such as payments and invoices.
Triage exceptions: sort them, explain them, suggest the next step.
Explain errors, variances and figures in plain language.
Predict what is likely to happen, such as a late delivery.
Most AI programs in SAP shops start with a list of ideas and no way to rank them. The loudest idea wins. A better starting question is: where do our people spend hours on work that follows a pattern but isn't fully rule-based?
Take order-to-cash in a mid-sized distributor. Suppose 8,000 incoming payments a month need a person to find the matching invoice, at about three minutes each. That is 400 hours a month. If AI clears most of them and proposes matches for the rest, the team gets back most of that time. Faster clearing also means cleaner receivables and fewer customer calls about payments already made.
Value comes in three forms, and a good case names all three:
Time: hours of manual handling removed or shortened.
Cash and revenue: faster collection, fewer write-offs, less revenue leakage from billing errors.
Risk: fewer errors, better audit trails, earlier warning of problems.
The flip side matters just as much. AI adds little where a step is already rule-based and stable, where volumes are tiny, or where the data needed isn't in SAP or anywhere else. It also adds risk where a wrong answer moves money without anyone checking.
SAP ships AI into S/4HANA in three forms, as of September 2026. The SAP Business AI landscape topic places these in the wider picture.
Joule, SAP's assistant. In S/4HANA Cloud Public Edition, SAP Learning lists Joule's informational, navigational and transactional capabilities as base features at no additional cost.
Embedded AI features inside S/4HANA apps. Some are base features included with the cloud ERP, such as Easy Filter, Smart Summarization and Enterprise Search. Others are premium, such as Financial Insights, Document Processing and Cash Application. Premium features consume AI Units, SAP's prepaid AI currency.
Agents and Joule Assistants that work across steps. Several are in beta; many Joule Assistants have planned availability dates rather than current availability.
Here is how that maps to the running examples of this course. Status is as SAP published it in its 2026 release highlights and Sapphire guide.
Process
Where people lose time
AI pattern
SAP offering to evaluate (status as published)
Order-to-cash
Keying in customer purchase orders from PDFs
Read
AI-assisted sales order creation from unstructured data (GA, Q1 2026)
Run each candidate through five questions. The more "yes" answers, the stronger the case.
Question
Why it matters
Blocked orders example
Is there real volume?
AI costs the same to set up for 50 items or 50,000
Hundreds of blocked orders a week
Does a person spend real time per item?
Minutes per item times volume is the size of the prize
10 to 15 minutes to check credit, payments and history
Is there a pattern a person follows?
AI learns or applies patterns; pure guesswork stays guesswork
Most blocks fall into a few recurring causes
Is the data reachable?
The AI can only use what it can see
Orders, credit data and payments are in SAP
Can a person check the result cheaply?
Review keeps risk low while trust builds
The analyst still releases the order
A use case that fails the last question needs extra care. If checking the AI takes as long as doing the work, the value disappears. If nobody checks, errors cost money.
"AI will automate the whole process." The standard process is already automated. AI works on the exceptions and the inputs around it.
"The biggest process is the best place to start." The best place has high volume, real time per item, a visible pattern and cheap review. Size alone doesn't decide it.
"Hours saved equals headcount saved." Freed time usually goes to backlog, faster cycle times or better controls. Say which in the business case.
"If SAP announced it, we have it." Features differ by edition, release and region, and many start in beta.
"Every good idea needs a custom build." Check SAP's standard first. A base feature you can switch on may cover most of the need.
Pick one answer for each question. The explanation appears after you choose.
1Where does AI create value in S/4HANA, if the standard process is already automated?
Answer: A. In the exceptions, documents and judgment calls around the happy path: the blocked order, the invoice that doesn't match, the PDF purchase order, the flood of planning exceptions. Rules and configuration already handle the normal flow.
2Which list names the five patterns of AI value in S/4HANA?
Answer: D. Read documents into SAP data, match items that belong together, triage exceptions, explain errors and figures in plain language, and predict what is likely to happen.
3What is a better starting question than "what AI ideas do we have?"
Answer: C. "Where do our people spend hours on work that follows a pattern but isn't fully rule-based?" It points at real volume and real time, instead of letting the loudest idea win.
4Name the three forms of value a good AI business case covers.
Answer: B. Time (hours of manual handling removed), cash and revenue (faster collection, fewer write-offs, less billing leakage) and risk (fewer errors, better audit trails, earlier warnings).
5When does AI add little value or too much risk?
Answer: A. When a step is already rule-based and stable, when volumes are tiny, when the needed data isn't available, or when a wrong answer moves money without anyone checking.
6A candidate use case passes every test except "can a person check the result cheaply?" What is the risk?
Answer: D. If checking takes as long as doing the work, the value disappears. If nobody checks, errors cost money. It needs extra care before any pilot.
7Why is "hours saved equals headcount saved" a trap?
Answer: C. Freed time usually goes to backlog, faster cycle times or better controls. A business case that promises headcount it can't deliver fails. Say where the time goes.
8SAP lists a feature as "planned". Can you plan a pilot on it?
Answer: B. Not yet. Planned is not available. Confirm what is live for your edition, release and region, whether it is a base or premium feature, and what it would cost in AI Units.
Ask a question
Testing: only staff see this
Stuck on something in this layer? Ask it here. Questions are answered in the order they arrive, and the answer appears under My questions.
Sign in (free) to ask a question. You can ask anonymously.
Deep layer · 35 min read
#Mental model: AI lives at the edges of the happy path
S/4HANA is a rules engine for business processes. Configuration decides how an order is priced, when a credit check blocks it, how a goods receipt posts. When every rule is satisfied, the document flows on without a person.
Human effort collects at three kinds of edges:
Entry edges, where data arrives from outside in a form SAP can't read directly: a customer's PDF purchase order, a supplier invoice, a payment advice in an email.
Exception edges, where a rule stops a document and hands it to a person: a credit block, a price variance on an invoice, an MRP exception message.
Judgment edges, where someone must explain or decide: why a cost center is over budget, which blocked order to release first, whether a dispute is valid.
flowchart LR
IN["Documents from outside"] -->|Read| C["Create in SAP"]
C --> H["Happy path: rules and configuration"]
H --> OUT["Delivered, billed, paid, posted"]
H -->|a rule stops it| EX["Exception worklist"]
EX -->|Match, triage| P["Person decides"]
P --> H
OUT -->|Explain, predict| R["Close, reporting, planning"]
AI earns its keep at those edges. The size of the prize at each edge is roughly:
items per period × minutes per item × share of that time AI can remove
minus what it costs to review AI output and to fix the AI's mistakes. The rest of this topic makes that sentence concrete and gives you a tool to apply it.
If you worked through What an SAP FDE does, this is the "understand the business" step turned into numbers. If you placed a use case with the landscape placement tool, this topic tells you which use cases are worth placing at all.
Each pattern uses a different kind of AI, with a different way of failing.
Pattern
Typical mechanics
How it fails
S/4HANA example
Read
Document extraction: a model finds fields in a PDF, image or email
Wrong or missing field values
Customer purchase order to sales order
Match
A model scores candidate pairs and proposes the best, with a confidence
Confident wrong match
Incoming payment to open invoice
Triage
Classification plus a language model that drafts a reason and next step
Wrong category, persuasive but wrong reason
Blocked order, invoice exception
Explain
A language model summarizes data and documentation in plain language
Plausible explanation not backed by data
Error messages, variances at close
Predict
A model trained on history outputs a probability
Drift when behavior changes
Late delivery, payment date
Later units teach each mechanic: prediction in Unit 2, embeddings for matching in Unit 3, language models in Units 4 and 5, and document AI in Unit 12.
The most useful design pattern in this whole topic comes from SAP Cash Application. SAP Learning describes it this way: the model learns matching criteria from historical clearing information, proposes matches for new payments, and gives each proposal a confidence. The customer configures what happens at each confidence level. High-confidence matches can clear automatically. Middle-confidence proposals go to an accountant for review in a worklist app. Low-confidence items stay manual.
flowchart TD
I["New item"] --> M["Model proposes an answer with a confidence"]
M --> Q{"Confidence"}
Q -->|high| A["Apply automatically, log it"]
Q -->|middle| R["Person reviews the proposal"]
Q -->|low| N["Person handles it from scratch"]
A --> S["Sample audit: was it right?"]
The same three-way split applies to almost every S/4HANA use case, including ones that use a language model. It is what turns "the model is 90% accurate" into hours and money.
Go back to the payment matching example from the foundational layer: 8,000 payments a month, three minutes each by hand, so 400 hours a month today.
Suppose a pilot shows this split, with made-up but realistic numbers:
Band
Share
Items
Minutes each
Hours
Cleared automatically
60%
4,800
0
0
Reviewed proposal
25%
2,000
1.5
50
Manual
15%
1,200
3
60
Total
8,000
110
Now add the cost of mistakes. Say 0.5% of the automatic clearings are wrong (24 a month) and each takes 30 minutes to find and reverse. That is 12 hours.
Net: 400 − 110 − 12 = 278 hours a month saved, about 70% of the original effort. On top of that come the cash effects: payments clear sooner, so dunning letters don't go out to customers who already paid.
Three lessons hide in this table:
The automatic share drives the value. Moving it from 60% to 70% saves more than making reviews faster.
Review time must be well below manual time. If reviewing a proposal takes as long as doing the match, the middle band saves nothing.
Error cost can erase the gain. Where one wrong answer costs hours or real money, like a wrongly released credit block, set the automatic threshold high or have no automatic band at all.
An FDE's credibility comes as much from saying "not AI" as from building AI. Push back when:
A rule would do. If the logic fits in a condition ("block if credit exposure exceeds limit"), configure it. Rules are cheaper, explainable and don't drift.
The step is rare. Twenty items a month at five minutes each is under two hours. No AI project pays for that.
Nothing to learn from. Prediction and matching need history. A new process with no history needs a person first.
The data isn't there. If the answer depends on phone calls nobody records, no model will find it.
The process is broken. If orders block because master data is wrong, fix the master data. AI would just triage the same errors forever.
When you evaluate an SAP feature, ask whether it is rule-based or learned. SAP Learning lists Situation Handling, for detecting and managing issues, among the 2602 release innovations next to AI features. Both kinds can be the right answer; they just fail, cost and change differently.
#Build it yourself: a value map for S/4HANA use cases
You will build a small program that turns a list of AI ideas into a ranked value map. For each idea it works out the hours at stake per year, the hours AI could save, what that is worth, and how feasible it looks. Then it sorts the ideas into four boxes: Pilot now, Fix data and controls first, Quick win only if cheap and Park.
It runs on made-up example data out of the box, so you need no account. Later you replace the examples with your own numbers in a spreadsheet file. An optional step reads real sales orders from SAP's free sandbox to show how a measured number replaces a guess.
flowchart LR
A["Examples or your CSV file"] --> B["value_map.py"]
S["SAP sandbox, optional"] -.->|blocked-order share| B
B --> C["Ranked table"]
B --> D["Quadrant chart text"]
D --> E["mermaid.live picture"]
Before you start: complete Set up your computer for this course. It installs Python, creates your orchestrate-course folder with its .venv virtual environment, stores your SAP sandbox key in .env and sets up Git. This walkthrough doesn't repeat those steps.
In VS Code's file list, right-click the unit01 folder and choose New File.
Name it value_map.py.
Copy the whole script below (the Copy button appears when you hover over it), paste it into the file and save with Ctrl+S (Windows, Linux) or Cmd+S (macOS).
"""Size and rank AI use cases across SAP S/4HANA processes.
How to run (from the folder that holds this file):
python value_map.py rank the built-in example use cases
python value_map.py --csv FILE rank your own use cases from a CSV file
python value_map.py --template write use_cases.csv to fill in with your own numbers
python value_map.py --rate 45 change the loaded cost of one hour of work (default 60)
python value_map.py --mermaid also print a quadrant chart for mermaid.live
python value_map.py --sap measure the blocked-order share in the SAP sandbox
(needs SAP_API_KEY) and use it for the first use case
Every number in the examples is made up. Replace them with numbers you measured.
"""
import csv
import os
import statistics
import sys
try: # read keys from a .env file if you set one up (see "Set up your computer")
from dotenv import load_dotenv
load_dotenv()
except ImportError:
pass
HOURLY_COST = 60.0 # loaded cost of one hour of work, in your currency
ORDERS_PER_MONTH = 10000 # used only with --sap: your company's sales orders per month
COLUMNS = ["process", "use_case", "items_per_month", "minutes_per_item",
"ai_share", "data_readiness", "risk_if_wrong", "sap_standard"]
# Made-up examples, one or more per end-to-end process.
# ai_share: share of the handling time AI could realistically remove (0 to 1).
# data_readiness: 1 (data scattered or missing) to 5 (clean, in SAP, accessible).
# risk_if_wrong: 1 (a person reviews everything anyway) to 5 (money moves on its own).
# sap_standard: yes, partly, no or unknown. Check it; don't guess.
EXAMPLES = [
["order-to-cash", "Triage blocked sales orders", 1200, 12, 0.5, 4, 3, "unknown"],
["order-to-cash", "Create sales orders from customer PO files", 3000, 6, 0.6, 4, 2, "yes"],
["order-to-cash", "Match incoming payments to open invoices", 8000, 3, 0.7, 5, 3, "yes"],
["procure-to-pay", "Resolve three-way match exceptions", 900, 20, 0.4, 3, 4, "unknown"],
["plan-to-produce", "Review MRP exception messages", 2500, 4, 0.3, 3, 3, "partly"],
["record-to-report", "Explain cost center variances at month-end", 150, 45, 0.4, 3, 2, "partly"],
["hire-to-retire", "Answer employee policy questions", 600, 10, 0.5, 2, 2, "partly"],
]
def to_rows(raw_rows: list) -> list:
"""Turn raw values (from the examples or a CSV) into typed dictionaries."""
rows = []
for raw in raw_rows:
r = dict(zip(COLUMNS, raw)) if isinstance(raw, list) else dict(raw)
try:
r["items_per_month"] = float(r["items_per_month"])
r["minutes_per_item"] = float(r["minutes_per_item"])
r["ai_share"] = float(r["ai_share"])
r["data_readiness"] = float(r["data_readiness"])
r["risk_if_wrong"] = float(r["risk_if_wrong"])
except (KeyError, ValueError) as err:
sys.exit(f"Bad row {raw}: {err}. Check the column names and that numbers are numbers.")
r["sap_standard"] = str(r.get("sap_standard", "unknown")).strip().lower()
rows.append(r)
return rows
def size(r: dict, rate: float) -> dict:
"""Add hours at stake, hours AI could save, value and a feasibility score."""
r["hours_per_year"] = r["items_per_month"] * 12 * r["minutes_per_item"] / 60
r["hours_saved"] = r["hours_per_year"] * r["ai_share"]
r["value"] = r["hours_saved"] * rate
# Feasibility starts from data readiness and drops as the cost of a wrong answer rises.
r["feasibility"] = max(1.0, min(5.0, r["data_readiness"] - 0.5 * (r["risk_if_wrong"] - 1)))
return r
def place(r: dict, value_cut: float) -> str:
"""Put a use case in one of four boxes and say what to do next."""
high_value = r["value"] >= value_cut
feasible = r["feasibility"] >= 3
if high_value and feasible:
box = "Pilot now"
elif high_value:
box = "Fix data and controls first"
elif feasible:
box = "Quick win only if cheap"
else:
box = "Park"
if r["sap_standard"] in ("yes", "partly"):
box += " (evaluate SAP standard first)"
elif r["sap_standard"] == "unknown":
box += " (check SAP standard)"
return box
def measure_blocked_share(top: int = 200) -> float:
"""Read sales orders from the SAP sandbox and return the share that is blocked."""
import requests # imported here so the rest runs without it
key = os.environ.get("SAP_API_KEY")
if not key:
sys.exit("SAP_API_KEY is not set. Add it to .env (see Set up your computer), or drop --sap.")
base = "https://sandbox.api.sap.com/s4hanacloud/sap/opu/odata/sap/API_SALES_ORDER_SRV"
params = {"$top": str(top), "$select": "SalesOrder,DeliveryBlockReason,HeaderBillingBlockReason",
"$format": "json"}
try:
resp = requests.get(f"{base}/A_SalesOrder", params=params, timeout=30,
headers={"APIKey": key, "Accept": "application/json"})
except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
sys.exit("Could not reach sandbox.api.sap.com. Your network or a proxy may block it. "
"Try another network, or run without --sap.")
if resp.status_code in (401, 403):
sys.exit(f"SAP refused the request (HTTP {resp.status_code}). Copy your key again.")
resp.raise_for_status()
orders = resp.json()["d"]["results"]
blocked = [o for o in orders if o.get("DeliveryBlockReason") or o.get("HeaderBillingBlockReason")]
share = len(blocked) / len(orders) if orders else 0.0
print(f"SAP sandbox: {len(blocked)} of {len(orders)} sales orders have a delivery or billing block "
f"({share:.1%}).")
return share
def mermaid(rows: list, value_cut: float) -> str:
"""A quadrant chart: value (x) against feasibility (y), both scaled to 0..1.
The median value and a feasibility of 3 are the middle lines, so the boxes match the table.
"""
top = max(r["value"] for r in rows) or 1
def x_of(value: float) -> float:
if value >= value_cut:
return 0.55 + 0.4 * (value - value_cut) / ((top - value_cut) or 1)
return 0.05 + 0.4 * value / (value_cut or 1)
def y_of(feasibility: float) -> float:
if feasibility >= 3:
return 0.55 + 0.4 * (feasibility - 3) / 2
return 0.05 + 0.4 * (feasibility - 1) / 2
lines = ["quadrantChart", " title AI use cases: value vs feasibility",
" x-axis Low value --> High value", " y-axis Hard to do --> Ready to do",
" quadrant-1 Pilot now", " quadrant-2 Quick win only if cheap",
" quadrant-3 Park", " quadrant-4 Fix data and controls first"]
for r in rows:
name = r["use_case"].replace(":", " ")[:40]
x = round(x_of(r["value"]), 2)
y = round(y_of(r["feasibility"]), 2)
lines.append(f" {name}: [{x}, {y}]")
return "\n".join(lines)
def main() -> None:
args = sys.argv[1:]
rate = HOURLY_COST
if "--rate" in args:
try:
rate = float(args[args.index("--rate") + 1])
except (IndexError, ValueError):
sys.exit("Put a number after --rate, for example: --rate 45")
if "--template" in args:
with open("use_cases.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(COLUMNS)
writer.writerows(EXAMPLES)
print("Wrote use_cases.csv. Edit it, then run: python value_map.py --csv use_cases.csv")
return
if "--csv" in args:
try:
path = args[args.index("--csv") + 1]
with open(path, newline="", encoding="utf-8-sig") as f:
raw, source = list(csv.DictReader(f)), path
except IndexError:
sys.exit("Put a file name after --csv, for example: --csv use_cases.csv")
except FileNotFoundError:
sys.exit(f"No file named {path} here. Run with --template first to create one.")
else:
raw, source = [list(row) for row in EXAMPLES], "built-in examples (made-up numbers)"
rows = to_rows(raw)
if not rows:
sys.exit("No use cases found. Add at least one row under the header.")
if "--sap" in args:
share = measure_blocked_share()
rows[0]["items_per_month"] = ORDERS_PER_MONTH * share
print(f"Using {rows[0]['items_per_month']:.0f} blocked orders a month for "
f"'{rows[0]['use_case']}' ({ORDERS_PER_MONTH} orders x {share:.1%}).\n")
rows = [size(r, rate) for r in rows]
value_cut = statistics.median(r["value"] for r in rows)
rows.sort(key=lambda r: (r["value"] * r["feasibility"]), reverse=True)
print(f"Source: {source}. Hourly cost: {rate:g}.\n")
print(f"{'#':<3}{'Process':<18}{'Use case':<46}{'Hours/yr':>9}{'Saved':>8}"
f"{'Value':>10}{'Feas.':>6} Next step")
for i, r in enumerate(rows, 1):
print(f"{i:<3}{r['process'][:17]:<18}{r['use_case'][:45]:<46}{r['hours_per_year']:>9,.0f}"
f"{r['hours_saved']:>8,.0f}{r['value']:>10,.0f}{r['feasibility']:>6.1f} "
f"{place(r, value_cut)}")
total = sum(r["value"] for r in rows)
print(f"\nTotal value at stake if every estimate holds: {total:,.0f} per year.")
print("Treat this as a ranking of where to look, not a business case.")
if "--mermaid" in args:
print("\n" + mermaid(rows, value_cut))
if __name__ == "__main__":
main()
In the terminal, with (.venv) showing and inside unit01, run:
python value_map.py
On macOS or Linux, use python3 if python isn't found.
You should see this table. The numbers are the made-up examples, so yours will match exactly:
Source: built-in examples (made-up numbers). Hourly cost: 60.
# Process Use case Hours/yr Saved Value Feas. Next step
1 order-to-cash Match incoming payments to open invoices 4,800 3,360 201,600 4.0 Pilot now (evaluate SAP standard first)
2 order-to-cash Create sales orders from customer PO files 3,600 2,160 129,600 3.5 Pilot now (evaluate SAP standard first)
3 order-to-cash Triage blocked sales orders 2,880 1,440 86,400 3.0 Pilot now (check SAP standard)
4 procure-to-pay Resolve three-way match exceptions 3,600 1,440 86,400 1.5 Fix data and controls first (check SAP standard)
5 record-to-report Explain cost center variances at month-end 1,350 540 32,400 2.5 Park (evaluate SAP standard first)
6 plan-to-produce Review MRP exception messages 2,000 600 36,000 2.0 Park (evaluate SAP standard first)
7 hire-to-retire Answer employee policy questions 1,200 600 36,000 1.5 Park (evaluate SAP standard first)
Total value at stake if every estimate holds: 608,400 per year.
Treat this as a ranking of where to look, not a business case.
How to read it:
Hours/yr is items per month × 12 × minutes per item ÷ 60: the time people spend today.
Saved is the share of that time AI could remove.
Value is saved hours × the hourly cost. It's in whatever currency your hourly cost is in.
Feas. (feasibility) runs from 1 to 5. It starts at your data readiness score and drops half a point for every step of risk above 1.
Rows are sorted by value × feasibility, so a slightly smaller but much easier case can rank higher. That is why row 5 is above row 6.
Next step puts each case in a box. "High value" means at or above the median value of your list; "feasible" means 3 or more.
Notice row 4. Three-way match exceptions have as much value as blocked orders, but low data readiness and high risk push them into Fix data and controls first. That is a common real-world result: the value is real, but the first project is data and process work, not AI.
Below the table you now get a block starting with quadrantChart:
quadrantChart
title AI use cases: value vs feasibility
x-axis Low value --> High value
y-axis Hard to do --> Ready to do
quadrant-1 Pilot now
quadrant-2 Quick win only if cheap
quadrant-3 Park
quadrant-4 Fix data and controls first
Match incoming payments to open invoices: [0.95, 0.75]
Create sales orders from customer PO fil: [0.7, 0.65]
Triage blocked sales orders: [0.55, 0.55]
Resolve three-way match exceptions: [0.55, 0.15]
Explain cost center variances at month-e: [0.2, 0.35]
Review MRP exception messages: [0.22, 0.25]
Answer employee policy questions: [0.22, 0.15]
Select everything from quadrantChart to the last line and copy it.
Open mermaid.live in your browser, delete the example in the Code panel on the left, and paste. The chart appears on the right.
To save the picture, use the Actions menu on that site to download it as PNG or SVG. (Menu names on third-party sites can change; look for a download or export option.)
The chart's middle lines match the table: the median value across, and a feasibility of 3 up. Positions within a box are approximate; the table holds the exact numbers.
You should see Wrote use_cases.csv. Edit it, then run: python value_map.py --csv use_cases.csv.
Open use_cases.csv in Excel, Google Sheets or VS Code. Keep the first row (the column names) exactly as it is.
Replace the example rows with your own ideas, one per row. What each column means:
Column
What to enter
Example
process
The end-to-end process
order-to-cash
use_case
A short name for the idea
Triage blocked sales orders
items_per_month
How many items people handle per month, as a plain number
1200
minutes_per_item
Average handling time today, in minutes
12
ai_share
Share of that time AI could remove, from 0 to 1
0.5
data_readiness
1 = data scattered or missing, 5 = clean and reachable in SAP
4
risk_if_wrong
1 = a person checks everything anyway, 5 = money moves on its own
3
sap_standard
yes, partly, no or unknown, after you check (see "The SAP way")
unknown
Save it as CSV. In Excel, choose File > Save As and pick CSV UTF-8 (Comma delimited). Keep the name use_cases.csv.
Run the tool on your file:
python value_map.py --csv use_cases.csv
To use your company's hourly cost instead of 60, add --rate and a number:
python value_map.py --csv use_cases.csv --rate 45
#Step 6 (optional): Replace a guess with a measurement
The first row of the examples guesses the number of blocked orders. This step measures a blocked share from real API data in the SAP sandbox and uses it instead. It reads the same Sales Order API you used in the blocked orders prototype.
Make sure your .env file in the course folder holds SAP_API_KEY. The script reads it with load_dotenv(). Because you run the script from unit01, and load_dotenv() searches the script's folder and then the folders above it, it finds the file one level up.
Near the top of the script, set ORDERS_PER_MONTH to your company's monthly sales order count, or leave it at 10000 for practice. Save.
Run:
python value_map.py --sap
You should see two extra lines before the table, something like this (the sandbox is shared demo data, so your numbers will differ):
SAP sandbox: 6 of 200 sales orders have a delivery or billing block (3.0%).
Using 300 blocked orders a month for 'Triage blocked sales orders' (10000 orders x 3.0%).
If it says 0 of 200, that is a valid result: the sample of demo orders has no blocks. The blocked-orders row then has no volume and drops to the bottom.
It separates value from feasibility. Mixing them into one score hides the most useful result: high value that isn't ready yet.
It always asks about the SAP standard. Every box gets "evaluate SAP standard first" or "check SAP standard" unless you entered no. Checking is cheap; building twice isn't.
It prints a warning, not a business case. The ranking tells you where to spend a week measuring. The business case comes after the measurement.
SAP Learning points to two tools in the SAP Discovery Center:
The SAP Business AI Feature Catalog lists AI features with their use cases, value and metrics, and shows release status.
The SAP Business AI Feature Estimator ("My AI Feature Estimates") estimates how many AI Units a feature would need, so you can budget before you switch it on.
Also read SAP's quarterly Business AI release highlights on SAP News. The Q1 and Q2 2026 posts list each new feature with its product and status (GA, beta or SAP Early Adopter Care), and often a benefit figure SAP measured or expects.
For example Asset Accounting Processing, Financial Insights, Document Processing, Project Billing Automation, Cash Application
Consume AI Units
Base features are the cheapest possible pilot: switch them on, train users, measure. Premium features need an AI Unit estimate per use case, which is where your value map's volumes come in.
Here is what SAP had published for the course's running examples by September 2026. Status is as stated in the source at the time; check it again before you rely on it.
Use case
SAP feature
Product
Status (source)
SAP's stated effect
Customer PO files to sales orders
AI-assisted sales order creation from unstructured data
S/4HANA Cloud Public Edition
GA (Q1 2026 highlights)
Automatic extraction from PDF or image purchase orders
Payment advices
AI-assisted payment advice processing with SAP Document AI
S/4HANA Cloud Public Edition
GA (Q1 2026 highlights)
SAP cites a 70% cut in document processing time
Payment matching
SAP Cash Application
Integrates with S/4HANA; matching engine on SAP BTP
Premium feature (SAP Learning)
Learns from accountants' clearing behavior
Billing disputes
Dispute Resolution Agent
S/4HANA Cloud Public Edition
Beta (Q1 2026 highlights)
Root-cause analysis across invoices, orders, deliveries, pricing and tax
Project billing price errors
Project Billing Price Verification Agent
S/4HANA Cloud Public Edition
Beta (Q2 2026 highlights)
SAP cites 75% less time on price discrepancies
Errors in finance processes
AI-assisted error explanation
S/4HANA Cloud Public Edition
GA (Q1 2026 highlights)
Plain-language explanations and resolution recommendations
New projects
Project Setup Agent
S/4HANA Cloud Public Edition
Beta (Q1 2026 highlights)
Drafts new projects from similar past projects
Close, AR, invoicing, planning
Joule Assistants such as Financial Closing, Accounts Receivable, Invoicing and Planning Assistant
Varies
GA planned for various 2026 quarters (Sapphire 2026 guide)
Coordinate several agents for one role
Notice what is missing: the value map's three-way match exceptions and MRP exception review have no clear match in these sources. That doesn't mean SAP has nothing; it means you have to check your release. It may also be your custom-build opportunity.
#How the standard features are built, and what to copy
Two SAP designs from these sources are worth copying into anything you build:
Sales orders from unstructured data keep a person in charge of the gaps. In scope item 4X9, as SAP Learning describes it, a sales representative uploads a PDF or image purchase order in the Create Sales Orders - Automatic Extraction app. The system extracts the data and proposes values, for example the sold-to party. The representative reviews it, completes missing mandatory fields and then simulates or creates the order. Automated email intake needs extra setup: SAP Learning lists an SAP Intelligent RPA account and a desktop agent among the prerequisites.
Cash Application routes by confidence. Proposals clear automatically, go to review or stay manual depending on configured confidence levels, exactly the pattern from "How it works".
Both are "Read" and "Match" patterns with human review. If you build your own, keep the same shape.
Baseline first. Measure volume, handling time, error rate and cycle time before go-live, from system data where possible. Without a baseline, nobody can prove the value you promised.
Authorizations. An AI that reads or changes S/4HANA data must respect the user's SAP authorizations. A triage assistant must not show a credit analyst orders from a company code they can't see. Unit 11 covers this.
Error cost and thresholds. Decide per use case what may happen automatically. Start with no automatic band for anything that moves money, and widen it only on evidence.
Cost tracking. Premium features consume AI Units; custom builds consume model and platform costs. Track cost per item handled next to hours saved, or the value map drifts away from reality.
Clean core. Custom AI belongs in side-by-side extensions using released APIs, not in modifications to SAP standard. Units 6 and 13 cover the patterns.
Change management. Hours saved only count if people change how they work. Plan who uses the freed time, and for what.
Status drift. Beta features change. Re-check the status of every SAP feature in your map each quarter, alongside SAP's release highlights.
Counting the happy path. Sizing AI on total order volume instead of the exceptions inflates value tenfold. Size only the items people touch.
Ignoring review time. "The AI proposes, a person approves" saves nothing if approval takes as long as doing it.
Hours as headcount. Promising headcount reductions from hours saved sets up the project to fail its business case. Name where the time goes.
Taking vendor percentages as your numbers. SAP's stated effects, like any vendor's, come from its own measurements. Your data, process and volumes decide your result.
Skipping "not AI". Some high-value rows are data-quality or process problems. Solve those without AI and say so.
Estimating once. A value map is a living list. Re-run it when you measure, when SAP ships something new, or when volumes change.
Build a value map for five real or realistic use cases and check the SAP standard for each.
Run python value_map.py --template in your unit01 folder.
Replace the rows in use_cases.csv with five use cases from a process you know. If you have no company data, keep the course examples and change the numbers to what you think is realistic.
For each row, look up the SAP standard in the SAP Business AI Feature Catalog or the latest release highlights. Set sap_standard to yes, partly, no or unknown, and write the feature name, status, date and link in a file named value_map_notes.md.
Run python value_map.py --csv use_cases.csv --mermaid. Paste the chart text into mermaid.live and save the picture as value_map.png in unit01.
In value_map_notes.md, write three sentences: which use case you would pilot first, which number in its row you are least sure of, and how you would measure it.
Save your work in Git from the course folder:
git add unit01/value_map.py unit01/use_cases.csv unit01/value_map_notes.md unit01/value_map.png
git commit -m "Add Unit 1 value map"
Done when:python value_map.py --csv use_cases.csv prints five ranked rows, every row has a checked sap_standard value with a dated link in your notes, and git log shows the commit. Keep this map: Unit 8 turns its top row's numbers into success metrics, and the opportunity assessment in Unit 14 starts from it.
Pick one answer for each question. The explanation appears after you choose.
1Why does AI create most of its value at exceptions and documents rather than in the standard flow?
Answer: B. S/4HANA is a rules engine: when every rule is satisfied, documents flow without a person. Human effort collects at entry edges (documents from outside), exception edges (a rule stops a document) and judgment edges (someone must explain or decide). That is where AI can remove time.
2What is the rough formula for the size of the prize at one edge?
Answer: A. Items per period × minutes per item × the share of that time AI can remove, minus the cost of reviewing AI output and fixing its mistakes.
3Which pairing of pattern and S/4HANA example is correct?
Answer: D. Read: a customer purchase order PDF becomes a sales order. Match: an incoming payment is matched to an open invoice. Triage: a blocked order or invoice exception. Explain: error messages or variances at close. Predict: a late delivery or a payment date.
4In the payment matching example, what happens to the saved hours if review time rises from 1.5 to 3 minutes per item?
Answer: C. The 2,000 reviewed proposals take 100 hours instead of 50, so remaining effort rises from 110 to 160 hours. Net savings fall from 278 to 228 hours a month. Review time must stay well below manual time, or the middle band saves nothing.
5How do confidence thresholds turn "90% accurate" into value?
Answer: B. Proposals above a high confidence clear automatically, those in the middle go to a person for review, and the rest stay manual, as in SAP Cash Application. The automatic share drives most of the value, and where errors are costly the automatic band should be narrow or absent.
6Three-way match exceptions have high value but land in "Fix data and controls first". What would you do in the first month?
Answer: A. Treat it as a data and process project, not an AI project. Measure the real volume and handling time, find why the exceptions happen, fix master data or controls, and check what SAP ships for your release. Revisit AI once data readiness and risk scores improve.
7When is AI the wrong tool for an S/4HANA use case?
Answer: D. When a rule would do, the step is rare, there is no history to learn from, the data isn't there, or the process itself is broken. Configure the rule or fix the data instead.
8What is the difference between a base and a premium AI feature in S/4HANA Cloud Public Edition, and why does it matter for a pilot?
Answer: C. Base features, such as Easy Filter, Smart Summarization and Enterprise Search, are included with the cloud ERP. Premium features, such as Financial Insights, Document Processing and Cash Application, consume AI Units. A base feature is the cheapest pilot; a premium one needs an AI Unit estimate based on your volumes.
9A vendor says its feature cuts processing time by 70%. What do you measure before you put that in a business case?
Answer: B. Your own baseline and pilot numbers: volume, handling time, automatic share, review time per item and error rate. A vendor's figure comes from its own measurements; your data, process and volumes decide your result.
Ask a question
Testing: only staff see this
Stuck on something in this layer? Ask it here. Questions are answered in the order they arrive, and the answer appears under My questions.
Sign in (free) to ask a question. You can ask anonymously.