SAP AFAB — Depreciation Posting Run
A fixed asset — a building, a machine, a vehicle — loses value over its useful life, and accounting recognises that gradually as depreciation. SAP calculates the amount continuously from the asset master and its depreciation key. AFAB is what actually posts it to the ledger.
The distinction matters and catches people out. Depreciation is *planned* the moment an asset is created; you can see the values in the asset explorer (AW01N) long before anything hits the G/L. AFAB is the batch job that turns those planned values into real postings.
Two rules govern it, and both are unusual. It is strictly sequential — you cannot post period 8 before period 7, and you cannot skip a period and come back. And it is not repeatable by default: once a period is posted, re-running it needs a deliberately chosen run reason.
On S/4HANA the underlying program was reworked and the transaction is frequently FAA_DEPRECIATION_POST, with AFAB retained as a familiar entry point. The concepts below hold for both.
When you would actually use AFAB
- The monthly close, as part of the fixed-asset step.
- Repeating a period after correcting an asset master or a depreciation key.
- Restarting a run that terminated part-way through.
- Posting an unplanned depreciation entered manually on an asset.
What the screen looks like
Selection
Reason for posting run
Processing options
| Asset | Description | Cost centre | Dep. area | Amount EUR | Status |
|---|---|---|---|---|---|
| 100001-0 | Delivery van | 0001200 | 01 | 412.50 | To be posted |
| 100002-0 | CNC machine | 0001400 | 01 | 2,187.00 | To be posted |
| 100007-0 | Office fit-out | 0001100 | 01 | 0.00 | No depreciation key |
The fields, in plain English
Which period to post. Must be the next one in sequence — SAP will not let you jump ahead or fill a gap later.
Watch out: This sequencing is the source of most AFAB frustration. If period 7 was never posted, period 8 will refuse until it is.
The normal monthly option. Posts the planned depreciation for the next period in sequence.
Re-posts a period that has already been posted, picking up only the difference. Used after correcting an asset master or depreciation key mid-month.
Watch out: Repeat posts the delta, not the whole amount again. Expecting a full re-post and seeing a small figure is normal.
For a run that terminated part-way — a short dump, a lock, a timeout. It resumes rather than starting over, so already-posted assets are not double-counted.
Watch out: After a failed run, use Restart, not Planned. Planned will refuse, and forcing it is how periods get posted twice.
Posts unplanned depreciation entered manually against an asset (via ABAA), outside the normal calculated schedule.
Calculates and lists everything without posting. The output shows exactly what would post per asset, and flags errors.
Watch out: A test run on a large asset base can exceed the dialogue time limit. Run it in background rather than removing the test flag to make it finish.
Step by step
- 1Confirm the previous period is already posted. AFAB will not skip.
- 2Enter company code, fiscal year and the next posting period.
- 3Choose the run reason — Planned for a normal month.
- 4Leave Test run ticked and execute.
- 5Read the log. Fix any assets flagged with errors — usually a missing depreciation key or cost centre.
- 6Re-run the test until it is clean.
- 7Untick Test run and execute in **background**, not in the foreground.
- 8Check the posted values in AW01N for a sample asset, and the G/L via FAGLL03.
Errors you will hit, and what they mean
Depreciation has already been posted for period 008
Why: The period is done. Planned run cannot repeat it.
Fix: If something changed since, use Repeat — it posts only the difference.
You cannot post to period 008 — period 007 has not been posted
Why: The sequential rule. A gap exists.
Fix: Post the missing period first, then continue. There is no way to skip.
Run terminated / session ended unexpectedly
Why: Timeout, lock or short dump part-way through.
Fix: Use **Restart**, not Planned. Restart resumes from where it stopped and will not double-post the assets already done.
Asset 100007-0: no depreciation key
Why: The asset master is incomplete — created without a depreciation key in that area.
Fix: Correct the asset master (AS02), then run a Repeat for the period.
Account determination error for depreciation
Why: The asset class points at an account determination with no G/L account configured for depreciation expense or accumulated depreciation.
Fix: A configuration gap. It needs the asset class and account determination checked together, not a workaround on the asset.
Common questions
What is the difference between AFAB and FAA_DEPRECIATION_POST?
FAA_DEPRECIATION_POST is the S/4HANA program for the depreciation run; AFAB is the classic transaction and is generally still available as an entry point. Same purpose, reworked underneath.
Can I undo a depreciation run?
Not directly — there is no reverse button. You correct the underlying asset data and run a Repeat for the period, which posts the difference. This is why the test run matters.
Why is depreciation showing on the asset but not in the G/L?
Because it is *planned*, not *posted*. AW01N shows planned values from the moment the asset exists. Only AFAB moves them into the ledger.
Do I have to run AFAB every month?
Yes. It is sequential and cannot skip, so a missed month has to be posted before the next one can be. Most organisations schedule it as part of the close.
Transactions that go with AFAB
Reading about it only gets you so far
Practise SAP transactions in a safe simulated environment and keep what you learn.
Practise SAP transactions hands-on
Interactive modules, games, and an AI tutor — free to start.
Get started free →