Posts

Subcontracting vs external processing in S/4HANA: tell them apart by their postings

Both of these mean “someone outside does part of the work.” They are configured differently, they post differently, and picking the wrong one gives you a cost structure you cannot analyse later. The fastest way to keep them straight is not the definition — it is the accounting entry each one produces. What follows are the actual postings from two products made side by side in the same S/4HANA client: kimchi dumplings made by a subcontractor , and shrimp dumplings made in-house with one outsourced operation . Subcontracting: the vendor makes the product We buy the semi-finished product as work . We supply the raw materials, the subcontractor shapes them, and a single goods receipt settles the entire arrangement. That one document fires several OBYC account-determination keys at once: Posting at the subcontract goods receipt Amount OBYC key Dr 5080 raw material consumed — supplied to subcontractor 4,200 GBB · VBO Cr 1050...

GR/IR explained with real documents: why buying something posts nothing to your P&L

Buying 6,700 KRW of pork and wrappers produced four documents, two accounting entries, and zero effect on the profit and loss statement. That surprises people the first time they trace it, and the reason it works that way is the single most useful thing to understand about procurement in SAP. Below is the actual relay, with the real document numbers from a dumpling factory I built from an empty S/4HANA client. Four documents, but only two of them are accounting # Document What it claims Accounting entry 1 Requisition · ME51N EBAN 0199000553 “we want this” — internal only none 2 Purchase order · ME21N EKKO 4500006934 a promise to the vendor none 3 Goods receipt · MIGO 101 MSEG 5000006252 “it physically arrived” Dr 1050 raw material Cr 9010 GR/IR 4 Invoice receipt · MIRO RBKP 5100004739 “the vendor billed us” Dr 9010 GR/IR + input tax Cr 2...

A 36% margin became 6% at month-end, and every posting was correct

On the day we shipped, the billing document said the margin was 36% . Three weeks later, after the close, the same sale carried a margin of 6% . Nobody made a mistake. No posting was reversed. Every document in between was correct. This is the part of SAP that spreadsheets never prepare you for, so it is worth walking through with real numbers. Everything below comes from a small dumpling factory I built from an empty S/4HANA client and drove through one complete business month. 1. The sale looked great A sales order for 20,000 KRW of dumplings, delivered and billed: Step Transaction Effect Sales order VA01 Revenue 20,000 · standard cost of goods 12,800 → expected margin 7,200 (36%) Goods issue VL01N → PGI Cost of goods sold hits the P&L for the first time — at standard Billing VF01 Revenue 20,000, receivable 22,000 (incl. tax) If you stop reading the system here — and a lot of people do, because t...

Two books: an SAP S/4HANA business novel + the complete build record (The Dumpling Factory)

LAUNCH WEEK Use code LAUNCH20 at checkout for 20% off either book or the bundle — through 29 August 2026 . The buttons below already have it applied. Everything on this blog comes from one project: a small Korean dumpling company, built from a completely empty SAP S/4HANA client and driven through a full business month — plan, standard cost, purchase, produce, sell, close. I have now turned that project into two books . Same company, same real numbers, two very different altitudes. BOOK 1 · THE STORY · $25 How Sarah Joined a K-Dumpling Company and Became an SAP Genius A business novel about SAP S/4HANA. Sarah is a junior accountant at a dumpling factory; when 6,700 won of ingredients vanish from the balance sheet overnight, a consultant named J starts teaching her how a company actually works — one posting at a time. By the last chapter she has watched a 36% margin quietly become 6%, with every posting correct and nobody doing anything wron...

Production Order Variance Calculation KKS1 — Fixing KV031 and KV011, and What Lands in COSB

In the last post on cost center variance calculation (KSS1) I noted that the similarly-named KKS1 is a different animal. This is that post: production order variance calculation. I hit two errors on the way in, so we start with their causes and fixes, then verify — by comparing the database before and after — exactly what gets stored where. Environment: controlling area JNC2, plant JNC2, period 2026/008, KRW, three production orders. ※ Screens, menus, and settings may differ depending on your SAP release and system configuration. Two errors before it would even run KV031 ("no target cost version") — version 0 itself existed. What was empty was the variance variant for orders (AWVAO) in OKV6: only the cost-center one (AWVAS) was maintained, which is why KSS1 worked fine while KKS1 refused. Same OKV6 screen, different column. KV011 is an order status problem. Order 1004916 got its goods receipt and final delivery on August 2 — run KKS1 for period 007 and, as of that pe...

Cost Center Month-End in Four Steps — What Does KSS1 Variance Calculation Actually Leave Behind?

This post covers the last stretch of cost center month-end: variance calculation. The four steps are KSS2 (actual cost splitting) → KSS3 (target cost basis display) → KSII (actual price calculation) → KSS1 (variance calculation) — and for each step I compared the database before and after execution to see exactly which tables it touches. Environment: controlling area JNC2, cost center JNC29010, period 2026/007, KRW, S/4HANA 2021. ※ Screens, menus, and settings may differ depending on your SAP release and system configuration. One of the four steps is different in kind KSS3 has no Test Run checkbox and saves nothing. It computes target costs on the fly from the splitting result and actual activity quantities every time you view it. The other three steps each update different tables: T-code Step Test Run Updates KSS2 Actual cost splitting yes COSS KSS3 Target cost display n/a nothing (computed on view) KSII Actual price calculation yes COKL, COSL + CO documents (the on...

Creating a Custom Movement Type in SAP — From OMJJ Through OBYC Account Determination to the FB03 Posting

This post walks through creating custom movement types, actually posting a goods issue with them, and verifying that the intended G/L account shows up in the accounting document. The order: copy a standard movement type in OMJJ to create ZZ1 (other goods issue) and ZZ2 (its reversal), wire up the account in OBYC , post with MIGO , and read the journal entry in FB03 . Environment: client 100, company code CC10. ※ Screens, menus, and settings may differ depending on your SAP release and system configuration. OMJJ — always copy, never create from scratch Movement types are created by copying an existing one; I used 202 (reversal of issue to cost center) as the source. The 11 folders in the Dialog Structure are the full bundle of settings that make up one movement type — of these, only two touch accounting directly: Account Grouping (the account modification key) and Update control (quantity/value updates). In the detail screen of ZZ2, the Internal Control block is greyed out be...