Setup Step 18 — BP Master Data Configuration
🎯 Why this setting exists
LFA1/LFB1/LFM1 tables MM and FI still read. Without a correctly configured BP, a vendor either can't be created or saves but can't be used on a PO.
This is normally FI/Basis consultant work, but an MM consultant must understand it: you create and use vendors every single day, and the supplier roles decide what data exists for the buyer versus for accounts payable.
💡 Easy example
- Business Partner (General) 000000 — name, address, country: the base everyone shares.
- Supplier (Fin. Accounting) — labelled "Vendor (Finance)" in your system — the FI view: reconciliation account (payables G/L) + payment terms 0003. This is what accounts payable uses to pay the bill.
- Supplier (Purchasing) — "Vendor (Purchasing)" — the purchasing view: order currency PKR, Incoterms, purchasing group. This is what the buyer uses on the PO.
👉 For the full click-by-click creation (vendor and customer) with every field explained, see Create a Business Partner. Pick roles by their description ("Vendor (Finance)", "Vendor (Purchasing)") — the underlying codes (commonly FLVN01 = Finance, FLVN02 = Purchasing) can vary by system/version.
🔗 How this connects to everything else
BP master data sits at the master-data layer — every procurement scenario in the academy needs a vendor, and every vendor is a BP. Here's the web of settings and modules that hang off it, useful whether you configure it or just discuss it with the FI/Basis consultant who does.
⬆️ Depends on (must exist first)
- Step 1 — Company Code: the FLVN01 (Finance) role stores company-code-specific vendor data (recon account, payment terms) — so the CC must exist first.
- Step 8 — Purchasing Organization: the FLVN02 (Purchasing) role stores purch-org-specific data (order currency, terms) — so a purch org must exist.
⬇️ Enables (what this unlocks)
- Creating the vendors used in EVERY scenario — e.g.
MUGHAL21in Scenario 1. - Step 14 — Customer/Vendor for STO: the plant's internal customer/vendor are BPs too.
- Every PO, info record, source list and contract — all reference a vendor BP.
🧩 Who owns it & why MM cares
FIMM FI/Basis configures BP number ranges + CVI. But MM creates and uses vendors daily — you must understand the roles: General (000000: name/address), Supplier (Fin. Accounting) (recon account, payment terms), and Supplier (Purchasing) (order currency, terms).
🔮 Links to other modules (now & later)
- FI The Supplier (Fin. Accounting) role drives the vendor reconciliation account and payments (F-53, MIRO open items in
LFB1/BSIK). - MM The Supplier (Purchasing) role supplies the purchasing data (currency, terms, Incoterms) the buyer needs on the PO (
LFM1).
🔧 Configuration — fields & steps
BP · BUCF · BUC2 · SM30 view V_TBC001/V_TBD001 · SPRO → Cross-Application Components → SAP Business Partner
LFA1/KNA1 tables via CVI, and which grouping = which number range = which kind of partner.
- ✅ For learning: Skip this step. Your IDES already has BP fully configured — you saw "Vendor (Finance) (New)" and "Vendor (Purchasing)" in the role dropdown.
- ⏩ For interviews/projects: READ this thoroughly — common interview questions on S/4HANA conversion.
- 👥 For real implementations: Coordinate with the FI/Basis consultant.
📋 BP Configuration — sub-steps
18A. BP Number Ranges — BUCF
What: Define number range intervals for Business Partners — different ranges for different BP types.
SPRO Path: Cross-Application Components → SAP Business Partner → Business Partner → Basic Settings → Number Ranges and Groupings → Define Number Ranges
Action:
- Run BUCF
- Click Change Intervals
- Add intervals (or use existing):
| No. | From | To | External flag | For |
|---|---|---|---|---|
01 | 1 | 9999999 | ☐ Internal | Default internal numbering (most common) |
02 | A | ZZZZZZZZZZ | ✓ External | External alphanumeric (for migrating data) |
VK | 1000000 | 1999999 | ☐ Internal | Custom range for vendors (Pakistani example) |
KD | 2000000 | 2999999 | ☐ Internal | Custom range for customers |
Save → Local Object.
18B. BP Groupings + Number Range Assignment — BUC2
What: Grouping = which type of BP gets which number range. Each grouping links to ONE number range and defines whether numbers are internal/external + same as customer/vendor.
SPRO Path: Cross-Application Components → SAP Business Partner → Business Partner → Basic Settings → Number Ranges and Groupings → Define Groupings and Assign Number Ranges
Action:
- Run BUC2
- Click New Entries
- Define groupings:
| Grouping | Description | Number Range | External | Same Number Flag |
|---|---|---|---|---|
BPG1 | BP General (default) | 01 | ☐ | ☐ (BP # ≠ customer/vendor #) |
BPVK | Pakistani Vendors | VK | ☐ | ✓ (BP # = vendor # in LFA1) |
BPKD | Pakistani Customers | KD | ☐ | ✓ (BP # = customer # in KNA1) |
BPEM | Employees | EM | ☐ | ☐ |
Save → Local Object.
💡 "Same Number" flag is critical — when checked, BP # matches LFA1's LIFNR (vendor) or KNA1's KUNNR (customer). Makes data migration cleaner.
18C. BP Roles Definition — SPRO IMG (no T-code)
What: Defines which roles exist (Vendor, Customer, Employee, Bank, etc.). SAP delivers ~30 standard roles. You can create custom Z-roles (your IDES had YTM-VENDOR, YTM-CUSTOMER, etc.).
SPRO Path: Cross-Application Components → SAP Business Partner → Business Partner → Basic Settings → Business Partner Roles → Define BP Roles
Standard Vendor Roles (you'll see these in the BP dropdown):
| Role | Description | Purpose |
|---|---|---|
000000 (BP General) | Business Partner General | Base role — identity, address — ALWAYS required first |
FLVN00 | Supplier (generic) | Activates supplier capability — often skipped in S/4HANA |
FLVN01 / "Vendor (Finance) (New)" | Supplier (Financial Accounting) | CC-specific data: recon account, payment terms |
FLVN02 / "Vendor (Purchasing)" | Supplier (Purchasing) | Purch Org-specific: currency, Incoterms, Purch Group |
Standard Customer Roles (same pattern):
FLCU00 | Customer (generic) |
FLCU01 | Customer (FI) |
FLCU02 | Customer (SD) |
18D. CVI (Customer/Vendor Integration) — SM30 view V_TBC001 / V_TBD001
What: CVI ensures that when you create a BP, the system AUTO-creates the corresponding entry in classic LFA1 (vendor) or KNA1 (customer) tables. Without CVI, your BP exists but the vendor/customer record doesn't — POs would fail.
This is CRITICAL in S/4HANA — without it, MM/SD don't work because they still query LFA1/KNA1.
Configuration:
- Run SM30
- For Customer integration: View
V_TBC001→ Maintain - Add row: BP Grouping
BPKD→ Customer Account GroupKUNA(or your customer group) - For Vendor integration: View
V_TBD001→ Maintain - Add row: BP Grouping
BPVK→ Vendor Account GroupLIEF(or your vendor group) - Save
Sync direction (V_T100C or BUCSC):
| Setting | Effect |
|---|---|
| BP → Customer/Vendor sync ACTIVE | Recommended — when you save BP, customer/vendor auto-created in LFA1/KNA1 |
| BP → C/V sync INACTIVE | BP saves but no LFA1/KNA1 record → POs fail with "vendor not found" |
| Customer/Vendor → BP sync | Reverse direction — used during S/4HANA conversion from ECC |
📚 Source: Verified against saplogisticsexpert.com + SAP Community Complete BP Config Guide
18E. Field Status per BP Role (optional)
What: Controls which fields are required, optional, or hidden when maintaining each BP role.
SPRO Path: Cross-Application Components → SAP Business Partner → Business Partner → Basic Settings → Field Groupings → Configure Field Attributes per BP Role
For learning, accept SAP defaults. Customize only in real projects where the business demands specific field mandatories.
18F. Payment Terms — OBB8 · Required for Vendor (Finance) role
Why: Every vendor needs a Payment Term in FLVN01 (Vendor — Finance) role. It defines when invoices are due + early-payment cash discount terms. Standard SAP ships 0001-0009 — usable immediately. Custom terms (e.g. Pakistani LC, advance payment) need configuration.
SPRO Path: Financial Accounting → Accounts Receivable and Accounts Payable → Business Transactions → Incoming Invoices/Credit Memos → Maintain Terms of Payment
📋 Standard SAP Payment Terms (already in IDES — no config needed)
| Code | Description | Cash Discount | Best for |
|---|---|---|---|
0001 | Payable immediately due net | None | COD, utilities, urgent purchases |
0002 | 14 days 3% / 30 days 2% / 45 days net | Tiered (3% → 2%) | Tiered discount vendors |
0003 ⭐ | 14 days 2% / 30 days net | 2% if paid in 14d | B2B standard (Mughal Steel, Aisha Steel) |
0004 | 14 days 3% / 20 days 2% / 30 days net | Tiered (3% → 2%) | Aggressive early-payment incentive |
0005 | 10 days 2% / 30 days net | 2% if paid in 10d | Stricter early payment |
0007 | 14 days 3% / 30 days net | 3% if paid in 14d | Higher discount |
0008 | End of month / 14 days | None | Month-end billing cycle |
0009 | Within 30 days due net | None | Pure Net 30, no discount |
0003 for standard B2B vendors. It teaches cash discount mechanics (a tested interview topic) without any config work.
🇵🇰 Custom Pakistani Payment Terms (optional — OBB8 creation)
If you want terms matching real Pakistani business reality, create custom codes:
| Code | Description | Use Case |
|---|---|---|
PKCOD | Cash on Delivery | Small/local cash vendors |
PK30 | Pakistan Net 30 Days | Standard local B2B (no discount) |
PK60 | Pakistan Net 60 Days | Large vendors with credit |
PK90 | Pakistan Net 90 Days | Government / large corporates |
LC30 | Letter of Credit 30 Days | Import vendors (Anglo American, Glencore) |
LC60 | Letter of Credit 60 Days | Long-cycle imports |
LC90 | Letter of Credit 90 Days | Heavy machinery imports |
ADV100 | 100% Advance Payment | New vendors / high-risk transactions |
ADV50 | 50% Advance / 50% on Delivery | Project materials |
🛠️ Create Custom Payment Term (Example: PK30)
- Run OBB8
- Click New Entries
- Fill header:
- Payt Terms:
PK30 - Sales Text:
Pakistan Net 30 Days - Own Explanation: (auto-filled by SAP based on Term settings)
- Payt Terms:
- Account type: ✓ Vendor (also tick Customer if same code used for SD)
- Default for baseline date: Select Document Date (most common in Pakistan — invoice date is the trigger)
💡 Baseline date options: Document Date (invoice date) · Posting Date · Entry Date · No Default. Most Pakistani companies use Document Date — the payment clock starts from the invoice date printed by the vendor.
- Payment Terms section → Term 1:
- Percentage:
0.000(no cash discount) - No. of days:
30
- Percentage:
- Leave Term 2 and Term 3 empty (no tiered discount)
- Save → Local Object (or Transport if production)
🛠️ Create LC30 (Letter of Credit, 30 days from BL date)
- OBB8 → New Entries
- Payt Terms:
LC30· Sales Text:LC 30 days from BL date - Account type: ✓ Vendor
- Default for baseline date: Document Date (BL date entered in MIRO)
- Term 1: 0% / 30 days net
- Save
🛠️ Create ADV100 (100% Advance Payment)
- OBB8 → New Entries
- Payt Terms:
ADV100· Sales Text:100% Advance — pay before delivery - Account type: ✓ Vendor
- Default for baseline date: Document Date
- Term 1: 0% /
-1days (negative = pay BEFORE document date)⚠️ Negative days = due before the baseline date. Some SAP versions reject this — alternative: use Term 1 = 0% / 0 days (due immediately) and handle advance via Down Payment Request (F-47). - Save
📊 Real Vendor → Payment Term Mapping
| Vendor | BP # | Industry | Recommended Term | Reason |
|---|---|---|---|---|
| Mughal Steel | MUGHAL21 | Local raw material | 0003 or PK30 | Monthly bulk steel scrap |
| Aisha Steel | AISHA22 | Local billets | 0003 or PK30 | Standard B2B |
| Anglo American | ANGLO23 | Iron ore import | LC60 | International — LC terms |
| Glencore | GLEN24 | Coal import | LC30 | Shorter cycle import |
| KE (Karachi Electric) | KE27 | Utility | 0001 | Government — immediate |
| SSGC (Sui Gas) | SSGC28 | Utility | 0001 | Government — immediate |
| TCS Logistics | TCS26 | Service vendor | 0009 or PK30 | Net 30, no discount |
| Lucky Cement | LUCKY25 | HAWA trading goods | 0003 | Standard with discount |
| New unverified vendor | NEW | Any | ADV100 | Risk mitigation — pay in advance |
🎓 Interview-Ready Q&A — Payment Terms
Q: What is the difference between Baseline Date and Due Date?
A: Baseline Date is the START of the payment clock (usually invoice/document date). Due Date is calculated = Baseline Date + Net days from payment term. Example: Invoice dated 1-June, Term 0003 (30 days net) → Baseline = 1-June, Due = 1-July.
Q: How does cash discount work in MIRO and F-53?
A: When you post an invoice in MIRO with term 0003 (14d 2% / 30d net), SAP records cash discount eligibility. If you pay via F-53 within 14 days, SAP automatically calculates the 2% discount and posts it to the Cash Discount Received G/L (auto-determined via SKE — Cash Discount). If you pay on day 15+, the full amount is paid.
Q: Where do payment terms default from?
A: Payment terms default in this order: (1) PO header from vendor master LFM1 (purchasing view), (2) MIRO invoice header from PO if linked, (3) Manual override allowed at any stage. The vendor master has TWO payment term fields — Finance (LFB1, used for direct FI invoices/credit memos) and Purchasing (LFM1, used for PO-based invoices). They can be different (e.g. LFM1 = 0003 for procurement, LFB1 = 0009 for FI adjustments).
Q: How would you configure payment terms for a Pakistani import vendor with LC?
A: Create a custom term (e.g. LC60) via OBB8 with: Baseline Date = Document Date (BL date), Term 1 = 30 days net (LC tenor). Set it on vendor LFM1. In MIRO, when the invoice is posted, the BL date entered triggers the 30/60/90-day countdown. The bank handles the LC at maturity; SAP just tracks the payable. For complex LC accounting (deposits, charges, FX), use Trade Finance (FI-TF) or Bank Communication Management (BCM).
Q: What is "Day Limit" in payment terms?
A: Day Limit lets ONE payment term code behave differently based on the invoice date in the month. Example: Term 0008 (EOM/14 days) with Day Limit 15 = "if invoice before the 15th, due end of month; if invoice after the 15th, due the 14th of next month." Use for batch billing cycles. Rarely needed for the Pakistani context.
📚 Source: Verified against help.sap.com — Terms of Payment + saponlinetutorials.com — OBB8 Tutorial
18G. Vendor Number Ranges — XKN1 + OBAS · For CVI "Same Number" flag
What: When CVI creates the vendor record in LFA1 alongside the BP, SAP needs to know which number range to use. If you want BP # = Vendor #, the linked vendor account group must use an EXTERNAL numeric range.
🛠️ Step 1 — Create Vendor Number Range (XKN1)
- Run XKN1 (Vendor Number Range)
- Click Change Intervals
- Click Insert Interval (Shift+F1)
- Two range patterns to choose from:
| Range | From | To | External | Use Case |
|---|---|---|---|---|
02 | A | ZZZZZZZZZZ | ✓ | Alphanumeric vendor codes (MUGHAL21, AISHA22, ANGLO23) — recommended for Pakistani context |
03 | 0000000001 | 9999999999 | ✓ | Numeric external — needed for "Same Number" flag (BP 21 = Vendor 21) |
01 | 1 | 999999 | ☐ Internal | System auto-assigns next number (SAP picks) |
Save → Local Object.
🛠️ Step 2 — Assign Number Range to Vendor Account Group (OBAS)
- Run OBAS (Assign Number Ranges to Vendor Account Groups)
- Find the row for your vendor account group (e.g.
LIEFexternal,KREDinternal) - Change the "Number Range" column to your created range (e.g.
02for alphanumeric,03for numeric) - Save
🛠️ Step 3 — Tick Same Number flag (V_TBD001)
- Run SM30 → Table
V_TBD001→ Maintain - Find the row for your BP Grouping (e.g.
GPEX) ↔ Account GroupLIEF - Tick Same Nos. ✓ column
- Save (works only if the account group's number range is EXTERNAL — verify via OBAS + XKN1)
📊 Alphanumeric vs Numeric — which to choose?
| Aspect | Numeric (BP=Vendor: 21=21) | Alphanumeric (MUGHAL21) |
|---|---|---|
| Report readability (ME2L, ME2N) | ❌ "Who is 21?" | ✅ Instantly Mughal Steel |
| Config complexity | High (XKN1+OBAS+V_TBD001) | Low (just type name) |
| Real-world Pakistani usage | Common at large corporates (Engro) | Common at SMEs + mid-tier |
| BP # popup behavior | No popup (auto-assigned) | Popup asks for vendor # |
| Best for learning IDES | Skip — too much config | ✅ Recommended |
📚 Source: saponlinetutorials.com — Vendor Number Ranges + SAP Blogs — BP CVI Overview
🎯 How BP Maps to Classic Vendor/Customer Tables
| BP Role | BP Table | Synced to (classic table) | Purpose |
|---|---|---|---|
| BP General | BUT000 | LFA1 (vendor) / KNA1 (customer) | General master data — address, name, country |
| Vendor (Finance) | BUT021_FS | LFB1 | Vendor CC-specific — recon, payment terms |
| Vendor (Purchasing) | BUT020 | LFM1 | Vendor Purch Org data — currency, terms |
| Customer (FI) | BUT021_FS | KNB1 | Customer CC-specific |
| Customer (SD) | BUT020 | KNVV | Customer Sales Area data |
🚨 Issues & fixes
"21" was rejected when the BP save prompted for the external vendor number. The fix was to use a meaningful alphanumeric code — MUGHAL21 — which is both accepted by the external range and instantly readable in reports like ME2L/ME2N ("who is 21?" becomes "Mughal Steel" at a glance). This is why every academy vendor uses codes like MUGHAL21, AISHA22, ANGLO23 rather than bare numbers.
| Symptom | Cause | Fix |
|---|---|---|
| "Why can't I create a vendor via XK01 anymore?" | S/4HANA deprecated XK01/MK01 | Use the BP transaction (single source of truth) |
| BP saved but POs say "vendor doesn't exist" | CVI sync not configured / inactive | Check V_TBD001 + activate sync (BUCSC) |
| Client wants vendor # to match BP # | "Same Number" flag not set | Tick "Same Number" in the BUC2 grouping + external numeric range |
| Pure numeric vendor code rejected | Account group uses external alphanumeric range | Use a meaningful alphanumeric code (e.g. MUGHAL21) |
| Need to migrate 10,000 vendors from ECC | Mass BP conversion | BP Conversion via MDS_LOAD_COCKPIT (separate big topic) |
✅ Verification
- Open BP → your vendor (e.g.
MUGHAL21) → confirm roles FLVN00 / FLVN01 (Finance) / FLVN02 (Purchasing) are all maintained. - Run SE16N → table
LFA1→ vendor row exists (proves CVI synced the BP to the classic table). - SE16N →
LFB1shows the company-code data (recon account + payment terms 0003). - SE16N →
LFM1shows the purchasing-org data (order currency PKR). - Create a test PO (ME21N) for the vendor — it must accept the vendor and pull payment terms + currency.