Analytics Catalog/SAP S/4HANA/Transaction Tax/Tax Register
Explore the catalogBSETBKPFGeneral LedgerCDS viewsExtraction
SAP S/4HANA · Transaction Tax (FI-Tax)

Tax Register

The VAT return — output tax on sales versus input tax on purchases, by tax code, to the net VAT payable (the old RFUMSV00 / S_ALR_87012357), built on BSET — including the zero-rated lines a G/L line-item report would miss.

Sample build of the Tax Register report — output versus input tax by code to the net VAT payable, reconciled to the G/L tax accounts, and rendered tool-neutral so it runs in Power BI, SAC, or Tableau.

Tax Register sample
Q2 2026 · output + input
Filters
Company code
1010
Tax period
Apr–Jun 2026
Reporting date
Tax date
Tax codes
All
0.95M
Output tax
0.61M
Input tax
0.34M
Net VAT payable
9.15M
Tax base
Tax codeDirectionTax baseTax amount
A1 · Output 19%Output (sales)5,000,000950,000
A0 · Output 0%Output (sales)800,0000
V1 · Input 19%Input (purchases)3,200,000608,000
V0 · Input 0%Input (purchases)150,0000
AI Analyst · active
reading

Every tax-relevant line by code — base, amount, and direction. Output tax on sales (0.95M) less input tax on purchases (0.61M) is the net VAT payable (0.34M) for the period.

flag

Tax code A0 carries 800K of base at 0% — zero-rated (e.g. exports). Confirm it is genuinely zero-rated and not a missing tax code: BSET captures it, but a G/L tax-account line-item report would not show it at all.

root cause & next step

BSET stores tax summarized per document per code, including 0% lines. Reconcile the tax to the G/L tax accounts before filing; once filed, RFUMSV00 stamps BSET so a document can't appear in two returns.

Illustrative data · reconciled to the G/L tax accounts · runs on your warehouse. See it live →
BSET · tax lines+BKPF · header────▶Tax Register

The report's query logic — generic SQL on BSET, the tax line-item table. It sums the base and tax by tax code and direction, so output tax less input tax gives the net VAT payable. The same SQL becomes a dbt model in your warehouse.

How it interconnects: BSET carries the per-code tax summary, joined to BKPF for the document date and the tax reporting date. The transaction key KTOSL splits output (MWS) from input (VST). Reading BSET — not a G/L tax-account line-item report — is what captures the zero-rated lines.
SQL data set · genericized · parameterized · output vs input tax by code, reads BSET
Show / hide SQL
SELECT  b.mwskz                          AS tax_code,
        b.ktosl                          AS transaction_key,
        CASE WHEN b.ktosl = 'MWS' THEN 'Output (sales)'
             WHEN b.ktosl = 'VST' THEN 'Input (purchases)'
             ELSE 'Other' END            AS direction,
        SUM(b.hwbas)                      AS tax_base,
        SUM(b.hwste)                      AS tax_amount
FROM    bset b
JOIN    bkpf k ON k.bukrs = b.bukrs
             AND k.belnr = b.belnr
             AND k.gjahr = b.gjahr
WHERE   b.bukrs = :P_COMPANY_CODE
  AND   k.budat BETWEEN :P_FROM_DATE AND :P_TO_DATE   -- or the tax reporting date
GROUP   BY b.mwskz, b.ktosl
ORDER   BY direction, b.mwskz;
:P_COMPANY_CODE :P_FROM_DATE :P_TO_DATE
Never any customer schema. Net VAT payable = output tax − input tax. BSET records even 0% lines (a base with no tax), so zero-rated exports appear here but would be missing from a G/L tax-account line-item report. Reconcile the tax to the G/L tax accounts; once filed, RFUMSV00 stamps BSET so a document can't appear in two returns.

The data-warehouse model — one fact surrounded by conformed dimensions (what you slice by) and measures (what you aggregate), expressed as dbt so it migrates with you. Grain: one row per tax line (document · tax code).

dim_tax_codecode · rate · direction dim_gl_accounttax G/L account dim_company_codeentity · country dim_dateposting · tax date fct_tax_linefact · one row per tax linetax base · tax amount
●— fact → dimension join
ElementTypeDefinition
dim_tax_codedimensionTax code (MWSKZ) — rate, treatment, and direction (output / input)
dim_gl_accountdimensionThe G/L tax account the amount posted to (HKONT)
dim_company_codedimensionReporting entity & country for the return
dim_datedimensionConformed calendar — posting date & tax reporting date
tax_basemeasureTax base amount the tax is calculated on (HWBAS)
tax_amountmeasureTax amount — output (payable) or input (deductible) (HWSTE)
net_vat_payablemeasureOutput tax less input tax — what is owed to the authority
Runs on your cloud warehouse — Snowflake, BigQuery, Redshift, or Synapse on AWS, Google Cloud, or Azure. Reconciled to the G/L tax accounts — 0% variance by design. You own the code, the model, and the data.
How the data gets here: a SAP-compliant extract of BSET joined to BKPF — via SLT or Table/Table-CDC — never ODP-RFC (prohibited under SAP Note 3255746, blocked June 2026). See the extraction pattern & data flow →
See the complete model
How this report's tax fact and dimensions fit the full owned model, via conformed keys.
Transaction Tax data model → Enterprise model →

Every source object behind this report. Each linked object has its own page — with its fields and its real S/4HANA status, so you build on the right thing.

ObjectRoleKey fieldsS/4HANA status
BSETTax data document segment — one summarized tax line per code (MWSKZ · KTOSL)4 PK · base/amtTransparent table
BKPFDocument header — posting date, tax reporting date, document typeBUKRS · BELNR · GJAHRTransparent table
BSEGSource line items behind the tax code — joined back for line detailBUKRS · BELNR · GJAHRTransparent table
I_GLAccountLineItemReleased journal-entry line view — carries the tax code at line levelreleasedReleased CDS view
T007ATax codes (Customizing) — the rate and treatment behind each MWSKZconfigCustomizing table
WITH_ITEMWithholding-tax line items — the companion for vendor withholdingreferenceTransparent table
RFUMSV00The VAT-return program (S_ALR_87012357) — SAP's own logic over BSETprogramStandard report
Key fields = the primary key plus the columns this report selects; S/4HANA status = whether the object is a live transparent table, a released CDS view, a Customizing table, or a standard report. Extract the released CDS view or the transparent table directly — never via ODP-RFC.
Want this built & owned?
A reconciled, customer-owned VAT / tax layer on BSET, on your cloud — output vs input by code, your team owns the code. Ten-day proof of concept.
Download the tax pack → Talk to us →