SAP BW / BW/4HANA Connection
Extension Credit
This guide uses the erpl extension by the DuckDB community. Thanks to the contributors who made SAP BW/4HANA integration possible through RFC connections!
Connect flAPI to SAP BW (Business Warehouse) and BW/4HANA systems using the ERPL extension. Access InfoCubes, DSOs, and BEx queries for analytics APIs.
Prerequisites
- SAP NetWeaver RFC SDK installed
- SAP BW user with query authorizations
- Network access to BW system
Quick Start
# flapi.yaml
connections:
sap-bw:
init: |
INSTALL erpl;
LOAD erpl;
properties:
ashost: bw.company.com # BW application server
sysnr: '00' # System number
client: '100' # Client
user: ${SAP_BW_USER} # BW user
passwd: ${SAP_BW_PASSWORD} # Password
lang: EN
Connection Parameters
Same as SAP ERP:
| Parameter | Description | Required | Example |
|---|---|---|---|
ashost | SAP BW server hostname | Yes | bw.company.com |
sysnr | System number | Yes | '00' |
client | Client number | Yes | '100' |
user | SAP username | Yes | ${SAP_BW_USER} |
passwd | SAP password | Yes | ${SAP_BW_PASSWORD} |
lang | Language | No | EN |
Reading BW Data
InfoCube Queries
# sqls/sales-analysis.yaml
url-path: /sales/analysis/
request:
- field-name: year
field-in: query
required: true
validators:
- type: string
pattern: '^\d{4}$'
- field-name: region
field-in: query
required: false
template-source: sales-analysis.sql
connection:
- sap-bw
-- sqls/sales-analysis.sql
-- Query InfoCube for sales data
SELECT
/BIC/OCALYEAR as year,
/BIC/OCREGION as region,
/BIC/OCPRODUCT as product,
/BIC/OCUSTOMER as customer,
/BIC/OREVENUE as revenue,
/BIC/OQUANTITY as quantity,
/BIC/OMARGIN as margin
FROM {{conn.sap-bw.ashost}}./BIC/ASALES01 -- InfoCube technical name
WHERE /BIC/OCALYEAR = '{{params.year}}'
{{#params.region}}
AND /BIC/OCREGION = '{{params.region}}'
{{/params.region}}
DSO (DataStore Object) Queries
-- sqls/customer-360.sql
-- Query DSO for detailed customer data
SELECT
CUSTOMER_ID,
CUSTOMER_NAME,
SEGMENT,
TOTAL_PURCHASES,
LAST_ORDER_DATE,
LIFETIME_VALUE,
CHURN_RISK_SCORE
FROM {{conn.sap-bw.ashost}}./BIC/ACUST360 -- DSO technical name
WHERE ACTIVE_FLAG = 'X'
ORDER BY LIFETIME_VALUE DESC
LIMIT 1000
ADSO (Advanced DSO in BW/4HANA)
-- sqls/realtime-inventory.sql
-- Query ADSO for near real-time data
SELECT
PLANT,
MATERIAL,
STORAGE_LOCATION,
STOCK_QUANTITY,
LAST_UPDATE_TIMESTAMP
FROM {{conn.sap-bw.ashost}}./BIC/AINVENT01
WHERE LAST_UPDATE_TIMESTAMP >= CURRENT_TIMESTAMP - INTERVAL 1 HOUR
Common BW Objects
InfoCubes
Pre-aggregated analytical data:
0SD_C03- Sales analysis0PUR_C01- Purchase analysis0FI_GL_4- General ledger/BIC/A*- Custom InfoCubes