Quick answer

How to make a BDC recording that replays

Record the transaction once in SHDB along the path your hardest row needs, typing every value Excel will later supply, and end with a real save. In PostNow.ai you press Record, map fields to Excel columns, draw a loop band for line items and run Check recording; Run then replays each row by CALL TRANSACTION and writes back SAP's message.

  • Record two line items, not one, using the transaction's add-line function instead of scrolling.
  • Post, don't park. FI Enjoy transactions refuse parking in batch input (message FP 140).
  • Debug three rows before anyone runs a real file.

How PostNow.ai records and replays an SHDB transaction

PostNow.ai records through SAP's own transaction recorder (SHDB) and replays through CALL TRANSACTION, so the transaction's normal screen checks apply to every row as if someone typed it.

Press Record and run the transaction

Enter the transaction code in the Record dialog. PostNow.ai opens a fresh SAP GUI session on your connection, so whatever you have open is left alone, starts the SHDB recording through a small Z report (transaction ZPOSTNOW_REC) and hands you the transaction. Work through it normally and save. When you leave the transaction, the recording is saved and the mapping designer opens in Excel. Recording mode needs PostNow.ai's Z objects in SAP (ZPOSTNOW_REC, ZPOSTNOW_BDC_RUN, ZPOSTNOW_DEBUG_RUN, ZPOSTNOW_SHDB_READ), which your Basis team installs once per system. BAPI mode needs none of them.

Map the fields you want from Excel

Each recorded screen appears as a block with its program and screen number, and each field shows the value you typed. A field can read an Excel column (drag-and-drop or Auto Map), carry a fixed value, or replay as recorded, with the same field rules as a BAPI template. Then draw a loop band for line items, add conditions for optional screens and disable what you don't want sent; Undo covers the last 50 designer changes.

Check the recording

The Check recording button lists replay-breaking setup mistakes as RED (the run will break) or AMBER (risky): screens a condition leaves without an OK-code, a loop band that no longer matches the recording, a loop that contains the final save, control steps reading Excel columns, cursor rows aimed at screen areas with no data. The same check runs as a gate when you publish, and a "Publish anyway" override is recorded.

Simulate, Debug, Run

Simulate replays against SAP and gives a three-state verdict per document: would post, review (warnings), would not post. Debug replays in SAP GUI in the foreground, all screens (A) or errors only (E), so you can watch where a row leaves the recorded path. Run posts with no screens, writes SAP's message to each row's Run Log, and can put MSG_V1 to MSG_V4 into columns; MSG_V1 usually carries the document number.

Four run settings matter for recordings, and PostNow.ai sets them for you. It calls the transaction with standard screen size (CTU_PARAMS-DEFSIZE = 'X'), so a table control shows the same number of rows for every user whatever their window size. SAP Help It runs the transaction in an SAP GUI session logged on with your own user, so your SET/GET parameters and the defaults they drive behave as they do online. Dictionary date fields are converted on the SAP side to the posting user's date format, so a sheet in YYYYMMDD works for a user whose profile says DD.MM.YYYY. The fourth is the update mode: rows run in background mode N with synchronous update (UPDMODE = 'S'), so each call waits for SAP's update task to finish before its message goes to the Run Log. SAP Help

Which transactions record well, and which to post by BAPI

PostNow.ai has a recording mode and a BAPI mode in the same add-in, so you choose per transaction. A recording is the right call when no BAPI covers the screens you maintain, or when you want SAP's own screen logic exactly as your users see it.

SituationPostNow.ai routeWhy
Classic screens with one fixed path (FS00, KS01, XK01 on ECC, VK11)Recording, one row per documentThe path is the same for every row, so one recording covers the file
Header plus line items (FB01, FB50), or rows that need an extra screenRecording with an H/D loop band, and conditions on the optional screensBoth are covered below: loop bands and conditions
Enjoy transactions built on GUI controls, such as ME21NBAPI mode on BAPI_PO_CREATE1; a simple recording can run in PostNow.ai's dedicated SAP GUI sessionSAP does not support batch input for ME21N (Note 217437). PostNow.ai replays recordings in a real SAP GUI session, where the controls can start, but multi-item POs belong on the BAPI
MIRO, MIR7BAPI mode on BAPI_INCOMINGINVOICE_CREATESAP Note 381593: batch input is not possible for MIRO, MIR7 and MIRA. See MIRO from Excel

If you are still choosing a method for a whole programme of loads, SAP mass upload from Excel compares the routes per object, and BAPI vs BDC goes deeper on the trade-off.

How to record a BDC in SHDB so it replays

PostNow.ai replays exactly what you recorded, field for field and screen for screen, so most replay failures trace back to the recording session. These are the rules we give every designer before their first recording.

One setting comes first: PostNow.ai records, debugs and runs recordings through SAP GUI, so SAP GUI scripting has to be allowed on the SAP server and switched on in SAP GUI on the PC. If it is off, see how to enable SAP GUI scripting.

  1. Record in the client you will run in. Field status can hide a field in one client and show it in another, and a recording made where the field was visible fails with 00 349 where it is suppressed. SAP's KBA 2178951 is exactly this case: BSEG-VALUT missing from an SAPMF05A screen because of field status (OB41 / OBC4).
  2. Take the path your hardest row needs. If some rows need an extra screen, record a row that goes through it. Disabling a recorded screen later is one click; a screen you never recorded means recording again.
  3. Type every value you plan to map, even when SAP has filled it in. A company code or plant filled in from your user parameters belongs to your profile, not to the sheet. Overtype it so the field appears in the recording with a value you can tie to a column.
  4. For line items, record two and use the add-line function. PostNow.ai replays field names exactly as recorded, including the table-row index such as ACGL_ITEM-HKONT(02). It does no row arithmetic and no paging. So enter line one, then use the transaction's own insert or add-items function and type the next line into the same table row. Don't scroll with Page Down: the number of visible rows depends on screen size, which is why the replay uses standard size.
  5. Finish with a real save, and post rather than park. The save OK-code (often =BU on FI posting screens) has to be in the recording, and it must sit after the loop band, not inside it. Parking an FI Enjoy document in batch input stops with FP 140, "Parking not possible during batch input" (SAP KBA 2815035); record the post, or park through a BAPI.
  6. Let warnings happen while you record. A warning that appears during recording is captured with its Enter. A warning that only some rows trigger, such as a posting-date warning, is handled afterwards with the designer's ENTER button: it inserts a /00 after that screen, which dismisses the warning when it appears and simply re-checks the screen when it doesn't.
⚠
One recording, one transaction. SHDB can hold several transactions in one recording, but a PostNow.ai template posts one transaction per row. If a business process needs two transactions in sequence, use two templates, or BAPI mode with a chain if both steps have a BAPI.

Screens, fields and OK-codes: reading a recording

PostNow.ai shows the recording as screen blocks rather than raw BDCDATA rows. Error messages quote the PROGRAM and DYNPRO of the failing screen, for example SAPMF05A 0100, so match those to the block in the designer. Table-control fields carry a row index: FIELD(02) is the second visible row.

OK-codes. BDC_OKCODE carries the user action on that screen: = plus a function code (=BU), or / plus a function key number, where /00 is Enter. A screen that ends with no OK-code has nothing to move it on, and a background run stops there. SAP Help

Cursor rows. BDC_CURSOR records where the cursor sat. Most cursor rows do nothing, but some screens act on the field under the cursor, and a stale one can stop a run. On ME21N, an item-detail cursor recorded on MEPO1319-MATKL pointed at a tab that wasn't active at replay, and the background run stopped while Debug worked fine. Check flags cursor rows that point at a screen area holding no data in the recording, tints them amber and leaves the decision to you. It never removes cursors on its own.

Disable, never delete. Deleting recorded rows is how most hand-edited recordings break: take out the wrong row and a screen loses its OK-code or its header, and the screen sequence no longer matches what SAP sends. In PostNow.ai a disabled field stays in the recording but is not sent. Click a screen's header to select the whole block and disable it in one go, and at run time any screen left with no data, cursor or OK-code is dropped cleanly. "Show disabled" brings hidden rows back.

Duplicate fields. SHDB often captures the same field on several screens, for example a header value echoed on a later screen where it is no longer open for input. Sending it again there gives 00 347. PostNow.ai's Skip Duplicates setting is on by default: each mapped field is sent only at the place you mapped it. Turn it off only when a screen genuinely needs a value entered twice.

Header and line items: turning a recording into a loop band

PostNow.ai builds one document from a header row and any number of detail rows by repeating a band of recorded steps. You draw the band on the recording yourself; nothing is inferred.

  1. Tell it how to read Excel. Either an H/D marker column (H on the header row, D on each line, or values you choose), or flat rows where a split column decides where a new document starts.
  2. Draw the band. In Configure Header / Detail, set "Recording rows that repeat" from the first step of one line to the last. Everything before the band runs once per document as the header, the band runs once per detail row, and everything after it, including the save, runs once as the footer.
  3. Map item fields to columns. Detail rows feed the band; the header row feeds the steps before and after it. Auto Map can create the H/D columns for you.

Three guards stop the classic loop failures. If the save OK-code falls inside the band, Check reports it as RED, because SAP posts on the first save and silently drops every line after it: the document "posts" with one item. If the recording changes after you drew the band, the run is blocked with "Loop range is stale" instead of looping the wrong steps. And if every business field inside the band is disabled or unmapped, the run stops before SAP rather than posting empty lines.

Every row in an H/D group must carry its marker. A row with a blank or wrong marker stops that document with a list of the offending row numbers, before anything is sent.

Screens only some rows need: conditions

PostNow.ai can run a range of recorded steps only when an Excel column meets a condition, which is how one recording handles rows that take different paths through the transaction.

A condition compares a column with a value (equals, greater than, CONTAINS, IS_EMPTY and the like), and ELSE is optional. Inside the loop band it is evaluated per detail row; on the header or footer, against the header row. Conditions exist only in recording mode; the BAPI Logic tab has loops only.

The trap is the OK-code. If the steps you make conditional include the only OK-code on a screen, a row where the condition is false leaves that screen with nothing to press. Check finds every such gap and offers Add /00 for me, which inserts a visible Enter as the ELSE so the false branch still moves the screen on. Nothing is added silently at run time. If a condition removes every screen of the recording for a row, the Run Log says the condition excluded it, rather than sending SAP an empty call.

Worked example: an FB50 journal with three lines from Excel

PostNow.ai posts this as one FB50 document from one header row and three line rows: an accrual in company code 1010, laid out the way Auto Map builds an H/D sheet, with header labels and values in rows 1 and 2, item labels in row 3, items from row 4 and the marker in column A.

RowABCDEF
1Marker* Company code* Document date* CurrencyReference
2H101020261031EURACCR-OCT
3Marker* G/L account* Debit/credit* AmountCost centreItem text
4D400000Debit1,200.0010101101Oct consulting
5D400100Debit300.0010101101Oct travel
6D211000Credit1,500.00Oct accrual
  1. Record. Press Record, enter FB50, type the header (company code, document date, currency, reference), enter the first G/L line, use the screen's add-line function so the second line is typed in the same table row, enter it, then Post. Leave the transaction; the designer opens.
  2. Draw the band. Set the marker column to A with H and D. Draw the band over the steps that type one line and add the next, so the band ends before the post step. If the recording also holds a second copy of the line block, disable that copy so the line is not sent twice.
  3. Map and set rules. Auto Map with H/D on builds the layout above. G/L accounts get leading zeros to 10, the date is YYYYMMDD, the debit/credit column is restricted to the two values your recording uses, and cost centre gets SAP Lookup so Validate can confirm it exists.
  4. Check. Check recording should come back clean. If it reports "The loop range includes the final save step", the band was drawn one screen too far.
  5. Simulate. FB50 has a built-in Simulate code in PostNow.ai, so SAP runs its full document check, balance included, without posting. Type the credit as 1,400.00 and the document comes back red with SAP's balance message.
  6. Debug, then Run. Debug (E) on the first document, then Run. The Run Log gets SAP's success message, and MSG_V1 puts the document number in a column you pick.

The same pattern carries FB60 vendor invoices and FB01 postings. For a first upload done end to end, see how to upload data into SAP from Excel; for a recording with scales and validity periods, see VK11 pricing conditions from Excel.

Pre-run checklist for a recorded template

PostNow.ai catches most of these mechanically, but running down the list once is quicker than reading a Run Log of 400 identical errors.

  • Check recording is clean, or every remaining AMBER finding is one you chose deliberately.
  • Every mapped field has a column or a fixed value, and control steps (OK-codes, cursor rows, line-select flags) replay as recorded rather than reading the sheet. A line-select flag mapped to a column fails with SAP's "Select an item" when the cell is blank; Check suggests a fixed X.
  • Validate passes, with Pre-Validation on the master data the rows refer to.
  • Simulate on a few documents comes back green or amber. If the transaction has no Simulate code, the save is stripped and only screens are checked; balance and duplicate checks then happen only on the real run.
  • Debug (E) on one document stops on no screen.
  • Run Scope starts small: set an end row for the first live run, then Auto.

Then publish it before operators get it; roles, approvals and the library are covered in Excel to SAP automation.

BDC error messages: what they mean and the fix

PostNow.ai writes SAP's own message to the Run Log for each row, and AI Review in the run diagnostics can explain a failed row from SAP's messages and the field structure, by default without seeing cell values. These are the messages recordings produce most often.

MessageWhat happenedFix
00 344 No batch input data for screen & &SAP sent a screen the recording doesn't have for this rowDebug (E) the row to see the screen. If only some rows reach it, record it and put it behind a condition; if a different user sees it, compare user settings
00 349 Field & does not exist in screen & &The recording sends a field the screen doesn't show, often because field status suppresses itRecord in a client with production customizing, or disable the field. PostNow.ai treats 00 349 as lost data, since the document can still post without that value, and flags it in the diagnostics
00 347 Field & is not an input fieldThe field is display-only at that point: locked after the header, or set to display by field statusKeep Skip Duplicates on; check the field status for that transaction
Run stops on a screen, no errorThe screen has no OK-code, often after a condition removed itRun Check and accept "Add /00 for me", or add an ENTER after the screen
"Loop range is stale" (PostNow.ai)The recording changed after the band was drawnOpen Configure Header / Detail and re-draw the repeating rows
"SAP system <SID> does not allow SAP GUI scripting" (PostNow.ai)Recording, Debug and Run use an SAP GUI session, and scripting is off on that SAP systemAsk Basis to set sapgui/user_scripting to TRUE in RZ11; the steps are in how to enable SAP GUI scripting

What to plan for with BDC recordings

A recording follows SAP screens, so plan for the moments when those screens change. PostNow.ai keeps the recording maintainable through those changes.

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 The ordinary system changes that move a screen away from its recording.
  • Screens change, recordings don't. After a support pack, an upgrade or a customizing change on the screens you record, re-record and re-check. PostNow.ai's stale guards stop a mismatched band or condition from running; a Debug run on one row shows any field SAP added.
  • Every SAP system needs the Z objects. Recording, Run and Debug go through the ZPOSTNOW_* objects, so every system, from development to production, needs them before a recorded template can run there. Transport them like your other Z objects.
  • Runs start on the user's PC. Recorded templates run in a real SAP GUI session on the PC of the user who starts them, under that user's own SAP login. Chains of several templates per row run in BAPI mode.
  • Posted documents stay posted. Stop cancels the rows not yet sent; reverse a posted document in SAP the usual way, such as FB08 for an FI document.
  • S/4HANA. A conversion is the moment to inventory recordings. Transactions such as XK01 and XD01 hand over to BP, so those recordings move to BAPI mode. SAP Learning

Frequently asked questions

How does PostNow.ai turn an SHDB recording into an Excel upload?
Press Record in the PostNow.ai ribbon, run the transaction once in SAP GUI and save. PostNow.ai records it through SHDB in a fresh session and opens it in a mapping designer, where you tie fields to Excel columns, draw a loop band for line items and disable what you don't need. Check recording flags missing OK-codes and broken loops, then Run replays every row by CALL TRANSACTION under your own SAP login and writes SAP's message beside the row.
How do I record a BDC in SHDB?
Start a new recording in SHDB with the transaction code, perform the transaction once along the path your hardest row needs, save, and leave the transaction so the recording is stored. Type every value you plan to replace from a file, record two line items with the add-line function, and post rather than park. In PostNow.ai the Record button does the SHDB part for you.
Why does my BDC recording work in the foreground but fail in the background?
In the foreground a person quietly fixes what the recording misses: an extra warning, a screen with no OK-code, a cursor on an inactive tab. In background mode N nobody presses Enter, so the run stops. Debug the row with errors only (E) to find the screen; in PostNow.ai, Check recording flags OK-code gaps and orphan cursor rows before you run.
How do I handle table control line items in a BDC recording?
Enter the first line, then use the transaction's insert or add-items function so each further line is typed into the same table row; don't scroll with Page Down. In PostNow.ai the steps for one line become a loop band that repeats once per D row, with field names replayed exactly as recorded, such as ACGL_ITEM-HKONT(02). The save must sit after the band.
What does BDC_OKCODE /00 mean in a recording?
BDC_OKCODE holds the action taken on a screen: an equals sign plus a function code, such as =BU, or a slash plus a function key number. /00 is Enter. A screen with no OK-code has nothing to move it on, so PostNow.ai's Check recording offers to add a /00 wherever a condition would leave a screen without one.
How do I fix "No batch input data for screen" (00 344)?
SAP showed a screen the recording has no data for, because this row's data or this user's settings took a different path. Debug the row with errors only to see the program and screen. If only some rows reach it, record that screen and put it behind a condition.
Can I record MIRO or ME21N for a mass upload?
MIRO, no: SAP Note 381593 says batch input is not possible for MIRO, MIR7 and MIRA, so use BAPI_INCOMINGINVOICE_CREATE. ME21N is not supported in batch input either (SAP Note 217437). PostNow.ai can replay a simple ME21N recording in a dedicated SAP GUI session, but purchase orders belong on BAPI_PO_CREATE1, and multi-item orders always do.
Do I need to re-record after an upgrade or an S/4HANA conversion?
Re-check every recording after a support pack, upgrade or customizing change on its screens, and re-record any that fail Debug. On S/4HANA, XK01 and XD01 hand over to BP, so those recordings move to a BAPI. PostNow.ai blocks a loop band or condition that no longer matches the recording, and a Debug run on one row shows any field SAP added to a screen.
Record once, run every row

Turn your next SHDB recording into an Excel upload

Record the transaction in PostNow.ai, map its fields to columns, run Check, and post each row by CALL TRANSACTION under your own SAP login. Each row comes back with SAP's message and the document number.

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