Withholding Tax
Tax withheld from vendor payments — by withholding type, code, and vendor — the base, the rate, and the amount, built on WITH_ITEM (extended withholding tax).
Sample build of the Withholding Tax report — tax withheld by type, code, and vendor, reconciled to the withholding G/L account, and rendered tool-neutral so it runs in Power BI, SAC, or Tableau.
| Type · code | Vendor | Base | Rate | Withheld |
|---|---|---|---|---|
| IN01 · Contractor | Acme Supply | 500,000 | 10% | 50,000 |
| IN01 · Contractor | Beta Works | 300,000 | 10% | 30,000 |
| IN02 · Professional | Gamma Pro | 200,000 | 0% | 0 |
Tax withheld from vendor payments by withholding type and code — the base, the rate, and the amount withheld from each vendor, to be remitted to the authority.
Gamma Pro (type IN02) has 200K of base but 0 withheld — the rate on the WITH_ITEM line is blank while the withholding code is configured at 5% (SAP KBA 1773154). Source the rate from config and confirm the withholding actually posted.
The rate (QSATZ) can be empty on the line even when the code carries a rate in config (T059Z). Reconcile the withheld amount to the withholding G/L account and to each vendor's certificate / return before remitting.
The report's query logic — generic SQL on WITH_ITEM, the withholding line-item table. It sums the base and withheld amount by withholding type, code, and vendor. The same SQL becomes a dbt model in your warehouse.
Show / hide SQL
SELECT w.witht AS wh_type,
w.wt_withcd AS wh_code,
s.lifnr AS vendor,
SUM(w.wt_qsshb) AS wh_base,
SUM(w.wt_qbshb) AS wh_tax
FROM with_item w
JOIN bseg s ON s.bukrs = w.bukrs
AND s.belnr = w.belnr
AND s.gjahr = w.gjahr
AND s.buzei = w.buzei -- the vendor line the withholding sits on
WHERE w.bukrs = :P_COMPANY_CODE
AND w.gjahr = :P_FISCAL_YEAR
GROUP BY w.witht, w.wt_withcd, s.lifnr
ORDER BY w.witht, s.lifnr;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 withholding line (document · type).
| Element | Type | Definition |
|---|---|---|
| dim_wh_type | dimension | Withholding type & code (WITHT · WT_WITHCD) — the rate and basis |
| dim_vendor | dimension | The supplier the tax was withheld from (LIFNR / Business Partner) |
| dim_company_code | dimension | Reporting entity & country for the return |
| dim_date | dimension | Conformed calendar — posting date |
| wh_base | measure | Withholding base amount the tax is calculated on (WT_QSSHB) |
| wh_tax | measure | Amount withheld and remitted to the authority (WT_QBSHB) |
| rate | attribute | Withholding rate — sourced from config (T059Z), not always the line |
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.
| Object | Role | Key fields | S/4HANA status |
|---|---|---|---|
| WITH_ITEM | Withholding-tax info — one row per withholding type per FI line (WITHT · WT_WITHCD) | 5 PK · base/amt | Transparent table |
| BSEG | The vendor line the withholding sits on — supplier (LIFNR) | BUKRS · BELNR · GJAHR · BUZEI | Transparent table |
| BKPF | Document header — posting date, document type | BUKRS · BELNR · GJAHR | Transparent table |
| T059Z | Withholding tax codes (Customizing) — the rate (QSATZ) behind each code | config | Customizing table |
| T059P | Withholding tax types (Customizing) — gross vs net, accumulation | config | Customizing table |
| I_OperationalAcctgDocItem | Released vendor/customer line view — supplier & payment context | released | Released CDS view |
| LFBW | Vendor withholding-tax master — which types apply to a supplier | reference | Transparent table |