In short

SAP BDC Recording

A BDC recording, also called batch input, is a captured sequence of screens and keystrokes that SAP can replay with different data. It is the universal fallback for mass loading, because anything a person can do on a screen can be recorded, and it is tied to the screen it was captured against.

  • A recording describes a path, not an intent. When the screen changes, the recording is wrong even though what you want has not changed.
  • Data variation is the most common failure. One material batch managed and the next not means an extra screen for some rows only.
  • Record the worst case, not the simplest row. A recording built on a clean example meets its first exception in production.
  • Record with a clean user. Personal defaults and layout variants make a recording work for its author and nobody else.
  • Name an owner. Recordings decay, and an unowned one fails at month end with nobody responsible.

What a BDC recording is

A BDC recording, also called batch input, is a captured sequence of screens and keystrokes that SAP can replay. You perform a transaction once through SHDB while SAP records every screen number, field name and OK code, and the resulting recording can then be executed repeatedly with different data.

It is the universal fallback for mass loading. Anything a person can do on a screen can be recorded, which gives it coverage no other method matches. It is also tied to the screen it was captured against, which is the source of every problem described on this page.

A recording should be a considered choice rather than a default. The BAPI comparison covers when each is right, and the short version is: use a published interface where one exists, and reach for a recording when none does.

The eight stages of an SAP BDC recording: record the transaction in SHDB, review the capture, generate the program, map your columns, handle variations, test with real data, run the replay, and read the messages.
Diagram The eight stages of building and running a recording, and where each can break.

How a recording works, and where each stage can break

Recording captures the transaction as you perform it. Every screen you pass through, every field you fill, every button you press. What it captures is the path you happened to take, not the range of paths the transaction supports.

Mapping connects your spreadsheet columns to the recorded screen fields. Field names are technical rather than what appears on screen, so this stage requires knowing which field is which.

Replay executes the recording once per row. SAP fills the recorded fields with your values and processes the transaction exactly as it would for a person.

Message handling collects whatever appeared on screen. Which is a message, sometimes the one you need, in a form that has to be parsed and matched back to a source row.

The critical property is in the first stage. The recording describes one path. Any row whose data would send the transaction down a different path meets screens the recording does not expect, and processing stops there.

Why recordings break

Six reasons SAP BDC recordings break: field status changes making a field required, an unexpected popup screen, a support pack shifting the layout, differing user settings, data variation taking a different path, and Fiori replacing the transaction.
Diagram Six ordinary system changes that a screen-tied approach cannot absorb.

Six causes, none of them a defect. They are ordinary system changes that a screen-tied approach cannot absorb.

Field status changes. Configuration makes a previously optional field required. The recording never filled it because it was optional when captured, so every row now stops on that screen.

An extra screen appears. A warning, a confirmation or an information popup that was not present during recording. The recording sends the next expected input to a screen that is not there.

A support pack shifts the layout. Fields move between screens, screens split or merge, and the recorded sequence no longer matches what the transaction presents.

User settings differ. Parameter IDs, default values and layout variants all change what a screen shows and what it pre-fills. A recording captured under one user's settings can behave differently under another's.

Data variation. The most common cause in practice and the least anticipated. One material is batch managed and the next is not, so an extra screen appears for some rows and not others. The recording works for most of the file and fails on a subset that looks arbitrary.

Fiori replacement. On S/4HANA, where a classic transaction is replaced by an app, there is no screen left to replay.

Every one of these has the same root cause. The recording describes a screen, not an intent. When the screen changes, the recording is wrong even though what you want to achieve has not changed at all.

Making a recording survivable

Six practices that make an SAP BDC recording survivable: record with a clean user, record the worst case, document the transaction and release, test with production-shaped data, name an owner, and re-verify after every support pack.
Diagram If a recording is the right answer, these keep it working longer.

If a recording is the right answer, these six practices keep it working considerably longer than the default approach.

Record with a clean user. No personal parameter defaults, no saved layout variants, no user-specific settings. A recording captured under somebody's customised profile works for them and behaves unpredictably for everyone else.

Record the worst case, not the simplest. Take the row with every optional screen, every popup and every conditional field. A recording built on the cleanest example in the file will meet its first exception in production.

Document the transaction and the release. Which transaction, which system, which support pack level. When it breaks in eighteen months, the person fixing it needs to know what it was built against, and they will not be you.

Test with production-shaped data. Not sample rows. Real files contain batch-managed materials alongside unmanaged ones, text items alongside stock items, and the edge cases that break recordings. Clean test data proves almost nothing here.

Name an owner. Recordings decay, and somebody has to re-record when they do. An unowned recording is a process that will fail at month end with nobody responsible for fixing it.

Re-verify after every support pack. The single most common moment a recording stops matching, and the cheapest moment to discover it.

When a recording is genuinely right

Three conditions, and all three need to hold.

  • No published interface exists for the object. Checked rather than assumed. The BAPI comparison lists the interfaces covering the objects that carry most volume, and coverage is better than reputation suggests.
  • The transaction is stable and classic. Not one being replaced by a Fiori app, and not one in an area undergoing active configuration change.
  • Somebody accepts the maintenance. By name, with the expectation that re-recording is part of the job rather than an incident.

Where all three hold, a recording is a reasonable engineering choice and this guide is about doing it well. Where any of them does not, the recording is borrowing against future maintenance to save time now.

Removing the screen dependency

Try this in your own system

PostNow posts through published interfaces

Where a BAPI exists, there is no screen to record and nothing to break when a layout changes. PostNow adds a task pane to Excel, signs in with your own credentials, and calls SAP's published function modules directly.

No screen

Field status, popups and layout changes stop being your problem.

Per row

A structured message rather than screen text to parse.

Portable

Remaps at conversion instead of needing a rebuild.

Owned

A saved mapping the business keeps, not a recording only IT can read.

Start free trial 14-day trial · posts through published SAP interfaces

Building a recording, step by step

Step by step infographic for SAP BDC recording: check for a BAPI first, log in to postnow.ai, record the worst case, test with real data, document and own it, and re-verify after upgrades.
Infographic Six steps to a recording that lasts longer than the project that built it.

Recordings and S/4HANA

A conversion is the point at which most recordings stop working, and planning for that is more useful than discovering it.

Where the transaction is replaced by a Fiori app, the recording is worthless. There is no classic screen to replay, so the work has to be redone on a different foundation entirely.

Where the transaction survives, it has probably changed. Field lengths extend, screens are adjusted, and configuration moves. A recording that still runs should be re-verified rather than assumed.

Interfaces mostly carry forward. Which is the practical argument for moving recordings onto published interfaces before a conversion rather than after. The mapping work is the same either way, and doing it once beats doing it twice.

If a conversion is on your roadmap and you maintain recordings, the useful exercise now is an inventory: which recordings exist, which transactions they cover, and which of those transactions have a published interface available. That list is the migration plan.

Common mistakes

  • Recording before checking for a BAPI. The most expensive mistake, because the cost is years of maintenance.
  • Recording the simplest row. The recording meets its first exception in production instead of in testing.
  • Recording under a customised user profile. Works for the author, behaves unpredictably for everybody else.
  • Testing with clean sample data. Real files contain the variation that breaks recordings.
  • Leaving it undocumented. The person fixing it in eighteen months will not be you.
  • Leaving it unowned. It will break, and it will break at month end.
  • Assuming it still works after a support pack. That is the most likely moment it stopped.

The complete recording reference

SAP BDC recording reference infographic covering how recordings work, why they break, good practice, when a recording is the right answer, and the build sequence.
Infographic The complete recording reference: mechanics, failure modes, and good practice.

Go deeper

SAP data upload methods

The wider field, and why two of six methods should never be used.

Moving off LSMW

LSMW steps are recording-based and break the same way.

SAP mass upload

The pillar guide covering validation, error handling and governance.

Where methods apply

The module bridges, where each method gets used in practice.

Frequently asked questions

What is a BDC recording in SAP?
A BDC recording, also called batch input, is a captured sequence of screens and keystrokes that SAP can replay. You perform a transaction once through SHDB while SAP records every screen number, field name and OK code, and the recording can then be executed repeatedly with different data. It is the universal fallback for mass loading because anything doable on a screen can be recorded.
Why do SAP BDC recordings stop working?
Because a recording is tied to the screen it was captured against. Six causes account for most failures: field status configuration making a field required, an unexpected popup, a support pack shifting the layout, differing user defaults, data variation sending some rows down a different path, and Fiori replacing the transaction entirely. All share one root cause: the recording describes a screen, not an intent.
Why should I record the worst case rather than a simple row?
Because a recording only captures the path you happened to take. Any row whose data sends the transaction down a different path meets screens the recording does not expect. Recording the row with every optional screen, popup and conditional field means the recording already knows about those paths, so it survives the variation a real file contains.
Does it matter which user records the transaction?
Yes. Parameter IDs, default values and layout variants all change what a screen presents and pre-fills, so a recording captured under a customised profile can behave unpredictably under another user. Recording with a clean user, without personal defaults or saved variants, produces something that works for everybody rather than only for its author.
When is a BDC recording the right choice?
When three conditions hold together: no published interface exists for the object, checked rather than assumed; the transaction is a stable classic one rather than being replaced by a Fiori app; and somebody accepts ownership of re-recording it when it breaks. Where all three hold it is a reasonable engineering choice. Where any does not, it is borrowing against future maintenance.
What happens to BDC recordings in S/4HANA?
Where a classic transaction is replaced by a Fiori app, the recording is worthless because there is no screen left to replay. Where the transaction survives it has probably changed, since field lengths extend and screens are adjusted, so a recording that still runs should be re-verified rather than assumed. Interface-based loads mostly carry forward with a remap.
How should I test a BDC recording?
With production-shaped data rather than clean sample rows. Real files contain batch-managed materials alongside unmanaged ones, text items alongside stock items, and the variation that breaks recordings. A recording that passes testing on tidy data and fails in production has usually been tested against exactly the path it was recorded on.
Do BDC recordings create change documents?
Yes. The transaction genuinely runs, so records produced are indistinguishable from manual entry and the same change documents are written. On auditability a recording and a BAPI are equivalent, which is why the choice between them turns on error handling and durability instead.
Why does a recording need a named owner?
Because recordings decay. Configuration changes, support packs and data variation all break them eventually, and somebody has to re-record. An unowned recording is a process that will fail, usually at month end, with nobody responsible for fixing it and often nobody who knows what it was built against.
How do I get error messages out of a BDC run?
Whatever appeared on screen is what comes back, which has to be parsed and matched to source rows. This works acceptably at small volumes and degrades badly as the file grows, because an ambiguous message on one row becomes unusable across four hundred. A published interface returns a structured message per row instead, which is the main practical argument for preferring one.
Start with a real file

Run your next sap mass upload from Excel

Map your columns once, validate every row against live SAP, and post through standard logic. Each row comes back with the document number it created.

Start free trial
  • 14-day free trial
  • Works with ECC and S/4HANA
  • Your data stays in your systems