SAP MDG: The Beginner Handbook

Concepts first, then clicks. Every step says what you do and why you do it.

How to use this handbook. Read sections 1 to 3 for the big picture, then do 4 to 9 in order in a lab system, because each builds on the last (model, then process, then screen, then rules, then quality, then delivery). Sections 10 to 12 cover people, data loading and real project life. Keep section 14 open as a dictionary and use 15 to test yourself. Menu names differ slightly between releases; where a path does not match, search MDGIMG with the Position button.

1. What is MDG?

Master data (customers, suppliers, materials, cost centers) is the data many processes share. If two people create the same customer twice, invoices and reports go wrong. SAP Master Data Governance (MDG) is a hub where master data is requested, checked, approved and only then released to the systems that use it.

Core idea: nobody writes directly into the real tables. Every change is a Change Request (CR). Data waits in a staging area, passes checks and approval, and is then copied to the active area (the real data) and replicated out.
RequesterChange Request+ staging dataChecks: rules,duplicatesApprovalActivation(active area)Replication(DRF)
Life of a master data record in MDG.

The building blocks you will meet

BlockMeaning
Data modelDefines the objects and fields (e.g. Material, Plant data)
Process modelChange request types, workflow, who approves
UI modelThe screens users see
Business rulesValidations (check) and derivations (auto-fill)
Data qualitySearch and duplicate checks
DRFData Replication Framework: sends approved data to other systems

Configuration lives in MDGIMG (switch to Classic Mode → Central Governance → General Settings). Users work in NWBC (NetWeaver Business Client) or Fiori.

Deep dive: what MDG can do and where it runs

SAP MDGCentral Governancecreate/change via CR(this handbook)Consolidationload, match, mergemany sourcesMass Processingchange thousandsof records at onceData Quality Mgmtrules, search,duplicates, enrichment
Four capabilities; sections 4 to 9 mostly serve Central Governance.
DeploymentMeaningTrade-off
HubMDG runs in its own system; ERP systems receive data by replicationClean separation, many targets; needs DRF
Co-deploymentMDG runs inside the ERP/S/4HANA system that owns the dataSimpler, no replication to itself; ties MDG to that system's release
Cloud / hybridGovernance delivered as a cloud service with connected systemsLess to run; configuration options differ

Seeing the three deployments

1. Hub deployment Users in NWBC / Fiori MDG hub systemstaging + active master dataworkflow, rules, duplicate check ERP system AERP system BCRM / other DRF replicationDRF replication
Hub: one governance system, many receivers. Data is approved once and sent out. Needs section 9 (DRF).
2. Co-deployment Users in NWBC / Fiori One ERP / S/4HANA system MDGstaging, workflow, rulesduplicate check ERP master dataMARA, BUT000, CSKS(active data) activation
Co-deployment: activation writes straight into the same system's tables, so you can check MARA right away. Other systems can still be fed by replication.
3. Cloud / hybrid Users (browser) Cloud MDG service governance, workflow,rules, duplicate checkhosted and updated by SAP On-premise ERP(secure connection)Cloud apps(APIs / services) Hybrid = governance in the cloud, some targets on-premise, some in the cloud
Cloud / hybrid: no MDG server to run; connectivity and replication options depend on the product edition.
PictureChoose it when
HubSeveral ERP systems need the same clean master data
Co-deploymentOne main ERP owns the data and you want a simple setup
Cloud / hybridYou prefer SAP-operated software and have cloud or mixed targets

Training systems are usually co-deployed, which is why you can check results directly in MARA or BUT000. In a hub you would check the hub's active data, then the target after replication.

2. Host file setup for NWBC

NWBC opens through a web address like https://mdghost.company.com:44300/nwbc. If your computer cannot translate that name into the server's IP address (no DNS entry), the page will not open. The hosts file is a local phone book that fixes this.

Browserhosts file10.10.1.25 mdghostmdghost.company.comSAP MDG server/nwbc service
Name → IP lookup happens locally before the request leaves your PC.
  1. Get the server IP, fully qualified hostname and HTTPS port from your Basis team.
  2. Open Notepad as administrator (the file is protected). Open C:\Windows\System32\drivers\etc\hosts.
  3. Add one line at the bottom: 10.10.1.25 mdghost.company.com mdghost (IP, full name, short name). Save.
  4. Browse to https://mdghost.company.com:44300/nwbc. Accept the certificate warning if your lab uses a self-signed certificate. Log in with client, user and password.
  5. You should see roles such as Business Partner Governance or Material Governance. Empty? Your user lacks PFCG roles.
Page not found? Check, in order: server running, /nwbc service active in SICF, hosts line typo, port, VPN.

Deep dive: what happens when you open the NWBC URL

Part of the URLMeaning
httpsEncrypted. Needs a certificate; labs often use a self-signed one, so browsers warn
mdghost.company.comThe name your hosts file (or DNS) translates to an IP
:44300HTTPS port of the SAP ICM. Ask Basis; SMICM → Services lists it
/nwbcPath of the NWBC web service, activated in SICF
?sap-client=100&sap-language=ENOptional: pick client and language so you skip the logon choice

Hands-on: complete setup and test

  1. Collect details from Basis: IP, FQDN, HTTPS port, client number, your user.
  2. Edit hosts. Windows: C:\Windows\System32\drivers\etc\hosts. Mac/Linux: /etc/hosts (use sudo). One line per server, IP FQDN shortname. Do not add https:// or a port; the hosts file holds only names.
  3. Flush the cache. Windows: ipconfig /flushdns in a command prompt.
  4. Test the name. ping mdghost.company.com must show your IP. If the IP is different, another entry or DNS wins; remove the duplicate.
  5. Test the port. Browse to https://mdghost.company.com:44300/sap/public/ping. A short "OK" style answer proves the server and port work before you blame NWBC.
  6. Open NWBC (/nwbc), log in. Menu entries depend on your PFCG roles.
SymptomCause and fix
Site cannot be reached / timeoutWrong IP, VPN off, or firewall. Ping first.
Name not resolvedTypo in hosts, file saved as .txt, or not saved as administrator.
Certificate warningSelf-signed certificate; proceed (lab) or import the certificate (company standard).
404 / service not found/sap/bc/nwbc inactive in SICF; Basis activates it.
Logon works, no MDG menuMissing roles for Business Partner / Material / Financial Governance. Ask for them in PFCG.
Blank screen in Chrome/EdgeClear cache, allow pop-ups for the site, or try the NWBC desktop client.
NWBC (web) is the classic MDG front end; newer releases also give Fiori apps. The data model, rules and workflow are the same underneath, so what you learn here carries over.

3. The three domains

A domain is a ready-made package for one kind of master data: a standard data model, change request types, UI and rules.

MDG-BP · data model BPBusiness Partner = one partyRoles: Customer, SupplierParts: Header, Address, BankIdentification, Tax numbersDuplicate check is key here MDG-FI · e.g. data model 0GG/L AccountCost Center, Profit CenterCost Element, Internal OrderHierarchies (groups)Chart of accounts + company code MDG-M · data model MMMaterial (root entity)Basic data, Descriptions, UnitsPlant data (MARC) per plantSales / Purchasing / StorageMaterial type, industry sector
Three domains, three standard data models.

MDG-BP

Customers and suppliers are both Business Partners with roles. You create the partner once and add roles, so name and address are never duplicated. Use Business Partner Governance → Search Business Partner → New in NWBC.

MDG-FI

Governs finance objects: accounts, cost centers, profit centers, and their groups. Typical changes: a new cost center, or an account opened in another company code.

MDG-M

Governs material master. A material has a general part (basic data) and many dependent parts (plant, storage, sales). Section 4 uses this domain as the worked example.

Deep dive: MDG-BP, the Business Partner

SAP replaced separate customer and supplier masters with one object: the Business Partner. The partner holds identity once; roles say how it is used (customer, supplier, contact...). In S/4HANA, Customer-Vendor Integration (CVI) keeps the classic customer and supplier tables filled behind the scenes.

Business Partnercategory + grouping + number Addressmany, one standardBank detailsmany, by bank IDIdentificationtax no, registrationRolescustomer, supplierRole datacompany code, sales
One partner, many dependent parts.

Scenario: create a supplier with bank data

  1. NWBC → Business Partner Governance → Search Business Partner → New → Organization → Create. The duplicate check (section 8) runs first.
  2. Fill Name, Search term, Grouping, and the address (street, city, postal code, country, region, language). Bad addresses are the top cause of failed validations.
  3. Add the Supplier role. Company code data appears: reconciliation account, payment terms, payment methods.
  4. Open Bank Details → add a row: country, bank key (IFSC for India), account number, account holder, and a Bank Details ID to tell several accounts apart. Banks are checked against the bank master; an unknown bank key raises an error.
  5. Check and fix messages (this is where your BRF+ derivation can fill the bank country).
  6. Submit, approve as per workflow, then confirm in SE16N: BUT000 (partner), LFA1 (supplier view) and BUT0BK (bank).

Deep dive: MDG-F, finance objects

ObjectLevelKey points
G/L accountChart of accounts (SKA1) and company code (SKB1)Chart level: number, type, group. Company code level: currency, tax category, field status
Cost centerControlling area (CSKS)Needs controlling area, validity dates, responsible person, category, hierarchy node, company code, profit center
Profit centerControlling area (CEPC)Segment and hierarchy node
Hierarchies / groupsStandard hierarchyPlace every object under a node so reports roll up

Finance objects are time dependent: a cost center is valid from-to. MDG-F handles this with editions: a change request belongs to an edition with a validity date, which lets you plan next year's reorganisation without touching today's data.

Scenario: create a cost center

  1. Gather: controlling area, cost center ID (for example YB1001), name, valid-from date, category, hierarchy node, company code, profit center, responsible person.
  2. NWBC → Cost Center Governance (role names vary) → Create Cost Center.
  3. Enter the data above. The hierarchy node places the cost center in the group structure; without it reports miss it.
  4. Check, Submit and approve through the workflow.
  5. Verify: KS03 displays the cost center; SE16N table CSKS shows the row.
  6. Test negative cases: unknown profit center, past valid-from, missing hierarchy node. Each should return a message.

Deep dive: MDG-M, the material master

MaterialMARA (general)Descriptions MAKTUnits MARMPlant MARCStorage location MARDSales org MVKEValuation MBEW
General data once; plant, storage, sales and valuation per organisational unit.

The material type (raw material, finished product, trading goods) decides which views exist. The industry sector sets screen defaults. Each organisational level (plant, storage location, sales org, valuation area) gets its own row, which is why one material can behave differently per plant.

Scenario: extend a material to a new plant

  1. Pick an existing material (active, created earlier) and a plant that exists in the system.
  2. NWBC → Material Governance → Search Material → open it → Change Material (starts a change CR).
  3. Go to the Plant tab → add a row for the new plant. Maintain procurement type, MRP type, profit center, and any required storage location.
  4. Add Valuation data if the plant has its own valuation area (price control and standard price).
  5. Check, Submit, approve.
  6. Verify: MM03 now lets you select the new plant; SE16N MARC has a new row with the material and plant; MBEW if valuation was added.
Why a CR for a small change: every plant extension changes stock and costing behaviour, so the business wants an approval trail.

4. Data modelling and SMT mapping

A data model is the blueprint: which objects (entity types), which fields (attributes) and how they link (relationships). Path: MDGIMG → Central Governance → General Settings → Data Modeling → Edit Data Model.

Entity storage/use types

TypeRoleExample
1Root entity, owns the main keyMaterial
2Referenced object, its key is only a non-key field in the childPRCTR (profit center)
3Qualifier: its key becomes part of the child's keyWERKS (plant)
4Dependent child holding the dataMARCBasic (table MARC)
MaterialType 1 (root)WERKS PlantType 3PRCTR Profit CtrType 2MARCBasicType 4 Leading 1:N (key inherited)Qualifying 1:NReferencing 0:N
MARCBasic = material key + plant key (qualifying) + a reference to the profit center.

Walkthrough: inspect the standard MM model (display only)

  1. MDGIMG → Data Modeling → clock icon on Edit Data Model. Switch to Display; choose MM. Why display: standard models must not be changed.
  2. Entity Types → Position → search MARCBasic. Check its type (4).
  3. Open Attributes. These fields come from table MARC. Verify in SE11: MARC has field FPRFM.
  4. Relationships → Position → search Material (leading), WERKS (qualifying), PRCTR (referencing); find MARCBasic under To-Entity Type.
  5. Visualize Data Model → Ctrl+F → MARCBasic to see the tree.

Walkthrough: build a custom data model

  1. Edit Data Model → Inactive Data Models → New Entries: name YB (exactly 2 characters), description, active area MDG, prefix YBX (used to name generated objects). Save in a package.
  2. Entity Types → New Entries → your entity, storage type 1.
  3. Attributes → New Entries; reuse data elements from MARA so field definitions match standard SAP.
  4. Activate. SAP generates staging tables and structures for each entity, named with your prefix.
  5. Verify with SE38 program USMD_DATA_MODEL.
Test data first: MM01 creates a material (industry sector, material type, Basic Data 1 with description, unit, group 0001). Check it in SE11 tables MARA, MAKT, MARM. Use MM02 to change, MM03 to display.

Structures and SMT mapping

Staging data is shaped differently from the real SAP tables. The Service Mapping Tool (SMT) holds the mapping rules that copy fields between them.

Staging structurefield MATERIALSMT mappingMDG_BS_MAT_MARCBASICActive table MARCfield MATNR _2PP_2PP_2STA_2STA
_2PP: staging → active. _2STA: active → staging.
  1. MDGIMG → Data Modeling → Generate Data Model-Specific Structures: select the model, view Structures (one per entity, prefixed) and Mapping (copy a name from the Staging → Active column).
  2. Create and Edit Mappings → Open Mapping → paste the name → open MDG_BS_MAT_MARCBASIC → Details → Transformations → 0001 Field Mapping.
  3. Select staging field MATERIAL on the right, MARC field MATNR on the left, click Map.

Standard mappings are locked; you can edit mappings only for custom data models.

Deep dive: what really happens to your data

Understanding the two storage areas explains almost every MDG behaviour.

Action in NWBCWhat the system doesWhere data sits
SaveWrites your entries under the CR number. Nothing visible to other SAP processes.Staging
CheckRuns data model checks, BRF+ and BAdI validations, derivations, duplicate check.Staging (derived values are written back)
Submit / ApproveWorkflow moves the CR; approvers see the staged data.Staging
Activation (final step)Mapping _2PP copies staging to the real objects, using standard SAP logic so normal application checks run again.Active (MARA, MARC, BUT000...)
ReplicationDRF sends the active data out.Target systems
Consequence: if you create a material with MM01 directly, MDG never saw it. In a governed landscape, direct creation is blocked by authorizations; users must go through a CR.

Scenario: design a small custom model on paper first

Before touching SAP, write the design. Example: a training "product" master YB with plant-specific data.

EntityTypeKeyAttributesWhy this type
YPROD1PRODIDDESCR, MATKL, MEINSMain object, created and approved by users
WERKS3WERKS(none, check table T001W)Plants already exist; only needed as part of the child key
PRCTR2PRCTR(none)Optional link; not part of the key
YPRODPL4PRODID + WERKSPRCTR, MINLOTOne row per product per plant

Relationships: YPROD → YPRODPL leading; WERKS → YPRODPL qualifying; PRCTR → YPRODPL referencing. Rule of thumb: if the child key must be unique per something, that something is a type 3 qualifier.

Custom model: the execution checklist with checks

  1. Create the model (Inactive Data Models → New Entries). Check: name is 2 characters, active area MDG, prefix chosen, saved in a transportable package (not $TMP if you will transport).
  2. Create entity types. Check: each has a storage/use type; every entity (except 2 and 3 used only as keys) needs at least one key attribute.
  3. Create attributes. Mark key attributes; set data element (reuse SAP elements such as MATKL so value helps and conversions come for free). Check: no attribute without a data element.
  4. Create relationships exactly as in your table. Check: the To-Entity shows the child.
  5. Activate. If it fails, read the log: typical causes are a missing key attribute, a relationship pointing to a missing entity, or a name clash.
  6. Generate structures (Generate Data Model-Specific Structures) and look at the Structures and Mapping tabs. Check: one structure per entity with your prefix.
  7. Verify with USMD_DATA_MODEL in SE38, which prints the model so you can compare with your design table.

Mapping in depth

A mapping is a list of "this source field goes to that target field" rules, grouped in transformations. A field mapping (like 0001) is the simplest: copy value X to Y. Reasons mappings exist: field names differ (MATERIAL vs MATNR), structures differ (one staging entity feeds several tables), or values must be converted. Edit them in the SMT editor (Create and Edit Mappings).

Real-world habit: never edit standard mappings. Extend through your own data model or the supported enhancement points, then regenerate structures so staging and active stay in sync.
SymptomLikely cause / fix
Model will not activateMissing key, bad relationship, name clash. Read the activation log.
New field not on the screenData model is done, but UI configuration still needs the field (section 6).
Value saved but not in active tableNo mapping rule for that field. Add it in the mapping (custom models only).
Cannot edit standard modelBy design. Display only.

5. Process modelling

The process model decides how a change travels: which Change Request Type, which workflow steps, who approves. A CR type links a data model, a main entity and a workflow.

CreateCheckSubmitRevision?ApproveActivateReplicate send for revision
Static workflow: fixed steps, fixed processors.

Static workflow CR, step by step

  1. Create CR type (Process Modeling → Change Requests → Create Change Request Type): new Z entry, data model MM, description, Single Object, main entity Material. Why: this is the "ticket template".
  2. Workflow: find a standard one at Workflows → Other MDG Workflows → Define Change Request Step Numbers, copy its name, paste it into the CR type. Why: reusing a standard workflow avoids building one.
  3. Entity Types sub-node: add Material. Tells the CR which objects it may touch.
  4. Business Activities: add e.g. MAT01 (create material). Save in a package; verify using Position search.
  5. Assign processors: Assign Processor to Change Request Step Number (Simple Workflow). For your CR type and each step (0 to 5): agent type User, agent your user ID. Why: without an agent nobody receives the work item.
  6. Test in NWBC → Material Governance → Search Material (HANA Search) → New → pick your CR type → fill unit, material type, sector, description → Save → Check → Submit → Send for Revision (with comment) → Finalize Processing → Approve. Open Workflow Log → Background Steps to see activation.
  7. Verify in SE11 table MARA by searching the description.

Rule-based workflow (BRF+)

Static workflows send everything to the same people. A rule-based workflow decides at runtime, e.g. materials of one type go to Manager A, high value to Finance. You assign a rule-based workflow to the CR type, then build BRF+ decision tables that return the approver per step (initial, manager, business, final).

Deep dive: anatomy of a change request

Think of a CR as a courier envelope: the CR type is the envelope kind, the business activity says what is inside (create, change, mark for deletion), the entity types list which objects may be inside, and the workflow is the route.

CR type partWhat it controlsIf missing
Data model + main entityWhich data the CR holdsCR cannot be created
Single / Multiple objectOne material per CR, or many (mass changes)Wrong screen layout
WorkflowSteps and routingCR saves but never moves
Entity typesWhich entities the CR may editFields missing or locked
Business activityCreate / change / delete behaviour; links the CR type to the objectCR type not offered for new
Processors per stepWho receives the work itemNo inbox item, CR stuck
CreatedIn processApprovalFinal checkActivatedReplicated rejected / revision
Typical CR status path. Exact status names vary by release.

Step numbers: what they mean

A standard workflow is a list of numbered steps such as draft, revision, approval and activation. The processor table asks "who gets step N?". Open Define Change Request Step Numbers for your chosen workflow to read what each number means before assigning agents; do not guess. Assign every step that creates a work item, otherwise the CR stops silently.

Scenario: two-level approval, tested end to end

  1. Create CR type ZMAT01 (MM, Single Object, main entity Material) as in the steps above.
  2. Assign processors: requester step = your user; approval step = a second test user (create ZAPPR1 in SU01 with the MDG material roles). Why two users: you see the work item land in a different inbox.
  3. Log in as requester: create a material CR, Check (fix messages), Submit.
  4. Log in as ZAPPR1: open the work item from SAP Business Workplace (SBWP) or the NWBC inbox, open the CR, Send for Revision with a comment.
  5. Requester sees the comment, edits, submits again; approver Approves.
  6. Check the CR status shows activated; open Workflow Log; confirm the row in MARA.
ProblemWhere to look
Nobody gets a work itemProcessor table for that step; user's roles; SWI1 to find the work item by CR number.
Activation failedOpen the CR message log; fix the data (a validation or standard check failed) and re-run activation.
CR type not in the New listBusiness activity missing, or user's role does not include the CR type.
Wrong approver on rule-based CRTest the BRF+ function in simulation with the same inputs.

Rule-based workflow in depth

Typical real requirement: "Raw materials go to Purchasing; finished goods to Sales; value above 100,000 also needs Finance." Build a BRF+ decision table whose columns are the inputs (material type, plant, value) and whose result column is the agent or step. Activate the table and function, then reference it from the workflow configuration. Always test with one case per row.

6. UI modelling

MDG screens are built with Floorplan Manager (FPM) on Web Dynpro ABAP, so they are configured, not coded. A floorplan is the page layout; UIBBs (UI building blocks: forms, lists, trees) fill it; a feeder class supplies the data from the data model.

Floorplan (OVP/GAF)Form UIBB: general dataList UIBB: plant data Feeder classreads/writes entitydata for each UIBBMDG data model(staging area)
Screen → feeder → data model.

Deep dive: how an MDG screen is assembled

LayerWhat it isExample
Application configurationThe entry point; names the main floorplanThe Material app
FloorplanOverall layout and toolbar. OVP: overview page with tabs; GAF: guided activity (wizard); OIF: object instance floorplanOverview with tabs
UIBBA reusable block: Form, List, Tree, Tabbed, Search"General Data" form
Feeder classABAP class that delivers the data to a UIBB and takes changes backMDG generic feeder for the entity
WiresConnect UIBBs so selecting a row in one list refreshes another blockPlant list drives plant detail

MDG supplies feeder classes that read the data model, so a form UIBB can show an entity's attributes without ABAP. This is why adding a field to the data model makes it available to the screen.

Hands-on: show and enforce a field on the Material screen

  1. Open the Material screen in NWBC. Use the personalize/configure option (often Ctrl+Shift+right-click → Settings → Adapt, or open the configuration in FPM_WB/SE80 if you know its name).
  2. Select the Form UIBB that holds the field group. Choose Configure so the configuration editor opens.
  3. In the editor, Add field from the list of available feeder fields (all attributes of that entity).
  4. Set label, visibility, read-only and mandatory. Place it on the right row and column.
  5. Save in a package and transport request. Never save to $TMP if the change must go to Quality.
  6. Reload the app, open a CR and confirm the field is shown. Leave it empty and press Check to prove the mandatory flag works.
NeedWhere to change it
Field missing in dataData model (section 4)
Field present but not shownUI configuration (here)
Show a field only for one CR type or stepUI configuration assigned to that CR type/step in MDGIMG
Hide a field from one roleRole-based UI configuration or authorization
Dependent logic (if A then B)Business rules (section 7), not the UI
Good practice: copy the standard configuration to a Z/Y name and edit the copy. Standard configurations can be overwritten by upgrades.

7. Business rules: validations and derivations

A validation checks data and raises a message (e.g. error if first and last name are empty). A derivation fills a field for the user (e.g. bank country = IN when blank). In MDG they run when you click Check or Submit. Two tools: BRF+ (no code) and BAdI (ABAP).

Trigger function(per data model)Your function+ data objectRuleset → RuleIF conditionsValidation: Log Message (Error)Derivation: Assign Value to Context
Both use the same IF → action pattern.

Custom validation (BRF+)

  1. MDGIMG → Data Quality and Search → Validations and Enrichments → Define Validation and Derivation Rules, data model BP. Open the trigger function (the hook MDG calls).
  2. Right-click → Create Object Node → Function, e.g. check_functionone.
  3. Add Existing Data Object: pick an entity such as AD_NAME_P. Why: the rule can only see fields in its context.
  4. Create a ruleset, insert a rule.
  5. IF: first name is initial AND last name is initial. (AND is added with Add condition.)
  6. Action: Log Message, type Error, with your text. Activate message, ruleset, function in that order (inner to outer).
  7. Simulation: leave names blank → Execute and Display Processing Steps → see MSG_NAME.
  8. Afterwards Disable Rule in Assigned Ruleset so test rules do not block real users.

Custom derivation (BRF+)

Same path, but right-click Derivation. Data object BP_BKDTL. IF bank country/region is initial → action Assign Value to Context: bank ctry/reg = IN. Activate, simulate (value changes to IN), then disable.

BAdI approach

For logic BRF+ cannot express: Validations and Enrichments → Business Add-ins. BAdI Define Validations/Derivations: open an implementation → Filter Values shows its data model → Implementing Class holds the standard method code (read it to learn). BAdI Derivation Across Entity Types derives a value in one entity from another.

Deep dive: BRF+ vocabulary

TermPlain meaning
ApplicationContainer for all your rule objects (like a project folder)
FunctionThe unit MDG calls. Has input data (context) and a result
Data objectA field or structure the rule can read or change
Ruleset / RuleA ruleset is an ordered list of rules; each rule is IF condition THEN action
ExpressionAnything that gives a value: a field, a constant, a decision table, a formula
ActionWhat happens when the IF is true: log a message, assign a value
SimulationRun the function with test data without saving anything

Which tool for which job?

NeedUse
Field must not be empty (simple)Attribute mandatory in UI configuration or data model
Business condition across a few fields, changeable by a business analystBRF+ validation
Fill a field automatically from other fieldsBRF+ derivation
Lookups in other tables, loops, complex logicBAdI (ABAP)
Route approvals by value or typeBRF+ in rule-based workflow

Worked scenarios (use the same steps as above)

1. Postal code check. Data object: address entity (e.g. AD_ADDR). IF country = IN AND postal code length is not 6 THEN Log Message (Error) "Indian PIN code must have 6 digits". Why: wrong PIN codes break delivery and tax reports.

2. Search term derivation. IF search term is initial THEN assign it from the first 20 characters of the organization name (upper case). Why: users skip the field, and search later becomes unreliable.

3. Warning versus error. Use Error to stop submission and Warning when the user may continue (e.g. "Region not maintained"). Choosing wrongly either blocks good data or lets bad data through.

Order of execution and good habits

8. Data quality: search and duplicates

Before creating a partner, MDG searches for an existing similar one. The search runs on SAP HANA using fuzzy matching: "Chenai Traders" can match "Chennai Traders" with a similarity score.

1 Search viewwhich fields2 Search appHANA Search (HA)3 Match profilefuzziness 0.704 Assign to BPentity type5 Test
Five configuration pieces for a duplicate check.
  1. Create Search View (Data Quality and Search → Search and Duplicate Check): New → name, description, business object BP, HANA package name → Next → tick fields (BP Header, Address, Name1, Names of Organizations) → Save with transport → Generate. Why: it tells HANA which fields to index.
  2. Define Search Application: choose HANA Search (HA); under Allocation of Search Help, confirm your view appears for the BP model.
  3. Match Profile: new, data model BP, entity BP_HEADER → Relevant Fields → add each field (e.g. AD_NAME_O / Name1), sequence starting at 1, fuzziness such as 0.70. Higher = stricter (fewer false matches); lower = looser.
  4. Configure Duplicate Check for Entity Types: pick BP, add your match profile and search help, Save.
  5. Test: NWBC → Business Partner Governance → Search → New → Organization → Create, entering values that already exist. A duplicate message appears; continue anyway or hand over to duplicate handling.
Searching first: in Search Business Partner, search city "Chennai" and open a result to see existing data that the check uses.

Deep dive: how matching works

Two different features share the HANA index. Search finds records the user is looking for. Duplicate check compares the new record against all existing ones using the match profile.

For each relevant field the engine computes a similarity from 0 to 1 and combines them. Fuzziness is your tolerance: at 1.0 only exact text matches; at 0.70 small typos, missing letters and reordered words still match; very low values flood users with false hits.

New entryExisting recordNameCityVerdict at 0.70
Acme Traders Pvt Ltd, ChennaiAcme Traders Pvt Ltd, Chennai1.001.00Duplicate
Acme Tradrs Pvt Ltd, ChennaiAcme Traders Pvt Ltd, Chennai0.921.00Likely duplicate
Acme Traders, MaduraiAcme Traders Pvt Ltd, Chennai0.850.30Review (name high, city low)
Zenith Foods, ChennaiAcme Traders Pvt Ltd, Chennai0.151.00Not a duplicate

Scores are illustrative to show the logic; real values depend on the engine.

Choosing fields and settings like a consultant

Scenario: prove the check works

  1. Create BP "Acme Traders Pvt Ltd" in Chennai through a normal CR and activate it.
  2. Wait for the search index to refresh (ask Basis if it is not real-time).
  3. Create a second BP with the same name. Expect the duplicate message listing the first BP.
  4. Create a third with a typo. Expect a match shown with a lower score.
  5. Create a fourth with a different name. Expect no message.
  6. If step 3 does not match, lower fuzziness a little or check that the field is in both the search view and the match profile.
SymptomCheck
No duplicates ever foundDuplicate check assigned to entity type BP? Search view generated? Index filled?
Too many false hitsRaise fuzziness; add a second field such as city or tax number.
Field not comparedIt exists in the search view but not in the match profile Relevant Fields (or the reverse).
Search view generate errorsHANA package name/authorisation; ask Basis/HANA admin.
Prevention versus cleanup: this check protects new data. Existing duplicates are a data-cleansing project, usually done before loading data into MDG.

9. Data Replication Framework (DRF)

Approved data is only useful once target systems get it. DRF is the "delivery service": it picks changed objects and sends them to business systems through ALE/IDoc or SOA web services.

MDG hubactive dataReplication modelwhich target, filtersOutbound implementationIDoc or SOAERP system AERP system BOther systemkey mapping stores hub ID ↔ target ID
Replication from the hub to several systems.
  1. Technical settings (DRFIMG): define business systems and the connection (ALE logical systems in BD64/WE20/WE21, or SOA in SOAMANAGER).
  2. Define custom settings: create a replication model with the data model, target business system and an outbound implementation (e.g. BP via ALE, Material via MATMAS).
  3. Filters (optional): send only certain company codes or material types.
  4. Run: automatically after CR activation, or manually with DRFOUT (select model → Start Replication).
  5. Monitor: DRFLOG, plus WE02 for IDocs. Fix errors and re-run.

Key mapping matters when the target system uses a different ID than the hub; DRF stores both so later changes find the right record.

Deep dive: DRF vocabulary

TermPlain meaning
Business systemA named receiver, for example "ERP_100" (ERP system, client 100)
Business system groupA bundle of systems that share key mapping
Replication modelA recipe: which data model, which business systems, which outbound implementation
Outbound implementationHow data leaves: an ALE/IDoc message (e.g. MATMAS) or an SOA service
FilterLimits what is sent (organisation, type, status)
Key mappingTable pairing the hub ID with the target ID
Replication triggerAutomatic after activation, or manual (DRFOUT)

Hands-on: replicate a material to another client (ALE)

A. Prepare the connection (once per target)

  1. BD54: define logical systems, one for hub and one for target, e.g. MDGCLNT100 and ERPCLNT200. SCC4 assigns the logical system to the client.
  2. SM59: RFC destination (type 3) named like the target logical system, test the connection.
  3. WE21: a tRFC port using that destination.
  4. BD64: distribution model: add model view, add message type (MATMAS for material; customer/supplier use DEBMAS/CREMAS), sender = hub, receiver = target. Generate partner profiles (WE20 shows them).

B. Configure DRF (DRFIMG, Define Custom Settings for Data Replication)

  1. Define Technical Settings: create the business system and link its logical system; put it in a business system group.
  2. Define Replication Models: name, data model MM, add outbound implementation for the material, assign the target business system. Standard implementations are delivered; select them rather than writing new ones.
  3. Optional filters: for instance only material type FERT.
  4. Decide the trigger: replication can run automatically after activation (how this is switched on depends on your release and CR type/workflow setup; confirm with your lead) or be started manually. Begin manual.

C. Replicate and prove it

  1. Activate a material through a CR (section 5).
  2. DRFOUT: choose the replication model, select the object (or all changed), start replication.
  3. DRFLOG: status per object (success, error, waiting). Open an error to read the message.
  4. WE02 (hub): the outbound IDoc status 03 means sent. In the target client WE02 shows inbound status 53 = posted.
  5. Target client MM03: the material exists with the same data.
SymptomCheck
Nothing selected in DRFOUTObject not activated yet; or filter excludes it; or model not assigned to the target.
IDoc status 02 / 29Port or RFC problem; test SM59 and WE21.
IDoc 51 on targetTarget data check failed (missing plant, material group). Fix target config and reprocess via BD87.
Same object arrives twiceKey mapping missing or two models for one target.
Partner profile missingRegenerate from BD64.
Real-world rule: test one object end to end first, then enable automatic replication. Mass replication of wrong configuration is painful to undo.

10. Roles and authorizations

Most "it does not work" tickets in MDG are really missing access. Plan access around four kinds of people.

WhoDoesNeeds
RequesterCreates and submits CRsDomain role (BP, Material or Finance governance) limited to chosen CR types
Approver / data stewardChecks, corrects, approvesSame role plus workflow inbox access and the approval steps
Consultant / configuratorModels data, process, UI, rulesMDGIMG, data model, BRF+ and transport authorizations (development system only)
Basis / supportServices, RFC, ALE, workflow adminTechnical administration

11. Loading data and changing it in bulk

Projects rarely start empty. Three tools cover the common cases.

NeedApproach
One-off cleanup of many recordsMass processing: a multiple-object CR or mass change that edits many objects with the same rules and approval
Initial load of existing dataImport / load from a file or source system into staging or active data, with checks
Same party exists in several systemsConsolidation: load, match, merge into one "best record", then replicate it back

Typical initial-load sequence: extract from legacy; cleanse (remove obvious duplicates, fix addresses, standardise names); load a pilot of about 100 records into the test system; read every error; fix the data or the rules; load the rest; reconcile counts (SE16N row counts and spot checks) before sign-off. Fixing a validation is cheaper than fixing 10,000 records.

Run the duplicate check against the loaded data in the test system. It shows how your fuzziness setting behaves on real names.

12. How an MDG project and daily support work

  1. Requirements: which objects, which fields, who creates, who approves, which systems receive.
  2. Design: data model sketch (as in section 4), CR types and approval matrix, UI field list, rule list, replication map.
  3. Build in development: in this order, because each depends on the previous: data model, structures and mapping, CR types and workflow, UI, rules, duplicate settings, DRF.
  4. Unit test every scenario with the positive and negative cases written in your design.
  5. Transport Dev to Quality to Production with one transport per layer so a failure is easy to isolate. After importing a data model, check that generated structures exist in the target.
  6. User acceptance test with real business users, then cut over and run the initial load.
  7. Support: table below.
Daily ticketFirst tool
CR stuck, no approverSWI1 work item by CR number; processor table
Activation failedCR message log; data and validation
Not replicatedDRFLOG, WE02, SM59
Duplicate not caughtSearch view, match profile, index status
"No authorization"SU53, role in PFCG

13. Quick revision

Menu paths and names can vary slightly by release; confirm against your own system.

14. Glossary

TermMeaning
MDGMaster Data Governance, the SAP solution in this handbook
MDGIMGConfiguration entry point (like SPRO for MDG)
NWBCNetWeaver Business Client, the user front end
CRChange request, the ticket carrying a master data change
Staging / active areaWaiting area for CR data / real data
Entity typeAn object in the data model, like Material
AttributeA field of an entity
Storage/use typeRole of an entity: 1 root, 2 reference, 3 qualifier, 4 dependent
EditionTime-based container for finance changes
SMTService Mapping Tool, where field mappings are kept
Business activityWhat a CR type does: create, change, delete
FPM / UIBBFloorplan Manager / UI building block, the screen framework
Feeder classABAP class that supplies a UIBB with data
BRF+Business Rule Framework plus, rule editor without code
BAdIBusiness Add-In, an ABAP hook for custom logic
Validation / derivationCheck data / fill data automatically
Fuzzy searchMatching that tolerates typos
Match profileFields and thresholds used for duplicates
DRFData Replication Framework
ALE / IDocSAP system-to-system messaging and its message format
Key mappingHub ID paired with target ID
CVICustomer-Vendor Integration, ties BP to customer/supplier tables
PFCG / SU53Role maintenance / last failed authorization check

15. Viva and interview questions

Try to answer before opening each one. Answer pattern that interviewers like: definition in one line, why it exists, a small example, and one thing that can go wrong. Amber text below each answer is an example you can reuse.

A. Core quick-fire

Why does MDG use staging and active areas?

So unapproved data never reaches real tables. Changes are checked and approved in staging, then activated.

Explain entity types 1 to 4 with an example.

Material is type 1 (root). WERKS is type 3 (qualifier; its key joins the child key). PRCTR is type 2 (referenced, non-key). MARCBasic is type 4 (dependent; holds plant data).

Difference between leading, qualifying and referencing relationships?

Leading: parent key becomes child key. Qualifying: a type 3 key becomes part of the child key. Referencing: optional link stored as a non-key field.

What do _2PP and _2STA mean?

Mapping direction: staging to active, and active to staging.

Why can you not change the standard data model or its mappings?

They are SAP delivered and upgraded. Extend with your own model or supported enhancements and regenerate structures.

A CR is saved but nobody receives it. What do you check?

Processor assignment for each step, user roles, and the work item in SWI1.

Static versus rule-based workflow?

Static: fixed steps and agents. Rule-based: BRF+ decides steps or approvers at runtime, such as by material type or value.

Validation versus derivation, and tool choice?

Validation raises messages; derivation fills values. Use BRF+ for simple conditions and BAdI for complex logic.

My BRF+ rule is not firing. Why?

Inactive object, disabled rule, wrong entity, or you did not trigger Check. Test in simulation.

How does the duplicate check decide?

HANA fuzzy search over the fields in the search view, compared as set in the match profile with a fuzziness threshold.

How does data get to other systems?

DRF: business systems, replication model with outbound implementation, ALE/IDoc or SOA, DRFOUT to run, DRFLOG to monitor.

A field is in the data model but not on screen. Fix?

Add it in the UI configuration (FPM) of the relevant UIBB and transport it.

Hub versus co-deployment?

Hub: separate MDG system that replicates out. Co-deployment: MDG inside the ERP/S/4 system.

B. Fundamentals, with examples

Why do companies need MDG when SAP already has MM01 and XK01?

Standard transactions write straight into live tables with no approval, no shared rules and no audit trail. MDG adds a request, checks, approval and history before data goes live, and keeps one owner for each master data object.

Example: Two clerks create "Acme Traders" and "ACME Traders Pvt Ltd". Invoices split across two suppliers and payments are duplicated. With MDG the second request shows a duplicate warning and an approver rejects it.

Explain the life of a change request from start to finish.

Create CR in NWBC, enter data (saved in staging), Check (rules, duplicates), Submit, approval steps in the workflow, optional revision loop, activation into the active area, and replication to target systems. Every step is logged in the workflow log.

Example: Create material CR for FERT, check shows "base unit missing", fix, submit, manager approves, activation writes MARA, DRFOUT sends MATMAS to the ERP.

What is the difference between Central Governance, Consolidation and Mass Processing?

Central Governance: one object at a time through a CR. Consolidation: bring records from many systems, find duplicates, merge into a best record. Mass Processing: change many existing records with the same rules.

Example: Governance: a new supplier. Consolidation: three plants each hold the same supplier under different numbers. Mass processing: change payment terms on 4,000 suppliers.

What is a Business Partner and how does it relate to customer and supplier?

A Business Partner is one master record for a party; customer and supplier are roles of it. In S/4HANA, CVI keeps classic customer and supplier tables in sync so older processes still work.

Example: One company that both buys from you and sells to you has one BP with both roles, so name and address are stored once.

Who are the typical users of MDG and what does each do?

Requesters create CRs, approvers or data stewards verify and approve, consultants configure, Basis supports connections. Separate people for request and approval give the four-eyes principle.

Example: A buyer requests a supplier; a finance steward checks bank data and approves; the buyer cannot approve their own CR.

C. Data model and mapping

How would you add a custom field "Brand" to the material master in MDG?

Create the field in the underlying ERP table through the supported enhancement (customer include or append), then add it as an attribute in the MDG data model (extension, not editing the standard), regenerate structures, check mapping, add it to the UI configuration, test in simulation, and transport. Exact enhancement steps depend on your release.

Example: Brand is a 20 character field. Data model gets attribute BRAND, UI form shows it, a BRF+ rule makes it mandatory for finished products.

When do you choose entity type 2 versus type 3?

Type 3 when the value is part of the child key (one row per plant). Type 2 when the link is optional and stored as an ordinary field (profit center on the plant row).

Example: Material plant data: plant is type 3, because material 100 can exist in plant 1000 and plant 2000. Profit center is type 2, because it is just information on each row.

What happens when you activate a data model?

SAP generates the technical objects: staging and active structures and tables for each entity, named with the namespace prefix, plus change logging objects. You then generate structures and review the mapping.

Example: Prefix YBX produces generated structures starting with YBX, which you see on the Structures tab.

Why does MARCBasic inherit its key from Material?

Because the relationship from Material is leading: the parent key is copied into the child key, so every plant row is tied to exactly one material.

Example: MARCBasic key = material number + plant, so row (100, 1000) is unique.

What is SMT and what can go wrong with mappings?

SMT is the Service Mapping Tool holding field mappings between staging and active structures. If a field has no mapping rule, the value saves in staging but never reaches the real table.

Example: Custom field COLOR is on screen and saved, but missing in the active table because the _2PP mapping lacks the rule.

D. Process modelling and workflow

Single object versus multiple object change request?

Single object handles one record per CR; multiple object lets one CR carry many records, useful for mass changes and loads, with approval once for the batch.

Example: Changing 200 cost center responsible persons after a reorganisation uses one multiple-object CR.

Design a three-level approval based on value.

Use a rule-based workflow. A BRF+ decision table takes the input (for example order value or material type) and returns the approver level. Test each row of the table.

Example: Value under 10,000: category manager only. 10,000 to 100,000: manager and finance. Above 100,000: manager, finance and director.

What is a business activity in a CR type?

It says what the CR does (create, change, mark for deletion) and connects the CR type to the object. Without it the CR type is not offered for new requests.

Send for revision, reject and withdraw: how do they differ?

Revision returns the CR to the requester to correct; reject ends it as not accepted; withdraw is the requester cancelling their own CR. Exact labels vary by workflow.

Example: Approver sees wrong tax number: Send for revision with a comment. A request for a supplier that is not allowed at all: Reject.

How do you stop people from approving their own requests?

Assign different processors or roles to the request and approval steps, and give approval authorization only to approvers (segregation of duties).

E. UI and rules

What is Floorplan Manager and why does MDG use it?

FPM is a configurable framework on Web Dynpro ABAP. Screens are assembled from floorplans and UIBBs and configured rather than coded, so consultants can change layouts safely and transport them.

What does a feeder class do?

It supplies a UIBB with data and receives user changes, translating between the screen and the MDG data model.

How do you make a field mandatory only in the approval step?

Use a BRF+ validation whose condition includes the CR step, or step-specific UI configuration. Data-model-level mandatory would apply everywhere.

Example: Tax number optional for the requester but mandatory before finance approval.

Validation versus the standard SAP check: why both?

Standard checks protect the object (valid plant, valid unit). Your validations express company policy that standard SAP does not know.

Example: Policy: supplier names must be upper case. SAP does not care; a BRF+ rule does.

How do you debug a BAdI validation?

Find the implementing class from Business Add-ins, set an external breakpoint in the method, then trigger Check from NWBC. For BRF+ use simulation and processing steps.

Give a derivation example with its business reason.

Derive the search term from the name when empty. Search relies on that field, and users skip it.

Example: IF search term initial THEN take first 20 characters of the name in upper case.

F. Data quality and replication

Exact versus fuzzy matching: when is each right?

Exact for identifiers such as tax numbers or bank accounts; fuzzy for names and addresses that people mistype. Use both in one match profile.

Example: Same tax ID but name differs slightly: likely the same party. Same name but different tax ID: review.

How did you choose the fuzziness value?

Start around 0.7 to 0.85 in test, review real hits with business users, then adjust. Too low floods users with false positives; too high misses typos.

Why HANA for search and duplicates?

Fuzzy search over millions of records needs in-memory speed, so the search view runs as a HANA model.

Replication versus data transfer: what is the difference?

Replication is the ongoing delivery of approved data to targets through a model; a data transfer is a one-time load. DRF handles replication.

A replicated IDoc shows status 51 in the target. Next step?

51 means the target application rejected the data. Read the IDoc message, fix the target configuration or data (for example missing plant or material group), then reprocess with BD87.

What is key mapping and when is it needed?

A table pairing the hub ID with the target system ID, needed when numbering differs so later changes update the right record.

Example: Hub supplier 700045 is supplier 4500011 in the ERP; a bank change updates 4500011.

How do filters help in replication?

They restrict what is sent per target so each system receives only what it needs.

Example: Only material type FERT goes to the sales system.

G. Scenario and troubleshooting questions

A user cannot create a material CR. How do you investigate?

Order of checks: role includes the CR type, business activity exists for that CR type, user passes SU53 authorization, UI configuration for that CR type exists, and the CR type is active.

Activation fails after approval. What do you do?

Open the CR message log, find the failed check (standard check or validation), correct the data or rule, and retry activation. Do not recreate the CR.

Duplicates were created even with duplicate check on.

Check that the check is assigned to the entity type, the search view is generated and populated, the fields are in both search view and match profile, and the fuzziness is not too strict. Data loaded without the check will also bypass it.

An object was replicated twice. Why?

Usually two replication models for the same target, or key mapping missing so the target treated it as new. Check the models and mapping.

A company has five ERP systems and wants one supplier master. Outline your approach.

Choose hub deployment. Design BP data model and CR types. Run consolidation: load from all systems, match, merge. Set duplicate rules and approval workflow. Replicate the clean record to all systems with key mapping. Pilot with one system, then roll out.

Example: Pilot with the smallest ERP, 500 suppliers, review merges with business, then add the other four.

H. Describe your project (template)

Tell me about an MDG scenario you configured.

Use this structure: Business need, what you built, how you tested, what went wrong and how you fixed it. Stay specific and honest.

Example: "Duplicate suppliers were a problem. I built a HANA search view and match profile for BP on name and city, set fuzziness 0.70, tested with exact and typo names, and lowered fuzziness slightly after a typo case was missed."

I. Rapid-fire one-liners

QuestionShort answer
Where do you configure MDG?MDGIMG, Classic Mode
Staging to active mapping suffix?_2PP
Length of a custom data model name?2 characters
How to view generated model?USMD_DATA_MODEL in SE38
Run replication manually?DRFOUT
Check replication result?DRFLOG, WE02
Find a stuck work item?SWI1
Why did I get no authorization?SU53
Activation order in BRF+?Message, ruleset, function
Which search technology?HANA fuzzy search
↑