Quick answer

What are the data upload methods in SAP?

SAP data upload methods are batch input (session or call transaction), direct input, BAPIs over RFC, IDocs, LSMW, the S/4HANA Migration Cockpit, OData and SOAP APIs, and SAP GUI scripting or eCATT. Each one runs SAP's application logic; a direct table write does not. PostNow.ai uploads from Excel through BAPIs, recorded transactions and released APIs.

  • The S/4HANA status differs per method. SAP Note 2287723 calls LSMW not recommended on S/4HANA, the Migration Cockpit is SAP's tool for the initial load, and the public cloud edition integrates through released APIs.
  • Choosing one for a specific Excel upload? The method per object is on SAP mass upload from Excel.

This page is the reference list of SAP data transfer techniques, the ways to upload data in SAP that SAP itself provides: one definition each, the mechanics that set them apart, and each one's S/4HANA status in one table. For the steps of a first upload, see how to upload data into SAP from Excel; for migration tools rather than load methods, see SAP data migration tools.

What the SAP data upload methods are

PostNow.ai, an Excel add-in, is a front end on top of these SAP data upload methods: it posts each row through a BAPI, a recorded transaction or a released API. The other ten rows are the ways SAP itself takes data in.

MethodWhat it isWhere you meet it
Excel add-in (PostNow.ai)Posts each spreadsheet row through a BAPI over RFC, a recorded transaction replayed as batch input, or a released OData or SOAP API, and writes SAP's answer back to the rowPostNow.ai ribbon in Excel; SHDB for recordings
Batch input sessionA program stores screen-by-screen data (BDCDATA) in a session, which is processed later with a log per transactionSHDB, SM35, BDC_OPEN_GROUP / BDC_INSERT / BDC_CLOSE_GROUP, RSBDCSUB
Call transactionA program runs the transaction at once with the same screen data and collects SAP's messagesCALL TRANSACTION ... USING, table BDCMSGCOLL
Direct inputSAP-delivered programs that skip the screens and call function modules that run the checks, in the background, with a restart functionBMV0; RMDATIND (MM), RFBIBL00 (FI), RVAFSS00 (SD), RAALTD11 (AM), RKEVEXT0 (CO-PA)
BAPI over RFCA released, remote-enabled function module of a business object, with messages in a RETURN table and an explicit commitBAPI Explorer (transaction BAPI), BAPI_TRANSACTION_COMMIT
IDoc / ALEA message per business document that an inbound function module posts, with a status per IDocWE20 partner profiles, WE02, WE19, BD87
LSMWA workbench that maps a legacy file onto one of four import methods: standard batch or direct input, batch input recording, BAPI, or IDocTransaction LSMW
Migration CockpitS/4HANA's tool for the initial data load, with delivered migration objects filled from staging tables or transferred directly from an SAP source systemMigrate Your Data app, LTMOM
OData and SOAP APIsReleased S/4HANA APIs that create and change business objects over HTTPSAP Business Accelerator Hub, e.g. API_BUSINESS_PARTNER
SAP GUI scriptingA desktop script, usually VBA or VBScript, that drives SAP GUI screens through the scripting APIRZ11 parameter sapgui/user_scripting, SAP Logon options
eCATTSAP's test tool, whose scripts can replay transactions and call function modules with test dataSECATT, SCC4 client setting

Two names cause most of the confusion. BDC (batch data communication) is the older name for batch input, so "BDC" covers both the session and the call transaction variant. LTMC was the transaction of the first Migration Cockpit and is replaced by the Migrate Your Data app.

How PostNow.ai uploads through BAPI, recording and API methods

PostNow.ai is an Excel add-in that posts through three SAP data upload methods, chosen per template by the designer who builds it. Operators fill the sheet and run it; the method underneath does not change their steps.

1. BAPI over RFC

The template calls the BAPI for each document and reads its RETURN table. On Run, PostNow.ai calls BAPI_TRANSACTION_COMMIT only when SAP returns no E or A message, and rolls back otherwise. Simulate calls the BAPI and then BAPI_TRANSACTION_ROLLBACK, so nothing is committed.

2. Recorded transaction (batch input)

The designer records the transaction once in SHDB. Run replays the recording with CALL TRANSACTION in an SAP GUI session on the user's PC, with synchronous update, so each row's messages and document number come back before the next row starts. Simulate replays the screens without the final save.

3. Released OData and SOAP APIs

API mode posts rows through the OData V2, OData V4 and SOAP APIs SAP has published, the route S/4HANA offers for objects maintained in Fiori apps.

4. The same checks around every method

Validate checks the sheet offline first: required fields, type, length, dates, decimals and allowed values. Run writes SAP's message to each row's Run Log and the document number to its own column, and Retry Failed re-posts only the rows marked ERROR.

PostNow.ai logs in to SAP GUI only on the user's own computer, with the user's own stored login, when the user starts the action: Record, Run, Debug or Call Transaction. Every posting therefore runs under that user's SAP authorizations. Which of the three methods fits a given object is decided on SAP mass upload from Excel, and the trade-offs between the first two on BAPI vs BDC in SAP.

Batch input: session vs call transaction vs direct input

PostNow.ai's recorded templates use the call transaction variant of batch input. The session method and direct input are the two other classic SAP data transfer methods, and the three differ in when the data posts and how errors come back.

Batch input sessionCall transactionDirect input
How the data reaches SAPThe program writes BDCDATA into a session; SM35, or RSBDCSUB in the background, processes it laterThe program runs CALL TRANSACTION ... USING with the BDCDATA table at onceA delivered program calls function modules that check and write the data; no screens are processed
Database updateSynchronousSet by the program: A (asynchronous, the default), S (synchronous) or L (local)Written by the program's function modules
ErrorsA log per session; failed transactions stay in the session for correction and reprocessingMessages returned to the program in a BDCMSGCOLL table, plus a return code; the program decides what to logBackground only; a restart function in BMV0 continues an interrupted run
FitsLoads that need a reprocessing log in SAPUploads that need each record's result before the next oneHigh-volume standard loads for objects that have a program

The update mode is the detail that catches people. With the default A, the update runs as a normal COMMIT WORK without waiting, so a success message tells the program the transaction finished, not that the database update did. With S the call waits, as COMMIT WORK AND WAIT does, which is why PostNow.ai replays with S.

Batch input needs classic SAP GUI screens (dynpros), and a recording is tied to the screen sequence it was made on. How to record so the replay holds is in the BDC recording guide. Direct input exists only where SAP delivered a program for the object; the SAP Help list names RMDATIND for the material master, RFBIBL00 for FI documents, RVAFSS00 for SD, RAALTD11 for assets and RKEVEXT0 for CO-PA, each with its own program documentation.

BAPI and RFC

PostNow.ai's BAPI templates call the BAPI over RFC, the same interface any external program uses. A BAPI is a method of a business object in SAP's Business Object Repository, implemented as a remote-enabled function module and released by SAP for use from outside.

  • No screens. The BAPI takes structured parameters and tables, so screen changes, popups and field order do not affect it.
  • Messages in RETURN. Errors, warnings and success come back in a BAPIRET2 table, one line per message.
  • The caller commits. Most create and change BAPIs save nothing until the caller runs BAPI_TRANSACTION_COMMIT, and BAPI_TRANSACTION_ROLLBACK discards the work.
  • Callers. Any RFC client: an Excel add-in, SAP .NET Connector, SAP Java Connector, Python's pyrfc, or another SAP system.

Not every object has a BAPI that suits a load. SAP Note 1135984, for example, says BAPI_PRICES_CONDITIONS is not released, which is why condition records are usually loaded through a VK11 recording. Customer-written RFC function modules work the same way technically, but SAP does not maintain them. The full BAPI versus batch input comparison is on BAPI vs BDC in SAP, and calling a BAPI from a spreadsheet step by step on call SAP BAPIs from Excel.

LSMW and its four import methods

PostNow.ai templates take over the recurring loads that teams used to build in LSMW; the LSMW alternative page shows how. LSMW (Legacy System Migration Workbench) reads a file, maps and converts its fields, and hands the result to one of four import methods:

LSMW import methodWhat actually posts
Standard batch input or direct inputAn SAP-delivered program, such as RMDATIND for the material master
Batch input recordingA recording of the transaction, run as a batch input session
Business object method (BAPI)A BAPI, called through an IDoc that LSMW generates
IDocAn inbound IDoc of the chosen message type

LSMW itself checks nothing in SAP: the import method does, so the log, the error handling and the S/4HANA behaviour are those of the method chosen. On S/4HANA on-premise, LSMW is still in the system, but SAP Note 2287723 calls its use not recommended and at the customer's own risk and points to the Migration Cockpit for migration. The 14 steps of an LSMW object and its common errors are on the LSMW page.

Migration Cockpit: staging tables, direct transfer and Migrate Your Data

PostNow.ai loads Excel data into SAP during a project and after go-live; the SAP S/4HANA Migration Cockpit is SAP's tool for the initial load of a new implementation. SAP's documentation describes it as designed for an initial load and not for keeping data in sync between systems.

  • Migration objects. SAP delivers one per business object, such as material, supplier or open item, and each object calls SAP's own APIs to create the data.
  • Two approaches on-premise. Migrate Data Using Staging Tables, filled from SAP's XML templates or from your own tools, or Migrate Data Directly from SAP System, which reads an SAP ERP source.
  • The app. The Fiori app Migrate Your Data replaces transaction LTMC; from S/4HANA 2021, LTMC cannot create new projects (KBA 3355075).
  • Simulation. A simulation runs the object's checks and writes no data. LTMOM adjusts delivered objects or builds your own.

Changing existing records is outside the Cockpit's scope, which is where business-as-usual loads, and tools such as PostNow.ai, take over. Templates, mock loads and Cockpit errors are covered on SAP S/4HANA Migration Cockpit.

IDoc and ALE

PostNow.ai posts data a person prepares in Excel and returns the result to the row at once; an IDoc is the SAP data upload method for data another system sends. An IDoc is one business document in SAP's intermediate format, typed by a message type such as MATMAS (material), DEBMAS (customer), CREMAS (vendor) or ORDERS (sales order).

  • Inbound processing. The partner profile in WE20 assigns each inbound message type a process code, which names the function module that posts it, either immediately or by a background job.
  • Status per IDoc. Status 53 means the application document was posted, 51 means it was not, and 64 means it is ready to be passed to the application. WE02 shows the IDocs with their messages.
  • Correction and test. BD87 reprocesses IDocs after the cause is fixed; WE19 builds a test IDoc from an existing one.
  • Where it fits. EDI with customers and suppliers, ALE distribution between SAP systems, and middleware: the sender queues the document and does not wait for the posting.

LSMW can also write a file into IDocs, which is how its IDoc and BAPI methods post. On S/4HANA on-premise, IDocs remain in use; SAP's S/4HANA Cloud public edition integrates through the released APIs in the next section.

APIs and OData in S/4HANA

PostNow.ai's API mode posts Excel rows through these released OData V2, OData V4 and SOAP APIs. S/4HANA exposes released APIs for its business objects, listed with their operations and fields on the SAP Business Accelerator Hub (api.sap.com); API_BUSINESS_PARTNER for business partners is one of them.

APIs matter most where the classic routes stop. In S/4HANA, customers and suppliers are maintained as business partners in transaction BP, XD01 and XK01 hand over to it, and SAP does not support batch input for BP (KBA 1951318), so the business partner APIs or BAPIs are the route; the SAP Business Partner automation page covers it. A process that lives only in a Fiori app has no dynpro to record, so its OData service is the way in. In SAP S/4HANA Cloud public edition, released APIs are the integration route.

SAP GUI scripting and eCATT

PostNow.ai uses SAP GUI scripting to log on, start a recording and start its replay report in SAP GUI; the data itself posts inside SAP, through the replayed recording. A GUI script used as an upload method works differently: it types each value into the screens the way a user would.

SAP GUI scripting has to be switched on twice, on the server with the RZ11 parameter sapgui/user_scripting and in SAP Logon on the PC, as the enable SAP GUI scripting page shows. A VBA or VBScript macro then fills fields and presses buttons, and its result is whatever text it reads from the status bar. Every SAP check runs, because the real transaction runs, but a new popup or a moved field stops the script. The options for teams moving off macros are on SAP GUI scripting alternative.

eCATT (transaction SECATT) is SAP's test tool. Its scripts can replay a transaction with a test data container or call function modules, so some teams have used it to load data. It is built for tests: clients can restrict or forbid eCATT in SCC4, and test tools are covered on SAP test automation.

SAP data upload methods compared: result per record, change documents, S/4HANA status

PostNow.ai adds a result per Excel row on top of the SAP interface it calls. The other rows compare the SAP data transfer methods themselves on what a project, an auditor and an S/4HANA conversion ask about: how data enters, what comes back per record, whether change documents are written, and the S/4HANA status.

MethodEnters SAP throughResult per recordChange documentsS/4HANA status
PostNow.ai (Excel add-in)A BAPI over RFC, a recording replayed with CALL TRANSACTION, or an OData or SOAP APISAP's message and the document number, written to the Excel rowWritten by SAP's application logic, as for manual entryECC and S/4HANA
Batch input sessionThe transaction's screens, processed from SM35Session log per transactionYes, by the transactionWorks on SAP GUI transactions; not for BP or Fiori-only apps
Call transactionThe transaction's screens, at onceBDCMSGCOLL messages and a return codeYes, by the transactionAs batch input session
Direct inputFunction modules called by a delivered programProgram log; restart in BMV0Per the program's documentationCheck the program for your release
BAPI over RFCA released function moduleRETURN tableYes, where the object keeps themCarries over; some add fields, such as the 40-character material number
LSMWOne of its four import methodsThat method's logAs the import methodNot recommended, at own risk (SAP Note 2287723)
Migration CockpitDelivered migration objects that call SAP's APIsMessages per migration object instanceAs the APIs it callsSAP's tool for the initial load; Migrate Your Data app
IDoc / ALEAn inbound function module via the process codeIDoc status (53 or 51) with messagesYes, by the posting function moduleIn use on-premise; public cloud uses released APIs
OData / SOAP APIA released API over HTTPResponse with SAP's messagesYes, by the application logicSAP's route for Fiori-maintained objects and the public cloud
SAP GUI scriptingThe SAP GUI front end, field by fieldStatus bar text the script readsYes, by the transactionWorks where scripting is enabled on server and PC
eCATTTransaction replay or function module calls in a test scripteCATT logYes, by the transaction or moduleA test tool; clients can forbid it in SCC4

Choosing among these for one Excel upload is a different question, answered per object on SAP mass upload from Excel. Comparing migration products, such as SAP Data Services or the Migration Cockpit against third-party tools, is on SAP data migration tools.

Why direct table updates are not an SAP data upload method

PostNow.ai posts every row through a BAPI, a transaction or a released API, so SAP's checks run on each record. Writing values straight into SAP tables, with an ABAP INSERT or UPDATE or an edit in a table display tool, bypasses every layer the methods above go through.

  • Checks. Values no transaction would accept, such as a plant that does not exist, go in unchallenged.
  • Number ranges and locks. No number is drawn and no lock is set, so keys can collide with a user working at the same time.
  • Dependent tables. The other tables the transaction would have updated, from texts to totals, no longer match.
  • Change documents. Nothing is written to CDHDR and CDPOS, so the change has no audit trail.

The update does not fail; it succeeds, and the damage shows later as reports that do not reconcile or a transaction that refuses a record for a reason no one can trace. SAP Note 1420281 (SE16N: Deactivating &SAP_EDIT) switched off the function code that let users change table entries in SE16N. If no method on this page can make a change, raise it with SAP support rather than editing the table.

Frequently asked questions

What are the data upload methods in SAP?
PostNow.ai, an Excel add-in, uploads to SAP through three of the SAP data upload methods: BAPIs over RFC, recorded transactions replayed as batch input with synchronous update, and released OData and SOAP APIs, with SAP's message and document number written back to each row. The full list is batch input (session or call transaction), direct input, BAPI and RFC, IDoc and ALE, LSMW, the S/4HANA Migration Cockpit, OData and SOAP APIs, SAP GUI scripting and eCATT. Each runs SAP's application logic; a direct table write does not and is not an upload method.
What is the difference between batch input (session) and call transaction?
A batch input session stores the screen data and is processed later in SM35 or by RSBDCSUB, with a log per transaction, failed transactions kept for reprocessing and a synchronous database update. CALL TRANSACTION USING runs the transaction at once and returns SAP's messages to the calling program in a BDCMSGCOLL table; the program sets the update mode to A (asynchronous, the default), S (synchronous) or L (local). PostNow.ai replays recordings with call transaction and synchronous update, so each row's result is final before the next row starts.
What is direct input in SAP?
Direct input is a transfer technique in which an SAP-delivered program writes the data through function modules that run the necessary checks, without processing screens and without creating a session. It runs in the background only and has a restart function, maintained and started in transaction BMV0. It exists only for objects with a delivered program, such as RMDATIND for the material master and RFBIBL00 for FI documents.
Is LSMW still supported in S/4HANA?
LSMW is still available in S/4HANA on-premise, but SAP Note 2287723 says its use is not recommended and at the customer's own risk, and SAP points to the Migration Cockpit for migration. Its import methods also meet S/4HANA changes: customer and vendor recordings, for example, no longer fit because customers and suppliers are maintained as business partners. In S/4HANA Cloud public edition, data migration runs through the Migrate Your Data app.
What is the difference between LTMC and LSMW?
LTMC was the transaction of the S/4HANA Migration Cockpit, which loads data through SAP-delivered migration objects from staging tables or directly from an SAP source system; it is replaced by the Migrate Your Data app, and from S/4HANA 2021 LTMC cannot create new projects. LSMW is the older workbench in which you build each object yourself on batch input, direct input, BAPI or IDoc. The Migration Cockpit is SAP's recommended tool for the initial load; LSMW is not recommended on S/4HANA.
When is an IDoc the right upload method?
An IDoc fits when another system sends the data: EDI messages from customers and suppliers, ALE distribution between SAP systems, or middleware. Each IDoc is queued with its own status, 53 when posted and 51 when not, and can be reprocessed in BD87 after the cause is fixed. For a spreadsheet a person prepares, a BAPI or a recorded transaction returns each record's result at once.
Why should you never write directly to SAP tables?
A direct table write skips everything the transaction does: field checks against check tables, number range assignment, locks, updates to dependent tables and change documents. The write succeeds, and the inconsistency surfaces later as reports that do not reconcile or records a transaction refuses. Every SAP data upload method on this page goes through SAP's application logic instead.
Which upload method creates change documents?
Every method that runs SAP's application logic writes the change documents the object keeps, in tables CDHDR and CDPOS: batch input, BAPIs, IDocs, APIs, the Migration Cockpit, GUI scripting, and LSMW through its import method. Direct table writes create none. PostNow.ai posts through BAPIs, recordings or APIs, so its changes appear in the change history under the user who ran them, as manual entries do.
SAP's own interfaces. Your Excel file.

Upload SAP data from Excel through BAPIs and recordings

Pick the BAPI, the recorded transaction or the released API per template, simulate the file, and get SAP's answer back on every row.

Start free trial
  • 14-day free trial
  • Works with ECC and S/4HANA
  • Runs under each user's own SAP login