SAP FICO Explained — FI-GL, AP, AR, AA & CO Controlling
SAP FICO combines Financial Accounting (FI) and Controlling (CO) into the financial backbone of every SAP system — FI handles legal reporting to tax authorities and auditors, while CO provides internal management accounting for cost control and profitability analysis.
What You’ll Learn
- The structure of General Ledger accounting in SAP FI-GL
- How Accounts Payable and Accounts Receivable automate vendor and customer management
- Asset Accounting submodules and depreciation calculation
- Controlling with cost centers, internal orders, profitability analysis, and profit centers
- How FI and CO integrate with MM (Materials Management) and SD (Sales & Distribution)
Why SAP FICO Matters
Every financial transaction in a company — from paying a supplier to recording a sale to buying a new machine — flows through SAP FICO. Without FI, you have no legal books. Without CO, management cannot see which products, departments, or regions are profitable.
DodaZIP applies FICO-style cost allocation to track which compression jobs consume the most CPU, helping optimize resource usage. Durga Antivirus Pro uses FI’s document immutability pattern to ensure security audit logs cannot be altered after creation.
Learning Path
flowchart LR
A["SAP Overview"] --> B["SAP Modules"]
B --> C["SAP FICO<br/>You are here"]
C --> D["SAP BASIS Admin"]
D --> E["SAP HANA Database"]
style C fill:#f90,color:#fff
FI — General Ledger (FI-GL)
The General Ledger is the master record of all financial transactions. Every business transaction — sales, purchases, payments, depreciation — ultimately posts to a G/L account.
Account Types
| Account Type | Range Example | Purpose |
|---|---|---|
| Balance Sheet | 100000–399999 | Assets, liabilities, equity |
| P&L | 400000–999999 | Revenue and expense accounts |
| Reconciliation | Specific ranges | Automatically reconciled with sub-ledgers (AP, AR, AA) |
Key Transaction Codes
FS00 - Create/display G/L account centrally
F-02 - Post general journal entry
FB03 - Display document
FBL3N - Display G/L account line items
OB52 - Maintain posting periodsPosting a Journal Entry
* In SAP, posting is done via BAPI or transaction code
* This ABAP snippet shows the structure
DATA: ls_accnt TYPE bapiacgl09,
ls_curr TYPE bapiaccr09.
ls_accnt-gl_account = '100000'. " Bank account
ls_accnt-item_text = 'Payment received'.
APPEND ls_accnt TO lt_accnt.
ls_curr-curr_type = '00'.
ls_curr-currency = 'USD'.
ls_curr-amt_doccur = 5000.00.
APPEND ls_curr TO lt_curr.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = ls_header
TABLES
accountgl = lt_accnt
currencyamount = lt_curr.Expected output: A document number (e.g., 100000001) is returned. Every posting creates an immutable document with a unique number.
FI — Accounts Payable (FI-AP)
AP manages all money you owe to vendors. When you receive an invoice, AP records it, tracks payment due dates, and processes payments.
Core Process Flow
- Invoice received — posted via F-43 (or MIRO for PO-based invoices)
- Payment block check — hold or release for payment
- Automatic payment — F110 processes due invoices
- Payment run — generates checks, wire transfers, or SEPA files
- Document clearing — F-28 clears the paid invoice against the outgoing payment
Key T-Codes
F-43 - Enter vendor invoice
F-53 - Post outgoing payment
F110 - Automatic payment program
FBL1N - Display vendor line items
FB60 - Enter outgoing invoiceSecurity Angle
AP is the most targeted module for fraud. SAP’s dual control principle requires separate users to enter invoices and approve payments — the same person cannot do both. Durga Antivirus Pro applies this same separation between scan detection and quarantine actions.
FI — Accounts Receivable (FI-AR)
AR manages money customers owe you. When you bill a customer, AR records the receivable and tracks payment.
Core Process
- Billing document created — VF01 in SD generates the invoice
- AR posts automatically — SD billing integrates directly with FI-AR
- Incoming payment — F-28 clears the receivable
- Dunning — F150 sends payment reminders for overdue accounts
- Credit management — checks customer credit before order fulfillment
Key T-Codes
F-22 - Enter customer invoice
F-28 - Post incoming payment
FBL5N - Display customer line items
FD10N - Display customer balance
F150 - Dunning programFI — Asset Accounting (FI-AA)
AA tracks fixed assets — buildings, machinery, vehicles, computers — from acquisition through depreciation to retirement.
Key Functions
- Acquisition — record purchase of an asset (F-90)
- Depreciation — SAP calculates automatically: straight-line, declining-balance, or custom methods
- Retirement — record sale or scrapping of an asset (F-92)
- Transfer — move assets between cost centers
- Reporting — S_ALR_87012082 for asset balances
AS01 - Create asset master record
AS02 - Change asset master record
AW01N - Display asset transactions
F-90 - Post asset acquisition
AFAB - Run depreciationCO — Cost Center Accounting (CO-CCA)
Cost centers track where costs occur within an organization (e.g., IT department, marketing, production line A).
flowchart LR
A["Primary Costs<br/>Salaries, Rent"] --> B["Cost Centers"]
C["Internal Allocations<br/>IT Support"] --> B
B --> D["Controlling Reports"]
D --> E["Management Decisions"]
Key T-Codes
KS01 - Create cost center
KSH1 - Create cost center group
KOB1 - Display postings
S_ALR_87013611 - Cost center reportCO — Internal Orders (CO-PC)
Internal orders track costs for temporary projects or events — a marketing campaign, a maintenance shutdown, a construction project.
KO01 - Create internal order
KO02 - Change internal order
KOB1 - Display actual postings
KO88 - Settle internal order to costsCO — Profitability Analysis (CO-PA)
CO-PA analyzes profit by market segment — which products, customers, regions, or sales channels generate the most profit.
KE30 - Execute profitability report
KE5Z - Create profitability segmentCO — Profit Centers (CO-PS)
Profit centers are independent accounting units within a company — like running separate mini-companies. Each profit center has its own P&L statement.
KCH5N - Create profit center group
1KEK - Assign profit center to cost centerFICO Integration with MM and SD
The real power of SAP FICO is how it integrates with every other module.
FI-AA → MM Integration
When purchasing an asset via a purchase order (ME21N), the goods receipt (MIGO) can automatically create an asset under construction (AuC) in FI-AA. No separate entry needed.
FI-AR → SD Integration
When SD creates a billing document (VF01), it automatically:
- Debits the customer account in FI-AR
- Credits the revenue G/L account in FI-GL
- Posts to CO-PA for profitability analysis
FI-AP → MM Integration
When a supplier invoice is posted via MIRO, SAP automatically:
- Credits the vendor account in FI-AP
- Debits the inventory or expense G/L account
- Records the material document in MM
sequenceDiagram
participant SD
participant MM
participant FI
participant CO
SD->>FI: Billing document posts<br/>revenue & AR
MM->>FI: Goods receipt posts<br/>inventory value
MM->>CO: Goods issue posts<br/>cost center consumption
FI->>CO: Overhead allocation<br/>to cost centers
CO->>FI: Settlement to<br/>financial accounts
Common Errors
1. Posting period not open
Transaction fails with “Posting period XXX not open in year YYYY.” Run OB52 to open periods. Companies close periods monthly for financial reporting.
2. Reconciliation account mismatch
When creating a vendor or customer master, you must assign a reconciliation account from FI-GL. Without it, AP/AR sub-ledger won’t match the GL balance.
3. Missing cost center in posting
In CO, every cost-relevant posting must have a cost center or internal order. Missing assignment causes error “Account XXX requires a cost object.”
4. Asset value date before capitalization
You cannot post depreciation before the asset’s capitalization date. Use AS02 to adjust the capitalization date if needed.
5. Currency differences not cleared
Multi-currency postings create exchange rate differences. Run F.13 to automatically clear open items in foreign currency.
6. Vendor invoice exceeds PO quantity
MIRO blocks invoices exceeding the delivered quantity by a tolerance limit. Adjust tolerances in OMR0 or request a goods receipt posting.
Practice Questions
What is the difference between FI and CO? FI handles external legal reporting (balance sheet, P&L). CO handles internal management accounting (cost centers, profitability).
What transaction code runs automatic payment in AP? F110 — it selects due invoices, generates payment proposals, and posts payments.
How does SD billing integrate with FI-AR? When VF01 creates a billing document, SAP automatically posts a debit to the customer account in AR and a credit to revenue in GL.
What does a cost center track in CO-CCA? Where costs occur — by department, location, or function. Every cost must be assigned to a cost center.
What is a reconciliation account? A GL account that automatically summarizes all sub-ledger transactions. The AP total, AR total, and AA total always match their reconciliation accounts.
Challenge: A company purchases a machine for $50,000 via a PO in MM, capitalizes it in AA with 5-year straight-line depreciation, and allocates the depreciation cost to the production cost center. Trace the complete FICO transaction flow — which T-codes are used at each step and which FI/CO accounts are affected.
FAQ
Try It Yourself
Simulate a basic FICO posting flow using SQL queries:
-- Simulate FI posting structure
CREATE TABLE fi_documents (
doc_num INTEGER PRIMARY KEY,
doc_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE fi_line_items (
doc_num INTEGER REFERENCES fi_documents(doc_num),
account VARCHAR(10),
amount DECIMAL(15,2),
debit_credit CHAR(1),
cost_center VARCHAR(10)
);
-- Post a vendor invoice: $5,000 expense to cost center CC100
INSERT INTO fi_documents VALUES (1001, '2026-06-20');
INSERT INTO fi_line_items VALUES (1001, 'EXPENSE', 5000.00, 'D', 'CC100');
INSERT INTO fi_line_items VALUES (1001, 'VENDOR', 5000.00, 'C', NULL);
-- Verify balance
SELECT account, SUM(CASE WHEN debit_credit = 'D' THEN amount ELSE -amount END) AS balance
FROM fi_line_items WHERE doc_num = 1001
GROUP BY account;Expected output:
ACCOUNT | BALANCE
EXPENSE | 5000.00
VENDOR | -5000.00What’s Next
| Tutorial | What You’ll Learn |
|---|---|
| SAP Overview — Complete Guide | Foundational SAP ERP concepts |
| SAP ABAP Programming | Write ABAP programs for FICO enhancements |
| Python for Finance | Compare SAP FI reporting with Python |
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. Updated 2026-06-20.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro