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.
The building blocks you will meet
| Block | Meaning |
|---|---|
| Data model | Defines the objects and fields (e.g. Material, Plant data) |
| Process model | Change request types, workflow, who approves |
| UI model | The screens users see |
| Business rules | Validations (check) and derivations (auto-fill) |
| Data quality | Search and duplicate checks |
| DRF | Data 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
| Deployment | Meaning | Trade-off |
|---|---|---|
| Hub | MDG runs in its own system; ERP systems receive data by replication | Clean separation, many targets; needs DRF |
| Co-deployment | MDG runs inside the ERP/S/4HANA system that owns the data | Simpler, no replication to itself; ties MDG to that system's release |
| Cloud / hybrid | Governance delivered as a cloud service with connected systems | Less to run; configuration options differ |
Seeing the three deployments
| Picture | Choose it when |
|---|---|
| Hub | Several ERP systems need the same clean master data |
| Co-deployment | One main ERP owns the data and you want a simple setup |
| Cloud / hybrid | You 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.
- Get the server IP, fully qualified hostname and HTTPS port from your Basis team.
- Open Notepad as administrator (the file is protected). Open
C:\Windows\System32\drivers\etc\hosts. - Add one line at the bottom:
10.10.1.25 mdghost.company.com mdghost(IP, full name, short name). Save. - 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. - You should see roles such as Business Partner Governance or Material Governance. Empty? Your user lacks PFCG roles.
/nwbc service active in SICF, hosts line typo, port, VPN.Deep dive: what happens when you open the NWBC URL
| Part of the URL | Meaning |
|---|---|
https | Encrypted. Needs a certificate; labs often use a self-signed one, so browsers warn |
mdghost.company.com | The name your hosts file (or DNS) translates to an IP |
:44300 | HTTPS port of the SAP ICM. Ask Basis; SMICM → Services lists it |
/nwbc | Path of the NWBC web service, activated in SICF |
?sap-client=100&sap-language=EN | Optional: pick client and language so you skip the logon choice |
Hands-on: complete setup and test
- Collect details from Basis: IP, FQDN, HTTPS port, client number, your user.
- Edit hosts. Windows:
C:\Windows\System32\drivers\etc\hosts. Mac/Linux:/etc/hosts(usesudo). One line per server,IP FQDN shortname. Do not addhttps://or a port; the hosts file holds only names. - Flush the cache. Windows:
ipconfig /flushdnsin a command prompt. - Test the name.
ping mdghost.company.commust show your IP. If the IP is different, another entry or DNS wins; remove the duplicate. - 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. - Open NWBC (
/nwbc), log in. Menu entries depend on your PFCG roles.
| Symptom | Cause and fix |
|---|---|
| Site cannot be reached / timeout | Wrong IP, VPN off, or firewall. Ping first. |
| Name not resolved | Typo in hosts, file saved as .txt, or not saved as administrator. |
| Certificate warning | Self-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 menu | Missing roles for Business Partner / Material / Financial Governance. Ask for them in PFCG. |
| Blank screen in Chrome/Edge | Clear cache, allow pop-ups for the site, or try the NWBC desktop client. |
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
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.
- Category: Person, Organization or Group. It decides which name fields appear.
- Grouping: controls the number range (internal or external numbering) and which roles are allowed.
- Core table:
BUT000; addressesADRC; banksBUT0BK; identificationBUT0ID. Look at these inSE16Nafter activation.
Scenario: create a supplier with bank data
- NWBC → Business Partner Governance → Search Business Partner → New → Organization → Create. The duplicate check (section 8) runs first.
- Fill Name, Search term, Grouping, and the address (street, city, postal code, country, region, language). Bad addresses are the top cause of failed validations.
- Add the Supplier role. Company code data appears: reconciliation account, payment terms, payment methods.
- 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.
- Check and fix messages (this is where your BRF+ derivation can fill the bank country).
- Submit, approve as per workflow, then confirm in
SE16N:BUT000(partner),LFA1(supplier view) andBUT0BK(bank).
Deep dive: MDG-F, finance objects
| Object | Level | Key points |
|---|---|---|
| G/L account | Chart of accounts (SKA1) and company code (SKB1) | Chart level: number, type, group. Company code level: currency, tax category, field status |
| Cost center | Controlling area (CSKS) | Needs controlling area, validity dates, responsible person, category, hierarchy node, company code, profit center |
| Profit center | Controlling area (CEPC) | Segment and hierarchy node |
| Hierarchies / groups | Standard hierarchy | Place 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
- Gather: controlling area, cost center ID (for example
YB1001), name, valid-from date, category, hierarchy node, company code, profit center, responsible person. - NWBC → Cost Center Governance (role names vary) → Create Cost Center.
- Enter the data above. The hierarchy node places the cost center in the group structure; without it reports miss it.
- Check, Submit and approve through the workflow.
- Verify:
KS03displays the cost center;SE16NtableCSKSshows the row. - Test negative cases: unknown profit center, past valid-from, missing hierarchy node. Each should return a message.
Deep dive: MDG-M, the material master
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
- Pick an existing material (active, created earlier) and a plant that exists in the system.
- NWBC → Material Governance → Search Material → open it → Change Material (starts a change CR).
- Go to the Plant tab → add a row for the new plant. Maintain procurement type, MRP type, profit center, and any required storage location.
- Add Valuation data if the plant has its own valuation area (price control and standard price).
- Check, Submit, approve.
- Verify:
MM03now lets you select the new plant;SE16NMARChas a new row with the material and plant;MBEWif valuation was added.
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
| Type | Role | Example |
|---|---|---|
| 1 | Root entity, owns the main key | Material |
| 2 | Referenced object, its key is only a non-key field in the child | PRCTR (profit center) |
| 3 | Qualifier: its key becomes part of the child's key | WERKS (plant) |
| 4 | Dependent child holding the data | MARCBasic (table MARC) |
- Leading: parent key copied into the child key (Material → MARCBasic).
- Qualifying: the type 3 key joins the child key, so one material can have one row per plant.
- Referencing: optional link, stored as a normal field.
Walkthrough: inspect the standard MM model (display only)
MDGIMG→ Data Modeling → clock icon on Edit Data Model. Switch to Display; choose MM. Why display: standard models must not be changed.- Entity Types → Position → search
MARCBasic. Check its type (4). - Open Attributes. These fields come from table MARC. Verify in
SE11: MARC has fieldFPRFM. - Relationships → Position → search Material (leading), WERKS (qualifying), PRCTR (referencing); find MARCBasic under To-Entity Type.
- Visualize Data Model → Ctrl+F → MARCBasic to see the tree.
Walkthrough: build a custom data model
- Edit Data Model → Inactive Data Models → New Entries: name
YB(exactly 2 characters), description, active areaMDG, prefixYBX(used to name generated objects). Save in a package. - Entity Types → New Entries → your entity, storage type 1.
- Attributes → New Entries; reuse data elements from MARA so field definitions match standard SAP.
- Activate. SAP generates staging tables and structures for each entity, named with your prefix.
- Verify with
SE38programUSMD_DATA_MODEL.
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.
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).- Create and Edit Mappings → Open Mapping → paste the name → open
MDG_BS_MAT_MARCBASIC→ Details → Transformations → 0001 Field Mapping. - 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 NWBC | What the system does | Where data sits |
|---|---|---|
| Save | Writes your entries under the CR number. Nothing visible to other SAP processes. | Staging |
| Check | Runs data model checks, BRF+ and BAdI validations, derivations, duplicate check. | Staging (derived values are written back) |
| Submit / Approve | Workflow 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...) |
| Replication | DRF sends the active data out. | Target systems |
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.
| Entity | Type | Key | Attributes | Why this type |
|---|---|---|---|---|
| YPROD | 1 | PRODID | DESCR, MATKL, MEINS | Main object, created and approved by users |
| WERKS | 3 | WERKS | (none, check table T001W) | Plants already exist; only needed as part of the child key |
| PRCTR | 2 | PRCTR | (none) | Optional link; not part of the key |
| YPRODPL | 4 | PRODID + WERKS | PRCTR, MINLOT | One 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
- Create the model (Inactive Data Models → New Entries). Check: name is 2 characters, active area
MDG, prefix chosen, saved in a transportable package (not$TMPif you will transport). - 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.
- 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.
- Create relationships exactly as in your table. Check: the To-Entity shows the child.
- 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.
- Generate structures (Generate Data Model-Specific Structures) and look at the Structures and Mapping tabs. Check: one structure per entity with your prefix.
- Verify with
USMD_DATA_MODELinSE38, 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).
| Symptom | Likely cause / fix |
|---|---|
| Model will not activate | Missing key, bad relationship, name clash. Read the activation log. |
| New field not on the screen | Data model is done, but UI configuration still needs the field (section 6). |
| Value saved but not in active table | No mapping rule for that field. Add it in the mapping (custom models only). |
| Cannot edit standard model | By 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.
Static workflow CR, step by step
- Create CR type (
Process Modeling → Change Requests → Create Change Request Type): new Z entry, data modelMM, description, Single Object, main entityMaterial. Why: this is the "ticket template". - 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. - Entity Types sub-node: add Material. Tells the CR which objects it may touch.
- Business Activities: add e.g. MAT01 (create material). Save in a package; verify using Position search.
- 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. - 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.
- Verify in
SE11table 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 part | What it controls | If missing |
|---|---|---|
| Data model + main entity | Which data the CR holds | CR cannot be created |
| Single / Multiple object | One material per CR, or many (mass changes) | Wrong screen layout |
| Workflow | Steps and routing | CR saves but never moves |
| Entity types | Which entities the CR may edit | Fields missing or locked |
| Business activity | Create / change / delete behaviour; links the CR type to the object | CR type not offered for new |
| Processors per step | Who receives the work item | No inbox item, CR stuck |
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
- Create CR type
ZMAT01(MM, Single Object, main entity Material) as in the steps above. - Assign processors: requester step = your user; approval step = a second test user (create
ZAPPR1inSU01with the MDG material roles). Why two users: you see the work item land in a different inbox. - Log in as requester: create a material CR, Check (fix messages), Submit.
- 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. - Requester sees the comment, edits, submits again; approver Approves.
- Check the CR status shows activated; open Workflow Log; confirm the row in
MARA.
| Problem | Where to look |
|---|---|
| Nobody gets a work item | Processor table for that step; user's roles; SWI1 to find the work item by CR number. |
| Activation failed | Open the CR message log; fix the data (a validation or standard check failed) and re-run activation. |
| CR type not in the New list | Business activity missing, or user's role does not include the CR type. |
| Wrong approver on rule-based CR | Test 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.
- Why UI modelling matters: you decide which fields users see, which are mandatory or hidden, and which roles get which screen.
- Standard screens exist for BP, FI and MM; copy them and adjust rather than starting empty.
- Open the UI in NWBC, use Adapt / Personalize to enter configuration mode, then change field properties in the Floorplan Manager configuration editor. Always keep changes in a transport.
Deep dive: how an MDG screen is assembled
| Layer | What it is | Example |
|---|---|---|
| Application configuration | The entry point; names the main floorplan | The Material app |
| Floorplan | Overall layout and toolbar. OVP: overview page with tabs; GAF: guided activity (wizard); OIF: object instance floorplan | Overview with tabs |
| UIBB | A reusable block: Form, List, Tree, Tabbed, Search | "General Data" form |
| Feeder class | ABAP class that delivers the data to a UIBB and takes changes back | MDG generic feeder for the entity |
| Wires | Connect UIBBs so selecting a row in one list refreshes another block | Plant 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
- 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/SE80if you know its name). - Select the Form UIBB that holds the field group. Choose Configure so the configuration editor opens.
- In the editor, Add field from the list of available feeder fields (all attributes of that entity).
- Set label, visibility, read-only and mandatory. Place it on the right row and column.
- Save in a package and transport request. Never save to $TMP if the change must go to Quality.
- Reload the app, open a CR and confirm the field is shown. Leave it empty and press Check to prove the mandatory flag works.
| Need | Where to change it |
|---|---|
| Field missing in data | Data model (section 4) |
| Field present but not shown | UI configuration (here) |
| Show a field only for one CR type or step | UI configuration assigned to that CR type/step in MDGIMG |
| Hide a field from one role | Role-based UI configuration or authorization |
| Dependent logic (if A then B) | Business rules (section 7), not the UI |
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).
Custom validation (BRF+)
MDGIMG → Data Quality and Search → Validations and Enrichments → Define Validation and Derivation Rules, data modelBP. Open the trigger function (the hook MDG calls).- Right-click → Create Object Node → Function, e.g.
check_functionone. - Add Existing Data Object: pick an entity such as
AD_NAME_P. Why: the rule can only see fields in its context. - Create a ruleset, insert a rule.
- IF: first name is initial AND last name is initial. (AND is added with Add condition.)
- Action: Log Message, type Error, with your text. Activate message, ruleset, function in that order (inner to outer).
- Simulation: leave names blank → Execute and Display Processing Steps → see
MSG_NAME. - 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
| Term | Plain meaning |
|---|---|
| Application | Container for all your rule objects (like a project folder) |
| Function | The unit MDG calls. Has input data (context) and a result |
| Data object | A field or structure the rule can read or change |
| Ruleset / Rule | A ruleset is an ordered list of rules; each rule is IF condition THEN action |
| Expression | Anything that gives a value: a field, a constant, a decision table, a formula |
| Action | What happens when the IF is true: log a message, assign a value |
| Simulation | Run the function with test data without saving anything |
Which tool for which job?
| Need | Use |
|---|---|
| Field must not be empty (simple) | Attribute mandatory in UI configuration or data model |
| Business condition across a few fields, changeable by a business analyst | BRF+ validation |
| Fill a field automatically from other fields | BRF+ derivation |
| Lookups in other tables, loops, complex logic | BAdI (ABAP) |
| Route approvals by value or type | BRF+ 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
- Validations and derivations run when you click Check or Submit, not while typing.
- Activate from inside out: message → rule/ruleset → function. An inactive inner object makes the outer activation fail or silently use an old version.
- A disabled or inactive rule does nothing, which is the most common reason for "my rule is not firing". Also check the rule sits on the right entity (data model + entity must match).
- Keep one rule per business statement and name it so a colleague understands it in a year.
- Move to Quality or Production by transport; test rules by simulation with positive and negative cases.
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.
- Create Search View (
Data Quality and Search → Search and Duplicate Check): New → name, description, business objectBP, 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. - Define Search Application: choose HANA Search (HA); under Allocation of Search Help, confirm your view appears for the BP model.
- Match Profile: new, data model
BP, entityBP_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. - Configure Duplicate Check for Entity Types: pick BP, add your match profile and search help, Save.
- 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.
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 entry | Existing record | Name | City | Verdict at 0.70 |
|---|---|---|---|---|
| Acme Traders Pvt Ltd, Chennai | Acme Traders Pvt Ltd, Chennai | 1.00 | 1.00 | Duplicate |
| Acme Tradrs Pvt Ltd, Chennai | Acme Traders Pvt Ltd, Chennai | 0.92 | 1.00 | Likely duplicate |
| Acme Traders, Madurai | Acme Traders Pvt Ltd, Chennai | 0.85 | 0.30 | Review (name high, city low) |
| Zenith Foods, Chennai | Acme Traders Pvt Ltd, Chennai | 0.15 | 1.00 | Not a duplicate |
Scores are illustrative to show the logic; real values depend on the engine.
Choosing fields and settings like a consultant
- Name fields: fuzzy (0.7 to 0.85). People mistype names most.
- Identifying numbers (tax ID, bank account): exact or very high (0.95+). If these match, it is almost always the same party.
- City, postal code: support fields; do not rely on them alone.
- Start loose in the test system, review hits with business users, then tighten.
Scenario: prove the check works
- Create BP "Acme Traders Pvt Ltd" in Chennai through a normal CR and activate it.
- Wait for the search index to refresh (ask Basis if it is not real-time).
- Create a second BP with the same name. Expect the duplicate message listing the first BP.
- Create a third with a typo. Expect a match shown with a lower score.
- Create a fourth with a different name. Expect no message.
- 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.
| Symptom | Check |
|---|---|
| No duplicates ever found | Duplicate check assigned to entity type BP? Search view generated? Index filled? |
| Too many false hits | Raise fuzziness; add a second field such as city or tax number. |
| Field not compared | It exists in the search view but not in the match profile Relevant Fields (or the reverse). |
| Search view generate errors | HANA package name/authorisation; ask Basis/HANA admin. |
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.
- Technical settings (
DRFIMG): define business systems and the connection (ALE logical systems inBD64/WE20/WE21, or SOA inSOAMANAGER). - 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).
- Filters (optional): send only certain company codes or material types.
- Run: automatically after CR activation, or manually with
DRFOUT(select model → Start Replication). - Monitor:
DRFLOG, plusWE02for 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
| Term | Plain meaning |
|---|---|
| Business system | A named receiver, for example "ERP_100" (ERP system, client 100) |
| Business system group | A bundle of systems that share key mapping |
| Replication model | A recipe: which data model, which business systems, which outbound implementation |
| Outbound implementation | How data leaves: an ALE/IDoc message (e.g. MATMAS) or an SOA service |
| Filter | Limits what is sent (organisation, type, status) |
| Key mapping | Table pairing the hub ID with the target ID |
| Replication trigger | Automatic after activation, or manual (DRFOUT) |
Hands-on: replicate a material to another client (ALE)
A. Prepare the connection (once per target)
BD54: define logical systems, one for hub and one for target, e.g.MDGCLNT100andERPCLNT200.SCC4assigns the logical system to the client.SM59: RFC destination (type 3) named like the target logical system, test the connection.WE21: a tRFC port using that destination.BD64: distribution model: add model view, add message type (MATMASfor material; customer/supplier useDEBMAS/CREMAS), sender = hub, receiver = target. Generate partner profiles (WE20shows them).
B. Configure DRF (DRFIMG, Define Custom Settings for Data Replication)
- Define Technical Settings: create the business system and link its logical system; put it in a business system group.
- 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. - Optional filters: for instance only material type
FERT. - 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
- Activate a material through a CR (section 5).
DRFOUT: choose the replication model, select the object (or all changed), start replication.DRFLOG: status per object (success, error, waiting). Open an error to read the message.WE02(hub): the outbound IDoc status 03 means sent. In the target clientWE02shows inbound status 53 = posted.- Target client
MM03: the material exists with the same data.
| Symptom | Check |
|---|---|
| Nothing selected in DRFOUT | Object not activated yet; or filter excludes it; or model not assigned to the target. |
| IDoc status 02 / 29 | Port or RFC problem; test SM59 and WE21. |
| IDoc 51 on target | Target data check failed (missing plant, material group). Fix target config and reprocess via BD87. |
| Same object arrives twice | Key mapping missing or two models for one target. |
| Partner profile missing | Regenerate from BD64. |
10. Roles and authorizations
Most "it does not work" tickets in MDG are really missing access. Plan access around four kinds of people.
| Who | Does | Needs |
|---|---|---|
| Requester | Creates and submits CRs | Domain role (BP, Material or Finance governance) limited to chosen CR types |
| Approver / data steward | Checks, corrects, approves | Same role plus workflow inbox access and the approval steps |
| Consultant / configurator | Models data, process, UI, rules | MDGIMG, data model, BRF+ and transport authorizations (development system only) |
| Basis / support | Services, RFC, ALE, workflow admin | Technical administration |
- SAP delivers role templates per domain. Copy them to Z roles in
PFCG, never edit the originals. - Access is checked per CR type and per workflow step through MDG authorization objects (for example
USMD_CREQ), so a user can create a material CR but not approve it. Confirm object names inSU21. - Direct maintenance (
MM01,XK01) should be locked for normal users, otherwise people bypass governance. - Debug a refusal: user repeats the action, then runs
SU53to see the failed check.
11. Loading data and changing it in bulk
Projects rarely start empty. Three tools cover the common cases.
| Need | Approach |
|---|---|
| One-off cleanup of many records | Mass processing: a multiple-object CR or mass change that edits many objects with the same rules and approval |
| Initial load of existing data | Import / load from a file or source system into staging or active data, with checks |
| Same party exists in several systems | Consolidation: 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.
12. How an MDG project and daily support work
- Requirements: which objects, which fields, who creates, who approves, which systems receive.
- Design: data model sketch (as in section 4), CR types and approval matrix, UI field list, rule list, replication map.
- 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.
- Unit test every scenario with the positive and negative cases written in your design.
- 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.
- User acceptance test with real business users, then cut over and run the initial load.
- Support: table below.
| Daily ticket | First tool |
|---|---|
| CR stuck, no approver | SWI1 work item by CR number; processor table |
| Activation failed | CR message log; data and validation |
| Not replicated | DRFLOG, WE02, SM59 |
| Duplicate not caught | Search view, match profile, index status |
| "No authorization" | SU53, role in PFCG |
13. Quick revision
- MDG = request → check → approve → activate → replicate.
- Edit Data Model: types 1 root, 2 reference, 3 qualifier, 4 dependent; relationships leading, qualifying, referencing.
- Standard models are read-only; custom model names are exactly 2 characters.
- SMT: _2PP staging → active; _2STA active → staging.
- CR type needs: data model, main entity, workflow, entity types, business activity, processors.
- BRF+ order: function → data object → ruleset → rule → action → activate inside-out → simulate → disable.
- Duplicate check: search view → HA application → match profile → assign to entity → test.
- DRF: business systems → replication model → outbound implementation → DRFOUT → DRFLOG.
Menu paths and names can vary slightly by release; confirm against your own system.
14. Glossary
| Term | Meaning |
|---|---|
| MDG | Master Data Governance, the SAP solution in this handbook |
| MDGIMG | Configuration entry point (like SPRO for MDG) |
| NWBC | NetWeaver Business Client, the user front end |
| CR | Change request, the ticket carrying a master data change |
| Staging / active area | Waiting area for CR data / real data |
| Entity type | An object in the data model, like Material |
| Attribute | A field of an entity |
| Storage/use type | Role of an entity: 1 root, 2 reference, 3 qualifier, 4 dependent |
| Edition | Time-based container for finance changes |
| SMT | Service Mapping Tool, where field mappings are kept |
| Business activity | What a CR type does: create, change, delete |
| FPM / UIBB | Floorplan Manager / UI building block, the screen framework |
| Feeder class | ABAP class that supplies a UIBB with data |
| BRF+ | Business Rule Framework plus, rule editor without code |
| BAdI | Business Add-In, an ABAP hook for custom logic |
| Validation / derivation | Check data / fill data automatically |
| Fuzzy search | Matching that tolerates typos |
| Match profile | Fields and thresholds used for duplicates |
| DRF | Data Replication Framework |
| ALE / IDoc | SAP system-to-system messaging and its message format |
| Key mapping | Hub ID paired with target ID |
| CVI | Customer-Vendor Integration, ties BP to customer/supplier tables |
| PFCG / SU53 | Role 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
| Question | Short 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 |