Foundations of BW Data Modeling: InfoObjects, InfoProviders and ADSOs
Introduces the core building blocks of SAP BW data modeling—InfoObjects, InfoProviders, and Advanced DataStore Objects (ADSO)—and explains why correct modeling decisions early in a project prevent costly rework later.
Explanation
SAP BW Data Modeling is the discipline of designing how business data is structured, stored, and made consumable for reporting. Every BW implementation begins with modeling decisions that determine how flexible, performant, and maintainable the resulting analytics landscape will be. At the core of BW modeling are InfoObjects, which represent the smallest reusable business entities: characteristics (like Customer, Material, Cost Center) and key figures (like Revenue, Quantity, Amount). InfoObjects carry master data (attributes, texts, hierarchies) and are reused across multiple InfoProviders, which is what gives BW its semantic consistency—once you define "0MATERIAL" or a custom characteristic like ZCUSTGRP, every model that uses it inherits the same attributes, texts, and hierarchy structure. InfoProviders are the objects that queries run against. In classic BW (and still supported in BW/4HANA in adapted form), InfoProviders included InfoCubes (multidimensional star-schema structures optimized for OLAP), DataStore Objects (flat, key-based structures for detailed data and delta handling), and MultiProviders/InfoSets for combining data logically. In BW/4HANA, the modeling landscape is simplified: the Advanced DataStore Object (ADSO) becomes the universal workhorse, capable of acting as a flat storage layer, a composite-key structure, or even exposing a reporting-optimized structure similar to a cube, depending on the ADSO type chosen (e.g., standard, write-optimized-like behavior via settings). Composite Providers replace MultiProviders/InfoSets as the union/join layer for reporting. Why this matters: a business analyst wants to see revenue by customer, region, and month, but the source data lands in disparate formats. Modeling defines how raw data is transformed into a business-consumable shape. A poorly designed characteristic (e.g., not marking a navigational attribute correctly, or building overly granular InfoObjects) can force expensive rebuilds. Conversely, over-designing (creating too many redundant InfoObjects) causes maintenance overhead and confusion for reporting teams. Key design considerations for beginners: (1) Reuse existing standard InfoObjects (SAP-delivered, prefixed with 0) wherever the business semantics match, because they come with pre-built extractors and content dashboards. (2) When custom InfoObjects are required, define the correct data type, length, and whether it needs master data (attributes/texts) or is transactional-only. (3) Decide early whether an object will be a characteristic or a key figure—this cannot be changed later. (4) For ADSOs, choose the type based on purpose: a staging layer (inbound layer in LSA++) typically uses a write-optimized-style ADSO for fast loads without activation overhead, while a reporting layer ADSO enables SID generation and full activation for query performance. Runtime/document flow: data moves from source systems through DataSources into a staging ADSO, gets transformed (currency conversion, unit conversion, lookups) into a corporate memory or harmonized ADSO, and finally lands in a reporting layer ADSO or InfoCube-equivalent structure consumed by BEx/Analysis for Office or embedded analytics tools. Understanding this flow before building objects prevents circular dependencies and duplicate transformation logic. Troubleshooting basics: if a query shows unexpected blank or duplicate values, the first check is often the InfoObject's master data (missing attributes/texts) or an incorrect key definition on the ADSO causing unintended aggregation. Production support teams regularly diagnose modeling-caused defects by tracing which InfoProvider a query reads and checking the underlying ADSO's key and data fields.
Real project scenario
A retail company onboarding a new BW/4HANA system needs to report on sales by product hierarchy and region. The team starts by checking whether standard InfoObjects (0MATERIAL, 0PLANT) cover the requirement. They find the customer's product hierarchy is non-standard, so they create a custom characteristic ZPRODHIER with attributes for category and subcategory, then build an ADSO for staging raw sales data and a second reporting-layer ADSO with SID generation enabled for use in a CompositeProvider that joins sales with a separate returns ADSO.
Common mistakes
• Creating a new custom characteristic instead of reusing an existing standard InfoObject with matching semantics, causing reporting fragmentation. • Defining a field as a key figure when it should have been a characteristic (or vice versa), which cannot be changed later without recreating the object. • Skipping master data setup (attributes/texts) on characteristics, leading to blank descriptions in reports. • Using a reporting-layer ADSO for high-volume staging loads, causing unnecessary activation overhead and slow load times. • Not planning key fields on an ADSO carefully, resulting in unwanted aggregation or overwritten records during activation.
Best practices
• Always check for a reusable standard InfoObject before creating a custom one. • Document the intended layer (staging, harmonization, reporting) for every ADSO at design time. • Enable SID generation only on ADSOs that are directly queried, not on pure staging layers. • Define key fields on ADSOs deliberately based on the natural grain of the source data. • Maintain a naming convention (e.g., Z/Y prefixes with layer indicators) so teams can identify an object's purpose without opening it.
Interview angle
Interviewers often probe whether a candidate understands the difference between characteristics and key figures, why InfoObject reuse matters for semantic consistency, and how ADSO types map to layers in LSA++. Be ready to explain, with a concrete example, why staging and reporting layers use different ADSO configurations and how that decision affects load performance versus query performance.