On this page
SAP BW extraction agent
Install and run the SAP BW extraction agent, select the collection scope, review catalog and object output, and prepare a package for modernAIze.
Use the SAP BW Metadata Audit Tool to collect the SAP BW material for a modernAIze assessment. This is the extraction agent referred to in the SAP BW platform guide: a standalone command-line program that runs on a workstation or host with access to SAP BW. It collects metadata, object definitions, and available routines through SAP RFC connectivity.
The usual workflow is to install the supplied distribution, collect a catalog, extract the object detail for the agreed scope, and review the output before uploading it to modernAIze. Business-data sampling is off by default.
Before you start
Arrange the following with the SAP/Basis team:
| Requirement | What to obtain |
|---|---|
| Agent distribution | The version supplied for the engagement, matching the operating system and architecture |
| SAP connection | Application-server hostname, system number, and client number |
| Network access | RFC connectivity from the extraction host; the port is typically 33XX, where XX is the system number |
| SAP account | An account authorized to execute the required RFC reads and read the metadata in scope |
| Extraction scope | Relevant InfoAreas, object families, and specific objects where needed |
| Output location | A writable directory for each run and an agreed handover location |
The documented authorization requirements are S_RFC, S_TABU_DIS for metadata
table reads through RFC_READ_TABLE, and read access to the required BW metadata
tables, including the RSD*, RST*, RSB*, RSZ*, and RSPC* families. Ask
Basis to determine the appropriate authorizations for the target system and
scope; successful connection alone does not establish that every object can be
read.
The agent uses a direct application-server RFC connection. Confirm that this connection mode fits the target system with Basis before scheduling collection.
Install the agent
Windows portable bundle
The Windows x64 portable bundle includes its Java runtime and SAP Java Connector
(JCo). It does not require a separate Java installation, administrator rights,
or changes to PATH.
- Obtain the supplied
bw-audit-tool-<version>-win64.zipbundle. - Extract it to a path without spaces or non-ASCII characters, such as
C:\bw-audit. - Locate
bw-audit.exein the extractedbw-auditdirectory. Keep the adjacentappandruntimedirectories together with the launcher. - Open Command Prompt and change to the launcher directory.
cd /d C:\bw-audit\bw-audit
The examples below use Windows Command Prompt (cmd.exe). The caret (^)
continues a command on the next line; it is not PowerShell continuation syntax.
Replace the example host, client, account, password, paths, and object names
with the values agreed for your extraction.
Standard distribution on Windows, Linux, or macOS
The standard distribution uses a separately installed Java 17 or later and SAP JCo 3.1 with native libraries matching the host platform and architecture.
| Platform | Preparation | Launcher |
|---|---|---|
| Windows | Extract the supplied distribution and retain its bundled native libraries | bin\bw-audit.bat |
| Linux | Obtain through SAP/Basis and place the matching libsapjco3.so in lib/native/ | bin/bw-audit.sh |
| macOS | Obtain through SAP/Basis and place the matching libsapjco3.dylib in lib/native/ | bin/bw-audit.sh |
Use the same options shown below with the appropriate launcher. In a Unix shell,
use backslash for multiline continuation and quote wildcard scope values, for
example --infoarea 'ZSALES*'. Use the distribution supplied for your engagement.
Collect the catalog
Start with a catalog-only run to establish connectivity and inspect the available metadata. The catalog is Tier 1; detailed object collection is Tier 2.
bw-audit.exe ^
--host sap-bw.example.com --sysnr 00 --client 100 ^
--user AUDIT_USER --password "%SAP_BW_PASSWORD%" ^
--output C:\audit\catalog-run ^
--tables-only
Before running the commands, provide SAP_BW_PASSWORD in the Command Prompt
session using the credential-handling procedure agreed for the extraction host.
The examples reference that environment variable instead of embedding a secret.
The agent still receives the expanded password as a command-line argument;
restrict access to the extraction host and do not save populated commands in
assessment notes or the handover package.
Check catalog/, summary.json, and audit.log under the output directory.
Confirm that the expected metadata was returned and investigate read failures.
A catalog-only run can still read substantial metadata; it is not merely a
connection test.
InfoArea scope does not restrict the Tier 1 catalog scan. The --infoarea
option selects objects for Tier 2. Combining it with --tables-only does not
produce an InfoArea-only catalog. Agree the catalog collection scope with Basis
before running the agent.
Extract the required object detail
For a first scoped extraction, collect the catalog and detail together:
bw-audit.exe ^
--host sap-bw.example.com --sysnr 00 --client 100 ^
--user AUDIT_USER --password "%SAP_BW_PASSWORD%" ^
--output C:\audit\sales-run ^
--infoarea ZSALES ^
--include-query-detail
This example keeps the full catalog, including the area hierarchy needed to resolve scope, and limits detail by InfoArea. It leaves sampling disabled. The query-detail option includes additional query element metadata in the catalog.
Select the scope
| Selection | Example | Effect |
|---|---|---|
| One InfoArea | --infoarea ZSALES | Resolve objects in that area and its hierarchy |
| Several areas | --infoarea ZSALES,ZFINANCE | Resolve the combined area selection |
| Area-name prefix | --infoarea "ZSALES*" | Match area names beginning with the prefix |
| Object families | --object-types ADSO,TRFN,QUERY | Limit catalog tables and detail families; omitting AREA can remove the hierarchy needed for area selection |
| Specific keys | --object-types IOBJ --object-keys 0MATERIAL,0CUSTOMER | Extract the named objects of the selected type |
Area matching uses the available InfoArea or Application Component assignment.
A bare * is ignored; it is not a useful scope selection. When both InfoArea
and object-key filters are supplied, the key filter narrows the objects resolved
from the areas. It does not add objects outside the area selection.
If no objects resolve for the selected areas, the detail run exits with code
2. Review the scope message and any suggested area names, check the catalog,
and confirm the assignment with a BW specialist before retrying.
Collect DataSources separately when needed
An InfoArea-scoped detail extraction does not include DataSources (RSDS). If
DataSource definitions are needed for manual source review, run a separate detail pass
without --infoarea, selecting --object-types RSDS and, where appropriate,
--object-keys for the required DataSources. Reuse a catalog that includes their
metadata, and retain the source-system context when names repeat.
Current modernAIze analysis uses the DataSource catalog and segment-field
metadata; when filtering catalog families with --object-types, include
RSDS to retain that material. It does not consume the agent’s separate DataSource object-detail
files. This extra pass supports the extraction handover and specialist review,
not a promise of additional DataSource detail in Understand.
Reuse a catalog for phased extraction
Use a previous run’s catalog when collecting detail in smaller batches:
bw-audit.exe ^
--host sap-bw.example.com --sysnr 00 --client 100 ^
--user AUDIT_USER --password "%SAP_BW_PASSWORD%" ^
--output C:\audit\detail-run ^
--catalog-dir C:\audit\catalog-run\catalog ^
--object-types TRFN ^
--object-keys EXAMPLE_TRANSFORMATION_KEY
Replace the example key with one from the catalog. --catalog-dir skips the new
catalog scan; detail extraction still connects to SAP. Use a catalog from the
same system and a suitable collection date. If the metadata has changed or the
catalog lacks required query detail, collect a new catalog with the required
options before continuing.
Keep both runs. The detail-run directory alone may omit the catalog needed for the final handover. Retain each run’s summary and log so omissions can be traced to the relevant collection step.
Command-line reference
Connection and output
| Option | Required or default | Purpose |
|---|---|---|
--host | Required | SAP application-server hostname or IP address |
--sysnr | Required | System number, for example 00 |
--client | Required | Client number, for example 100 |
--user | Required | SAP account used for extraction |
--password | Required | Password for the SAP account |
--output | Required | Directory for this run’s output and log |
--lang | EN | Language for metadata descriptions |
Scope and collection options
Sampling has its own scope. It uses ADSO and Cube providers present in the
available catalog. --infoarea and --object-keys do not restrict samples, and
--tables-only does not disable sampling. Keep --sample-rows at 0 unless
that catalog-wide sampling scope has been explicitly approved.
A catalog table can reach --max-rows without a truncation warning. Reconcile
its count with the expected inventory before using it as complete. 0 removes
the cap; agree the collection volume with Basis before changing it.
| Option | Default | Purpose |
|---|---|---|
--tables-only | Off | Collect the catalog without object detail |
--catalog-dir | Not set | Reuse the specified catalog directory and skip the catalog scan |
--object-types | All | Comma-separated object-family selection |
--object-keys | All discovered keys | Comma-separated detail-object selection |
--infoarea | Not set | Select Tier 2 objects by area, hierarchy, or area-name prefix |
--max-rows | 100000 | Row limit per catalog table read; review whether the limit affects the inventory |
--include-inactive | Off | Include inactive or deleted versions in the catalog and object-key discovery; this does not guarantee inactive-version object detail |
--include-logs | Off | Include process-chain execution-log tables |
--include-texts | Off | Include all languages in text tables instead of only the selected language |
--include-query-detail | Off | Include additional query element detail tables |
--sample-rows | 0 | Optional number of business-data rows to sample per ADSO/Cube; leave at zero for metadata-only collection |
--debug | Off | Enable additional diagnostic logging |
--help | — | Display usage information for the supplied agent version |
Some detail reads still return active versions. Verify the returned version when non-active definitions are part of the assessment.
The documented object-family codes are IOBJ (InfoObject), ADSO, CUBE
(InfoCube), TRFN (transformation), RSDS (DataSource), DTPA (data transfer
process), RSPC (process chain), QUERY (BEx query), HIER (hierarchy), HCPR
(CompositeProvider), AREA (InfoArea), APCO (Application Component), and LSYS
(source system). Organizational families provide catalog context; selecting a
family does not guarantee the same detail depth for every object.
Review and hand over the extraction
The output is organized as follows. samples/ appears only when sampling is
requested.
extraction/
├── catalog/ Metadata inventory
├── objects/ Object detail grouped by family
├── samples/ Optional business-data samples
├── summary.json Catalog/object counts and extraction errors
├── audit_metadata.json Extraction time, system, version, and configuration
└── audit.log Execution log
- Confirm the source system, collection time, agent version, and intended scope.
- Compare expected objects with the catalog and the available object-detail files. Check the relevant transformations and routines, not just object names.
- Read the summary and log for errors, omissions, and read limits. The agent can continue after an individual object fails; reaching the end of a run is not proof of complete extraction.
- For phased collection, assemble the applicable catalog and object detail while retaining the original runs and their extraction evidence.
- Review the material approved for transfer. Metadata and routines can contain business logic and infrastructure identifiers. Include business-data samples only when explicitly agreed for the assessment.
- Package the reviewed catalog and object files for the modernAIze project, following Prepare source inputs. Keep diagnostic logs and provenance available to the team reviewing the extraction.
- After analysis, reconcile the expected assets with the represented inventory and detail using the SAP BW platform guide.
A zero error count does not establish that the expected routine source was returned. Inspect the relevant object files as well as the summary.
Prepare the import package
Upload the reviewed native JSON through Folder or as one ZIP, preserving
catalog/ and objects/<family>/ paths. Do not flatten the package or select
its JSON files individually through Files: filenames alone do not identify
the catalog and object families. For example:
assessment/
├── catalog/
│ └── RSDIOBJ.json
└── objects/
└── IOBJ/
└── 0MATERIAL.json
This tree illustrates paths, not a sufficient inventory for every assessment. Include the actual catalog and all required object families. Keep diagnostic logs, summaries, provenance, and any samples in the extraction handover; select only the material approved for analysis upload. Check that the uploaded paths still contain the catalog and family directories.
A catalog entry is evidence that an object was inventoried. It does not prove that its routines, complete reporting semantics, or all dependency details were collected. CompositeProvider metadata in particular can be flat and lack the complete composition lineage visible in SAP’s native design tools.
Resolve collection problems
| Symptom | Check and next action |
|---|---|
| Launcher or runtime cannot start | Confirm the distribution type. Keep the portable bundle intact; for the standard distribution, verify Java 17+ and the matching native libraries |
NoClassDefFoundError mentioning JCo | Restore the supplied bundle and its JCo files; do not rename or move individual libraries |
UnsatisfiedLinkError: sapjco3 | Check native-library availability and architecture. The portable Windows bundle requires Windows x64 |
RFC_COMMUNICATION_FAILURE | Confirm host, system number, routing, and firewall access with Basis |
| Logon or authorization failure | Verify the client and account, then ask Basis to check the specific failed read permission |
| Empty or unexpectedly small catalog | Inspect read failures, object-type selection, language/version options, and the catalog row limit |
No objects for an InfoArea; exit code 2 | Check the area names and assignments against the catalog and review the suggestions in the scope message |
| Run completes successfully with no object detail | Type or key filters can leave no objects without a nonzero exit; compare actual detail files with the expected selection |
| Catalog present but object detail missing | Check whether --tables-only was used, whether filters excluded the objects, and whether individual detail reads failed |
| Query context missing | Check whether the catalog was collected with --include-query-detail; reusing an older catalog does not add these tables |
| Tables marked as skipped | Review the recorded reason. Some tables are unavailable on particular BW versions; skipped detail is a coverage limitation to investigate |
Retain the relevant summary, log, agent version, and object identifiers when requesting help. Confirm the missing source material with the SAP team before treating an extraction gap as a limitation of the modernAIze analysis.