| Status | |
| Owner | Bernard Ng |
| Stakeholders |
The purpose of this document is to define the conversion approach to migrate unposted legacy withholding tax (WHT) in S/4 HANA.
In general, WHT could be posted at the point of payment or at the point of invoice.
The scope for this CNV 9020 is to cover AP and AR open items where WHT is posted at the point of payment.
Illustration:
Invoice below has been posted in ECC.
Dr. Expense 1000
Dr. VAT 100
Cr. Vendor 1100
The objective for this object is to store the WHT information in the table so when posting payment in S/4, system is able to calculate and post WHT correctly as below:
Dr. Vendor 1100
Cr. WHT 10
Cr. Bank 1090
The scope of this document covers the approach for converting unposted withholding tax items with AP / AR open items from Legacy Source Systems into S/4HANA.
There are 2 group go-live as below:
Note: There is possibility to shift into 1 go live date, this option is currently still being considered.
The data from legacy system includes:
These withholding taxes migrated to S4 are expected to be posted during payment clearing.
The data from legacy system excludes:
Relevancy rule :
| Source | Scope | Source Approx No. of Records | Target System | Target Approx No. of Records |
|---|---|---|---|---|
| PF2 | withholding tax items of AP / AR open items | 1000 | S4 | 1000 |
| WP2 | withholding tax items of AP / AR open items | 1000 | S4 | 1000 |
| PI2 | withholding tax items of AP / AR open items | 10000 | S4 | 10000 |
Scope of the migration is based on withholding tax linked to migrated AP OPEN ITEMS (9006), AP SPECIAL GL OPEN ITEMS (9007), AR OPEN ITEMS (9008) and AR SPECIAL GL OPEN ITEMS (9009), which have not been posted during legacy open item posting. The withholding tax codes will be mapped in a table (link). If such withholding tax codes are part of the AP/AR objects scope ie same document number/year/company code combination, the respective WITH_ITEM data will be extracted for migration together with each object. There will be no withholding tax posting /line item since it was not posted in legacy yet.
All currencies will be loaded accordingly unless there is a change in company design where local / group currency changes. Rates are as per the historical postings unless specific requirement calls for a fixed rate eg. group currency rate for consolidation purposes.
Offsetting gl account is respective migration account for AP, AR migration objects (refer link).
There will be no migration of unmapped withholding tax codes ie. history of posted withholding tax will remain in legacy system and will not be posted again in S4. Current year withholding tax reports will be a combination of legacy system data and S4 system data after go-live.
N/A
N/A
N/A
Due to compliance requirement, there will be 3 SAP instances as below:
Withholding data will be migrated to respective SAP instances based on the company codes. Please refer to column "Company Code" and "Instance" in Enterprise Structure Catalog - Google Sheets (worksheet 10. Company code),
With Functional input, document the technical design of the target fields that are in the scope of this document.
The technical design of the target for this conversion approach.
| Table | Field | Field Description | Data type | Length (Decimals) | Requirement |
| WITH_ITEM | BUKRS | Company Code | CHAR | 4 | Mandatory |
| WITH_ITEM | BELNR | Document Number | CHAR | 10 | Mandatory |
| WITH_ITEM | GJAHR | Fiscal Year | NUMC | 4 | Mandatory |
| WITH_ITEM | DOCLN | Line item | NUMC | 3 | Mandatory |
BSIK/BSAK/ BSID/BSAD | LIFNR / KUNNR | Vendor / Customer | CHAR | 10 | Mandatory |
| WITH_ITEM | WITHT | Withholding tax type | CHAR | 2 | Mandatory |
| WITH_ITEM | WT_WITHCD | Withholding tax code | CHAR | 2 | Mandatory |
| WITH_ITEM | WT_QSSHH | W/tax base amnt in LC | CURR | 15(2) | Mandatory |
| WITH_ITEM | WT_QSSHB | W/tax base amount DC | CURR | 15(2) | Mandatory |
| WITH_ITEM | WT_QSSH2 | W/tax base amount LC2 | CURR | 15(2) | Optional |
| WITH_ITEM | WT_QSSH3 | W/tax base amount LC3 | CURR | 15(2) | Optional |
| WITH_ITEM | WT_BASMAN | W/tax bse amnt entered man. | CHAR | 1 | Mandatory |
| WITH_ITEM | WT_QBSHH | Withholding tax amnt LC | CURR | 15(2) | Mandatory |
| WITH_ITEM | WT_QBSHB | Withholding tax amnt DC | CURR | 15(2) | Mandatory |
| WITH_ITEM | WT_QBSH2 | Withholding tax amnt LC2 | CURR | 15(2) | Optional |
| WITH_ITEM | WT_QBSH3 | Withholding tax amnt LC3 | CURR | 15(2) | Optional |
| WITH_ITEM | WT_AMNMAN | W/tax amount entered manually | CHAR | 1 | Mandatory |
| WITH_ITEM | WT_QSFHH | W/tax exempt amount in LC | CURR | 15(2) | Optional |
| WITH_ITEM | WT_QSFHB | W/tax exempt amount in DC | CURR | 15(2) | Optional |
| WITH_ITEM | WT_QSFH2 | W/tax exempt amount in LC2 | CURR | 15(2) | Optional |
| WITH_ITEM | WT_QSFH3 | W/tax exempt amount in LC3 | CURR | 15(2) | Optional |
All data cleansing should take place in the data source system as defined in this document, unless system limitations prevent it.
If data cleansing is managed outside of the source system (e.g. ETL Tool, 3rd Party Vendor, DCT), the necessary documentation must be produced and appended to this deliverable for sign-off.
ID | Criticality | Error Message/Report Description | Rule | Output | Source System |
| N/A | |||||
The high-level process is represented by the diagram below:
Summarize High-Level Process. Include diagrams, where applicable. Include information supporting details of Extract, Transform and Load specific to the Data Object
The high-level process is as follows :
Extract data from a source into Syniti. There are 2 possibilities:
The agreed Relevancy criteria is applied to the extracted records to identify the records that are applicable for the Target loads
Req # | Requirement description | Team responsible |
1. | Ensure source table WITH_ITEM is extracted according to the agreed cut-off date in the project plan | Data team |
2. | Perform preliminary completeness check | Data team |
3. | Raise issues as defects if Req # 1 to 3 are not met | Data team |
4. | Repeat Req # 1 to 4 if required | Data team |
5. | Report extraction result to person in charge of conversion | Data team |
| Selection Ref Screen | Parameter Name | Selection Type | Requirement | Value to be entered/set |
|---|---|---|---|---|
DCT will not be required since Syniti will extract legacy data from 3 legacy systems WP2, PF2 and PI2.
List the steps that need to occur before extraction can commence
Item # | Step description | Team responsible |
1. | Any period / year end close activities have been fully completed | Business |
2. | Finance closing is completed and reconciled | Business |
The Target fields are mapped to the applicable Legacy field that will be its source, this is a 3-way activity involving the Business, Functional team and Data team. This identifies the transformation activity required to allow Syniti to make the data Target ready:
Item # | Step description | Team responsible |
1. | Ensure all the fields that require value mapping, are completed. Mapping tables have the latest signed-off mapping files imported into ETL Tool. | Data team |
2. | In tool, select the AP / AR Open Items object. | Data team |
3. | Go to Process Area Launch and Process the Object - AP / AR Open Items . | Data team |
4. | Launch the Objects to execute transformation. | Data team |
5. | Monitor the transformation progress and ensure performance and completion is within allowed timeframe | Data team |
6. | Generate Pre-Load reports . | Data team |
7. | Generate data load count. | Data team |
8. | Log errors as defects, if any and address resolutions. Close defects. | Data team |
9. | Re-transform and re-validate the Pre-load reports if necessary. | Data team |
10. | Validate the transformed file as part of pre-load validation, raise data defects or provide the pre-load sign-off. | Business |
11. | Analyse and resolve any pre-load defects logged by business. | Data team |
12. | Repeat steps 6 to 11 if necessary | Data team |
13. | Proceed to pre-load validations | Data team |
Transformation Rules
| Rule # | Source system | Source Table | Source Field | Source Description | Target system | Target Table | Target Field | Target Description | Transformation logic |
| 1 | Legacy | WITH_ITEM | BUKRS | Company Code | S/4HANA | WITH_ITEM | BUKRS | Company Code | Map from source to target using Company code mapping table (refer link). |
| 2 | Legacy | WITH_ITEM | BELNR | Document Number | S/4HANA | WITH_ITEM | BELNR | Document Number | If wtax code is in mapping table (link) and these fields match with AP / AR extraction according to Doc + Year + company code, this record will be combined to become 1 field (REFERENCE DOCUMENT NUMBER) for matching with AP / AR record |
| 3 | Legacy | WITH_ITEM | GJAHR | Fiscal Year | S/4HANA | WITH_ITEM | GJAHR | Fiscal Year | |
| 4 | Legacy | WITH_ITEM | DOCLN | Line item | S/4HANA | WITH_ITEM | DOCLN | Line item | Running number starting from 001 |
| 5 | Legacy | BSIK/BSAK/ BSID/BSAD | LIFNR / KUNNR | Vendor / Customer | S/4HANA | BSIK/BSAK/ BSID/BSAD | LIFNR / KUNNR | Vendor / Customer | Map from BP mapping XREF |
| 6 | Legacy | WITH_ITEM | WITHT | Withholding tax type | S/4HANA | WITH_ITEM | WITHT | Withholding tax type | Map from source to target using Withholding tax mapping table (link). |
| 7 | Legacy | WITH_ITEM | WT_WITHCD | Withholding tax code | S/4HANA | WITH_ITEM | WT_WITHCD | Withholding tax code | Map from source to target using Withholding tax mapping table (link). |
| 8 | Legacy | WITH_ITEM | WT_QSSHH | W/tax base amnt in LC | S/4HANA | WITH_ITEM | WT_QSSHH | W/tax base amnt in LC | Copy source value |
| 9 | Legacy | WITH_ITEM | WT_QSSHB | W/tax base amount DC | S/4HANA | WITH_ITEM | WT_QSSHB | W/tax base amount DC | Copy source value |
| 10 | Legacy | WITH_ITEM | WT_QSSH2 | W/tax base amount LC2 | S/4HANA | WITH_ITEM | WT_QSSH2 | W/tax base amount LC2 | Automatically converted during posting |
| 11 | Legacy | WITH_ITEM | WT_QSSH3 | W/tax base amount LC3 | S/4HANA | WITH_ITEM | WT_QSSH3 | W/tax base amount LC3 | Automatically converted during posting |
| 12 | Legacy | WITH_ITEM | WT_BASMAN | W/tax bse amnt entered man. | S/4HANA | WITH_ITEM | WT_BASMAN | W/tax bse amnt entered man. | Default X |
| 13 | Legacy | WITH_ITEM | WT_QBSHH | Withholding tax amnt LC | S/4HANA | WITH_ITEM | WT_QBSHH | Withholding tax amnt LC | Copy source value |
| 14 | Legacy | WITH_ITEM | WT_QBSHB | W/tax amount in DC | S/4HANA | WITH_ITEM | WT_QBSHB | W/tax amount in DC | Copy source value |
| 15 | Legacy | WITH_ITEM | WT_QBSH2 | Withholding tax amnt LC2 | S/4HANA | WITH_ITEM | WT_QBSH2 | Withholding tax amnt LC2 | Automatically converted during posting |
| 16 | Legacy | WITH_ITEM | WT_QBSH3 | Withholding tax amnt LC3 | S/4HANA | WITH_ITEM | WT_QBSH3 | Withholding tax amnt LC3 | Automatically converted during posting |
| 17 | Legacy | WITH_ITEM | WT_AMNMAN | W/tax amount entered manually | S/4HANA | WITH_ITEM | WT_AMNMAN | W/tax amount entered manually | Default X |
| 18 | Legacy | WITH_ITEM | WT_QSFHH | W/tax exempt amount in LC | S/4HANA | WITH_ITEM | WT_QSFHH | W/tax exempt amount in LC | Copy source value |
| 19 | Legacy | WITH_ITEM | WT_QSFHB | W/tax exempt amount in DC | S/4HANA | WITH_ITEM | WT_QSFHB | W/tax exempt amount in DC | Copy source value |
| Legacy | WITH_ITEM | WT_QSFH2 | W/tax exempt amount in LC2 | S/4HANA | WITH_ITEM | WT_QSFH2 | W/tax exempt amount in LC2 | Automatically converted during posting | |
| Legacy | WITH_ITEM | WT_QSFH3 | W/tax exempt amount in LC3 | S/4HANA | WITH_ITEM | WT_QSFH3 | W/tax exempt amount in LC3 | Automatically converted during posting |
List of Custom Target Reports for this object is maintained here: Conversion Specification - Custom Reports Register.
Note on currencies :
Currency Adjustment During Migration (TCURX Consideration)
In SAP, the TCURX table defines the number of decimal places used for each currency.
This impacts how amounts are stored internally in database tables versus how they are displayed externally in user interfaces or reports.
Currencies such as JPY (Japanese Yen), KRW (Korean Won), or VND (Vietnamese Dong) are typically configured with no decimal places (TCURX-CURRDEC = 0).
Understanding and correctly applying the TCURX rules is essential during data migration to ensure financial consistency between ECC and S/4HANA.
Internal vs External Currency Representation example:
External Amount
The amount value as displayed to users in SAP screens and reports.
96015 JPY
Internal Amount
The amount value stored in database tables for computation.
960.15
Multiplied by factor = 10² if target has 2 decimals
During data migration, these internal (technical) amounts must be converted to external amounts to ensure accuracy and consistency in the target S/4HANA system.
Conversion Formula:
External Amount = Internal Amount * 10 to the power ( 2 - Number of decimal for the currency in TCURX table )
Mapping Table Name | Mapping Table Description |
Company Code | Mapping of legacy company codes to target system value |
Withholding Tax | Mapping of legacy withholding tax types and tax codes to target system value by country and company code (withholding tax in scope only) |
| Item # | Step Description | Team Responsible |
|---|---|---|
| 1 | Ensure all the fields that require value mapping, as stipulated. Mapping tables, have the correct values mapped and imported into tool. | Data team |
Task | Action |
Generation of | Mandatory field check. Check if records have all mandatory fields filled and mapped, otherwise they should be flagged as error. Check signage of amount. Check whether source data (including DCT) has debit and credit entries in the same line. If sign is the same in all the three currency fields, then no action needed. If the sign in the document currency and company code currency field are different, then the document needs to be corrected in the source system or DCT. Ensure all transactions have values in Document Currency and Local Currency |
Reconciliation of total | Record Count Check the sum of record count of the AP /AR withholding tax items in the load file is the same as source. The record count for AP / AR withholding tax items will be done on the group basis. The fields in the group are consist of: Company Code, withholding tax code Check Amount in Document Currency and Local Currency Check the sum of the amount in Document Currency and Local Currency in load file is the same as source. If any of the sum is different, flag the record as error. |
Task | Action |
Mandatory field mapping and transformation | Obtain a list of the fields to be populated with values from mapping files and ensure all these fields contain S/4HANA values. |
| Task | Action |
|---|---|
| Verify record count in Pre-load reports by region | In legacy system, execute withholding tax reports for withholding tax codes and AP / AR document numbers by company. Group the output of the report by Company Code and compare the count in this report against the AP / AR withholding tax items count in the pre-load file. If any of the count is different, raise defect and flag the relevant record as error. |
| Task | Action |
|---|---|
| Conversion accuracy | Verify AP/AR withholding tax items are transformed accurately as per endorsed transformation/mapping rules. Review error reports in tool for any mismatch or missing transformed values. In legacy system, execute withholding tax report (t/code: S_P00_07000134) with selection parameters. If any of the sum is different, raise defect and flag the relevant record as error. |
Loading will be done through migration cockpit at respective objects (AP OPEN ITEMS (9006), AP SPECIAL GL OPEN ITEMS (9007), AR OPEN ITEMS (9008), AR SPECIAL GL OPEN ITEMS (9009) and therefore, data from the transformation export view to be exported into the load file format.
3 export views to be prepared based on the field list from the XML load templates attached.

Item | Step description | Team responsible |
1 | Ensure the load tools are transported into the correct tool instance. | Data team |
2 | Ensure DCTs and all required mappings are submitted and complete | Data team |
3 | Ensure Pre-load sign-offs are obtained. | Data team |
4 | Execute tool AP/AR withholding tax items | Data team |
5 | Generate the post load reports in tool. | Data team |
6 | Log errors as defects, if any and address resolutions. Close defects. | Data team |
7 | Resolve defects by reupload and re-generate post load reports if necessary. | Data team |
8 | Business to validate the post load files as part of post-load validation, raise data defects or provide the post-load sign-off. | Business |
9 | Repeat steps 5 to 7 if necessary. | Data team |
Load Phase and Dependencies
Identify the phase as to “when” the load for this object will occur. <Pre-Cutover, Cutover, Post Cutover> and list the steps that need to occur before the load can commence
List the Configurations required before loading can commence
Item # | Configuration item |
1. | Company code-related configuration (posting period variant). |
2. | Finance posting (document types, document number ranges, special gl indicator) |
3. | Currencies (currency keys, decimal places in currencies) |
4. | Withholding Tax (tax types , tax codes) |
| Object # | Preceding Object Conversion Approach |
|---|---|
| 1067 | GL Account Operational CoA (incl. secondary CE) |
| 3018 | Business Partners - FI Vendor (FLVN00) |
| 9006 | AP Open Items |
| 9007 | AP Special GL Open Items |
| 9008 | AR Open Items |
| 9009 | AR Special GL Open Items |
The table below depicts some possible system errors for this data object during data load. All data load error is to be logged as defect and managed within the Defect Management
Error type | Error description | Action taken |
Withholding Tax type does not exist | Withholding Tax type does not exist in company | Ensure the Withholding tax type mapping is correct |
Withholding Tax code does not exist | Withholding Tax code does not exist in company | Ensure the Withholding tax code mapping is correct |
| Task | Action |
|---|---|
| Reconciliation of Record Count | Total number of records loaded for AP /AR withholding tax items will be generated in the Post-load reports in tool based on the target table and fields mentioned The reconciliation needs to be executed on the total number of ‘valid’ records and currency amount per company code in the source compared to total number of records and currency amount in S/4HANA Record Count Check the sum of record count of the tax items in the load file is the same as S/4HANA. The record count for AP/AR withholding tax items will be done on the group basis. The fields in the group are consist of: Company Code, withholding tax code Check Amount in Document Currency and Local Currency Check on line item level that the sum of the amount in Document Currency and Local Currency in the load file is the same as posted in S/4HANA. If any of the sum is different, flag the record as error. |
| Task | Action |
|---|---|
| Check values in key fields for accuracy | Post-load reports will have the same structure as the load file and some additional columns as required to facilitate the post load validation. Leverage on tool to create a Post Load report that reports S/4HANA loaded records along with the legacy values side-by-side to allow for 100% check of all these fields in the shortest possible time. Any mismatch will be reported under the Post Load - Error report. |
| Task | Action |
|---|---|
| Record Count Check | Review the record count report from the Data Team and ensure it is correct by cross-checking with the record count confirmed during Pre-load Business Validations |
| Task | Action |
|---|---|
| Withholding tax items totals | Check withholding tax totals by Company code. Totals should be checked in Document, Local and Group currency. |
| Spot check | Business should choose some tax codes and perform comprehensive check of withholding tax items etc. Such companies should have huge number of withholding tax items or have certain complexity in conversion. |
Any additional key assumptions.