| Status | |
| Owner | Bernard Ng |
| Stakeholders |
Purpose
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
Conversion Scope
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:
- Group 1 go-live (1 July 2028) (System PF2)
- Group 2 go-live (1 Jan 2029) (System WP2)
Note: There is possibility to shift into 1 go live date, this option is currently still being considered.
The data from legacy system includes:
- withholding tax items related to AP normal open item/AP special GL open items as per object # 9006/9007, that are in withholding tax mapping table.
- withholding tax items related to AR normal open item /AR special GL open items as per object # 9008/9009, that are in withholding tax mapping table
These withholding taxes migrated to S4 are expected to be posted during payment clearing.
The data from legacy system excludes:
- withholding tax items that are not mapped due to invoice level posting in legacy (avoid double posting)
Relevancy rule :
- Initial extract all documents from WITH_ITEM for mapped withholding tax codes mapped in link with fiscal year =< 2 years from migration cutoff date (note the 2 years is to avoid extracting all history years which are not relevant to AP or AR scope)
- refer to relevant data extracted from object # 9006/9007/9008/9009 (document number, fiscal year, company code)
- filter for same document number + fiscal year + company code + wtax type + wtax code from WITH_ITEM table initial extracts
| 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.
Additional Information
Multi-language Requirement
N/A
Document Management
N/A
Legal Requirement
N/A
Special Requirements
Due to compliance requirement, there will be 3 SAP instances as below:
- SAP instance for Rest of the World (ROW)
- SAP instance for China
- SAP instance for CUI
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),
Target Design
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 |
| (internal) | 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 |
Data Cleansing
ID | Criticality | Error Message/Report Description | Rule | Output | Source System |
| N/A | |||||
Conversion Process
The high-level process is represented by the diagram below:
The high-level process is as follows :
- Extract from legacy systems
- Transformation : Based on dependent objects (Open AP / AR) , check if wtax codes are mapped in mapping tables. If matched, the respective load data will be generated to respective load file outputs to be combined into respective OPEN AP / AR load files
- Load process will be performed in respective OPEN AP / AR objects via respective tool eg. LTMC
- There is no loading for this object on its own
Data Privacy and Sensitivity
Extraction
Extract data from a source into Syniti. There are 2 possibilities:
- The data exists. Syniti connects to the source and loads the data into Syniti.
The agreed Relevancy criteria is applied to the extracted records to identify the records that are applicable for the Target loads
Extraction Run Sheet
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 Screen
| Selection Ref Screen | Parameter Name | Selection Type | Requirement | Value to be entered/set |
|---|---|---|---|---|
Data Collection Template (DCT)
DCT will not be required since Syniti will extract legacy data from 3 legacy systems WP2, PF2 and PI2.
Extraction Dependencies
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 |
Transformation
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:
- Perform value mapping and data transformation rules.
- Legacy values are mapped to the to-be values (this could include a default value)
- Values are transformed according to the rules defined in Syniti
- Prepare target-ready data in the structure and format that is required for loading via prescribed Load Tool. This step also produces the load data ready for business to perform Pre-load Data Validation
Transformation Run Sheet
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 | Line item | S/4HANA | (internal) | 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 )
Transformation Mapping
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) |
Transformation Dependencies
List the steps that need to occur before transformation can commence| 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 |
Pre-Load Validation
Project Team
Completeness
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. |
Reconcile wtax code between BP master and wtax open items | For withholding tax relevant to respective AP open items, compare the wtax type and code with the respective BP master wtax type/code. If different, this needs to be flag as a issue which require cleansing / decision from business to take action. |
Accuracy
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. |
Business
Completeness
| 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. |
Accuracy
| 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. |
Load
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.
- Create export view for the WITHHOLDING TAX ITEMS of AP OPEN ITEMS (9006), AP SPECIAL GL OPEN ITEMS (9007)
- Create export view for the WITHHOLDING TAX ITEMS of AR OPEN ITEMS (9008), AR SPECIAL GL OPEN ITEMS (9009)
Load Run Sheet
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
Configuration
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) |
Conversion Objects
| 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 |
Error Handling
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 |
Post-Load Validation
Project Team
Completeness
| 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. |
Accuracy
| 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. |
Business
Completeness
| 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 |
Accuracy
| 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. |
Key Assumptions
- Master Data Standard is up to date as on the date of documenting this conversion approach and data load.
- is in scope based on data design and any exception requested by business.
Change log
Workflow history
| Title | Last Updated By | Updated | Status | |
|---|---|---|---|---|
| There are no pages at the moment. | ||||

