Scenario 27 — Barcode Labels & Scanning (Coil Tags, Auto-Print & Scan-to-Field)
Scenario 16 taught you to track stock by batch. Then comes the question every warehouse asks: "the coil is in front of me — which batch is it?" SAP can only track what the physical world can identify. This scenario closes that gap with barcode labels.
Verified live on our IDES (DEV/250): SAP's barcode library (SE73) and the output-control application list (NACE) — both confirmed present, with the real values quoted below. Steps marked BASIS or ABAP are not yours to build, but you must be able to specify them — so they are written out too.
📊 Business Case
A steel coil arrives, gets a batch number in SAP, and is put on a rack. Three weeks later it comes back from production half-used. Which coil is it? If the answer depends on someone remembering, or on a handwritten tag that fell off, your batch data is fiction. Barcode labelling makes the physical world match the system — and turns a 30-second typing job into a one-second scan.
🕐 When to use it
As soon as you have batch management, serial numbers, or storage bins. The moment stock has an identity, that identity must be readable on the item itself.
❓ Why it matters
Speed and accuracy. Typing a 10-character batch number invites typos; a scan cannot mistype. And a mislabelled coil is effectively lost stock.
👤 Who triggers it
The label prints automatically when the storekeeper posts the goods receipt. Nobody has to remember to print it.
🔁 The key distinction
SAP generates and prints barcodes natively. SAP does not need to "read" them — a scanner behaves as a keyboard, so scanning works with zero configuration.
💰 Financial Impact — The Easy-Money Example
PakSteel receives 40 coils a day. Each goods receipt needs a batch number typed, and each issue needs it typed again.
🇵🇰 The Business Story
🎯 What you'll learn
- What barcode types SAP ships with, and which to choose (SE73)
- How a label gets printed automatically by output determination (NACE → application
ME) - How to write the condition record that says "print this label, at this plant, on this printer"
- How to scan a barcode into any SAP field — and why it needs no configuration
- Where SKU barcodes live on the material master (EAN/UPC)
- Who owns which step — MM vs Basis vs ABAP — so you can scope the work
👥 Who owns what — read this before you start
Barcoding is not one module. A newcomer's biggest confusion is expecting to do all of it in MM. You will not — but you must be able to specify all of it.
| Piece | Owner | T-code | Can you practise it? |
|---|---|---|---|
| Barcode types (Code 128, EAN, QR…) | BASIS | SE73 | 👁️ look only — already delivered by SAP, nothing to create |
| Printer defined in SAP | BASIS | SPAD | 👁️ look only — use an existing printer (e.g. LP01) |
| The label form itself | ABAP | SMARTFORMS | 👁️ look only — copy a standard form |
| Output type for the label | MM ⭐ | NACE app ME | ✅ yes — your job |
| Condition record — when/where to print | MM ⭐ | MN21 | ✅ yes — your job |
| What data goes on the label | MM ⭐ | spec document | ✅ yes — your decision |
| EAN / UPC on the material | MM ⭐ | MM02 | ✅ yes |
| Scanning into fields | — | any transaction | ✅ yes — needs nothing |
| Label printer & scanners | IT / procurement | — | hardware purchase |
🗺️ Practice Roadmap
Before touching config, prove the easy half works. A scanner is a keyboard. Open MIGO, click into the Batch field, scan any barcode — the characters appear. That is the whole "reading" side of barcoding, and it costs nothing.
No scanner handy? Type the batch number instead — the point is that SAP needs no special "scanner mode".
| Practice | What you learn | T-codes | Owner | ⏱️ |
|---|---|---|---|---|
| 1. Scan into a field | Scanning needs zero config | MIGO | MM | 5 m |
| 2. Explore SAP's barcodes §27.1 | Which types exist, which to pick | SE73 | 👁️ look | 15 m |
| 3. Decide the label content §27.2 | The functional spec — your real deliverable | — | MM ⭐ | 20 m |
| 4. Create the output type §27.4 | Teach SAP that a "coil label" exists | NACE | MM ⭐ | 30 m |
| 5. Condition record §27.5 | When and where it prints | MN21 | MM ⭐ | 20 m |
| 6. Test the auto-print §27.6 | Post a GR → label appears | MIGO SP01 | MM | 20 m |
| 7. SKU barcode (EAN) §27.7 | Find a material by scanning its barcode | MM02 | MM | 15 m |
📋 Prerequisites — what must be in the system (and why)
① A batch-managed material with batches from Scenario 16
🎯 What this is for: a label needs something to print. The batch number is the thing being barcoded.
What breaks without it: nothing to label — the output has no batch to print.
✅ How you'll know: MMBE shows stock split by batch, e.g. RM-IRON-HEAT-01 / HEAT-26-01.
② A printer defined in SAP BASIS
🎯 What this is for: output determination must send the label somewhere. In SAP a printer is an "output device".
How it's set: SPAD → Output Devices → the device name (commonly LP01 for a default/local printer). For real labels this is a thermal label printer using a device type that supports barcodes.
What breaks without it: the output type has no printer and the label fails with a spool error.
✅ How you'll know: SPAD lists the device; SP01 can show its spool requests. For practice, printing to LP01 and viewing the spool in SP01 is enough — you do not need real hardware.
③ A label form ABAP
🎯 What this is for: the layout — where the barcode, batch number, material and weight sit on the label.
How it's built: SMARTFORMS (or older SE71 SAPscript). A developer copies a standard form and assigns a barcode character format to the batch field — that is what turns text into bars.
What breaks without it: the output type has no form to print, so nothing comes out.
💡 Your job as MM: not to build it, but to hand the developer a content spec — see §27.2.
🔧 Step-by-Step
| Step | T-code | What it does | Owner |
|---|---|---|---|
| 27.1 | SE73 | See which barcode types SAP already provides | 👁️ look |
| 27.2 | — | Decide what the label shows | MM ⭐ |
| 27.3 | SMARTFORMS | Build the label layout | ABAP |
| 27.4 | NACE | Create the output type "coil label" | MM ⭐ |
| 27.5 | MN21 | Condition record — when/where to print | MM ⭐ |
| 27.6 | MIGO / SP01 | Post a GR and see the label | MM |
| 27.7 | MM02 | EAN/UPC barcode for the material (SKU) | MM |
| 27.8 | — | Scanning back in | MM |
⚙️ Config & Setup
27.1 — What barcodes does SAP already have? · SE73 👁️ VERIFIED LIVE
⚡ This step will: show you that you do not create barcodes — SAP ships a library of them. You only choose one. 📄 paper: — · 📦 stock: none · 💰 money: none
Do: SE73 → select System Bar Codes → Display.
| Barcode | Type | Best for |
|---|---|---|
⭐ BC_C128B · C128A · C128B | Code 128 | batch & serial numbers — alphanumeric, compact, the industry default |
BC_CD39 · BC_CD39C | Code 39 | simple, very widely supported (with/without check digit) |
BC_EAN13 · BC_EAN8 · BC_EANH | EAN / GTIN | retail SKU barcodes |
BC_I25 · BC_I25C | Interleaved 2 of 5 | numeric only, very compact |
J1IGINQR · J2GQR | QR Code 2005 | 2D — holds a lot, scannable by phone |
LAW_BC | PDF417 | 2D, high data capacity |
ARTNR · AUFNR | pre-built | article number · order number |
MBBARC · BARCLVS | pre-built | inventory management · warehouse (LVS) |
Which to choose for coils: Code 128. Batch numbers can contain letters (HEAT-26-01), Code 128 handles alphanumeric in a short bar pattern, and every scanner reads it.
✅ How you'll know it worked: you can name the barcode type you intend to use, and confirm it exists in this list. That is the whole deliverable of this step.
27.2 — Decide what the label shows MM ⭐ YOUR REAL JOB
⚡ This step will: produce the one-page spec you hand to the developer. This is the functional consultant's actual deliverable — not the form itself.
| On the label | Field | Why |
|---|---|---|
| ⭐ Barcode | Batch number (MCHB-CHARG) | the scannable identity — the whole point |
| Batch number in plain text | same | so a human can read it if the barcode is damaged |
| Material + description | MATNR / MAKTX | what it is |
| Quantity + unit | ERFMG / ERFME | coil weight |
| Grade / quality | batch characteristic | lets the yard pick the right grade |
| Goods receipt date | BUDAT | age of stock — supports FEFO |
| Vendor / mill batch | LIFNR / LICHA | traceability to the certificate |
| Plant / storage location | WERKS / LGORT | where it belongs |
27.3 — Build the label form · SMARTFORMS ABAP
⚡ This step will: turn your spec into a printable layout. You do not build this — but you should understand it to review the result.
- SMARTFORMS → copy a standard label form to
Z… - Place text fields for material, quantity, grade, date
- For the barcode: create a character format in the form's Style and assign the system barcode (e.g.
BC_C128B) to it, then apply that format to the batch field - Activate the form
💡 The one technical idea worth knowing: a barcode in SAP is a character format, not an image. You tag the field "print this as Code 128" and the printer renders bars. That's why it needs no graphics and prints fast.
✅ How you'll know: the developer can run a print preview of the form showing bars, not text.
27.4 — Create the output type · NACE, application ME MM ⭐ YOUR JOB
⚡ This step will: teach SAP that a thing called "coil label" exists, what form it uses and how it is sent.
ME = "Inventory Management" — that is the application covering material documents (goods receipts/issues). Others you will meet: EF Purchase Order · E1 Inbound Delivery · V6 Handling Units · MR Invoice Verification.
| Where · Field | Fill | Why — and the impact |
|---|---|---|
| NACE → select application | ME Inventory Management | goods-receipt documents live here. Impact: choose the wrong application and your output will never trigger on a GR |
Button Output Types → New Entries (or copy WE01) | output type ZCOI, name "Coil Label" | copying the standard GR-slip output WE01 inherits sensible defaults. Impact: from scratch you must set every field yourself |
| General data → Access sequence | e.g. the one used by WE01 | tells SAP which key to look up condition records by (e.g. plant / movement type). Impact: no access sequence = no condition record can ever be found |
| Processing Routines | Medium 1 Print · Program … · Form/Smart Form = your Z label form | links the output type to the layout. Impact: wrong form = wrong label printed |
| Partner Functions | medium 1 (print) · partner e.g. WE | who/where it goes. Impact: missing partner function blocks output creation |
| Save | — | customizing → goes into a transport request |
✅ How you'll know it worked: your output type appears in the ME application's output-type list with your form attached.
27.5 — Condition record: when and where to print · MN21 MM ⭐ YOUR JOB
⚡ This step will: switch the label on for real conditions — "for plant PK01, on movement 101, print one copy to this printer."
The idea in one line: the output type (27.4) says what a coil label is; the condition record says when to actually print one. Both are needed — this is the single most common reason "output is configured but nothing prints."
| Where · Field | Fill | Why — and the impact |
|---|---|---|
| MN21 · Output type | ZCOI | the label you created |
| Key combination | e.g. Plant / Movement type | the granularity of the rule. Impact: too broad and every movement prints labels |
| Plant · Movement type | PK01 · 101 | print only on goods receipts at Karachi. Impact: omit the movement type and issues print labels too |
| Medium | 1 Print output | as opposed to EDI/email |
| Date/time | 4 = immediately when saving | label prints the moment the GR posts. Impact: 1 waits for a batch job — the storekeeper walks away without a label |
| Printer / Output device | e.g. LP01 (the label printer in production) | where it comes out. Impact: wrong printer = label prints in the wrong building |
| Save | — | a master-data record — no transport needed |
✅ How you'll know: MN23 displays the record for your plant/movement combination.
🔄 Transaction Flow
27.6 — Test it: post a goods receipt and see the label · MIGO → SP01
⚡ This step will: prove the whole chain — GR posts, SAP finds the condition record, generates the label and sends it to the spool. 📄 paper: material doc + spool request · 📦 stock: normal GR · 💰 money: normal GR
- MIGO → Goods Receipt · Purchase Order → post a receipt for your batch material at
PK01 - Before posting, check Messages (menu Goods Receipt → Messages) — your output type
ZCOIshould be listed as proposed - Post
- SP01 → your user → the spool request appears → Display to see the label
💡 For practice you do not need a real printer. Printing to LP01 and viewing the output in SP01 proves the configuration works — the bars will render as a barcode font.
✅ How you'll know: a spool request exists in SP01 containing the batch number and the barcode.
27.7 — SKU barcode on the material master (EAN/UPC) · MM02 MM
⚡ This step will: store the product barcode so a scan of the packaging finds the material. This is separate from batch labels — it identifies what the product is, not which lot.
- MM02 → material → view Basic Data 1
- Click Additional Data → tab Units of Measure
- On the base-unit row fill EAN/UPC and EAN category (e.g.
HEinternal /IEfor internal EAN) - Save
What you gain: in most material fields you can scan the EAN and SAP resolves it to the material number. Stored in table MEAN.
✅ How you'll know: SE16 → MEAN shows your material with its EAN.
27.8 — Scanning it back in NO CONFIG NEEDED
⚡ This step will: close the loop — and show you the cheapest win in this whole scenario.
- MIGO → goods issue → click into the Batch field
- Scan the coil label → the batch number fills instantly
- Post
Even better — combine with Scenario 16's trick: for a remnant return, set Reference = Material Document and scan the document number from the picking slip. SAP then copies every batch automatically and you type nothing at all.
| Level | What you scan | Needs |
|---|---|---|
| ⭐ 1. Plain scanner | batch no. / document no. into any field | nothing — works today |
| 2. Handling Units | one HU barcode → material + batch + qty together | HU management (NACE app V6) |
| 3. RF / mobile | scan on a handheld, no desktop screen | WM / EWM build |
🐞 Errors you will hit — and how to fix them
| Where | Symptom | What it means | Fix |
|---|---|---|---|
| MIGO after posting | No label prints, no error | The commonest problem by far. The output type exists but no condition record matched — so SAP silently printed nothing. | Check MN23 for a record on your exact plant + movement type. Then in the document check Messages — if the output isn't listed, the condition record didn't match. |
| Document → Messages | Output listed but status yellow / not processed | Date/time is set to "send with periodic job" (1) instead of immediately. |
Set Date/time = 4 (immediately) in the condition record — or run RSNAST00 to process pending output. |
| Output → red status | Processing failed | Usually the printer/output device is missing or invalid, or the form isn't active. | Check the device exists in SPAD; check the form is activated in SMARTFORMS. |
| SP01 output | Barcode prints as plain text, not bars | The character format with the system barcode was not applied to that field, or the printer's device type doesn't support the barcode. | ABAP: confirm the barcode character format is assigned. Basis: use a device type that supports barcodes (thermal label printers do). |
| Scanner | Scans but characters are wrong / run together | Scanner keyboard layout mismatch, or no terminator character. | Set the scanner to the same keyboard layout as the PC and configure it to send Enter (CR) after the code. This is scanner setup, not SAP. |
| Barcode won't scan reliably | Reads only at certain angles | Barcode printed too small or too dense. | Keep the barcode ≥30 mm wide; shorten the data or use a bigger label. Code 128 is denser than Code 39 for the same data. |
✅ Verification
- SE73 → System Bar Codes → your chosen type exists (e.g.
BC_C128B) - NACE → application
ME→ your output typeZCOIlisted with its form - MN23 → condition record exists for plant + movement type
- Post a GR in MIGO → Messages shows the output as processed (green)
- SP01 → spool request contains the batch number as a barcode
- SE16 →
MEAN→ EAN stored against the material (if you did 27.7) - Scan a printed label into MIGO's Batch field → it fills correctly
ME Inventory Management and the full application list. Not yet built end-to-end here: the label form and output type — those need a Smart Form (ABAP) and a printer (Basis), which are outside the MM role. The MM steps (27.2, 27.4, 27.5, 27.7, 27.8) are all practiceable once a form and printer exist.
🎓 Interview-Ready Answers
Q: Does SAP support barcodes natively, or do you need a third-party tool?
Natively. SAP ships a library of system barcodes maintained in SE73 — Code 128, Code 39, EAN/GTIN, Interleaved 2 of 5, QR Code and PDF417 among them. A barcode is applied as a character format in a SAPscript/Smart Form, so the printer renders the bars. On the reading side nothing is needed at all: a scanner acts as a keyboard and types into whatever field has focus.
Q: A goods receipt posts but no label prints, and there's no error. Where do you look?
Almost always a missing or non-matching condition record. The output type in NACE only defines that the label exists; the condition record (MN21/MN23) says when to print it. I'd open the material document's Messages — if the output isn't listed, no condition record matched the plant/movement type; if it's listed but yellow, the date/time is set to periodic instead of immediate.
Q: Which NACE application do you use for a goods-receipt label, and why?
ME — Inventory Management, because that application covers material documents, which is what a goods receipt creates. Purchase orders are EF, inbound deliveries E1, handling units V6, invoice verification MR. Picking the wrong application is a common mistake — the output type then never triggers.
Q: As an MM consultant, what part of a barcode project is actually yours?
The specification and the triggering: deciding what appears on the label, which barcode type, the output type in NACE, and the condition records that control when and where it prints. The Smart Form is ABAP, the printer and device type are Basis, and the hardware is procurement. Knowing that split is what lets you scope the project realistically instead of promising work you can't deliver.
Q: What's the single biggest risk in a barcode rollout?
Not the technology — the process discipline. If a label falls off, or a coil is moved without scanning, the data is wrong and people stop trusting it. I'd insist on durable labels, a clear rule that stock never moves without a scan, and a recovery procedure (search by characteristics in CL30N, then verify by weight) for when a label is lost.