รายงานนี้คือ “เครื่องคำนวณภาษีเงินได้นิติบุคคลรายเดือน” — เอางบการเงินตั้งต้น แล้วบวก/ลบรายการปรับปรุงทางภาษี จนได้กำไรทางภาษี × อัตรา = ภาษีที่ต้องตั้งค้างจ่าย ทุกบรรทัดในรายงานมาจาก 3 แหล่งเท่านั้น — GL node (ยอดจากระบบ) · UP node (ไฟล์อัปโหลด) · CL node (สูตรคำนวณ) FD ฉบับนี้เป็น delta document — เขียนเฉพาะสิ่งที่เปลี่ยนจาก ECC → S/4HANA
ZTAXA_T05–037) และส่งค่าให้กันผ่าน ZTAXB_T01
ZTAXA_T03) + CL node (สูตร)CIT_RC→CIT_TH · PITA1→PITA1_TH · PITA3→PITA3_TH · PITA4→PSC_TH · MTJDA เท่าเดิมIHQ → IBC-TC → รวมเป็น 8 layoutsVBUND)เครื่องมือคำนวณและประมาณการ “ภาษีเงินได้นิติบุคคลค้างจ่าย” รายเดือน
หลักการทางภาษี: กำไรทางบัญชี ≠ กำไรทางภาษี — ต้องปรับด้วย 2 ตระกูลรายการ
| Node | ชื่อเต็ม | แหล่งข้อมูล | แก้ไขยังไง |
|---|---|---|---|
GL | General Ledger node | ยอดจาก ACDOCA ผ่าน mapping ZTAXA_T01 | แก้ที่ mapping table หรือแก้เอกสาร |
UP | Upload node | flat file (โปรแกรม ZTAXA_R06) → เก็บใน ZTAXA_T03 | อัปโหลดใหม่ทับ |
CL | Calculation node | สูตรจาก node อื่น | แก้ไม่ได้โดยตรง — ต้องแก้ต้นทาง |
ZTAXA_T06
“Revaluated information will be based on LC3 — ข้อมูลที่ตีราคาใหม่สำหรับ current tax TH report
จะอยู่ใน ACDOCA field ของ LC3 ไม่ว่าจะเป็น standard หรือ custom solution ฝั่ง GL”
→ แปลว่าถ้าทีม GL เปลี่ยนวิธีทำ revaluation รายงานนี้ไม่ต้องแก้ ตราบใดที่ค่ายังลงที่ LC3
การเปลี่ยนชื่อ segment ดูเล็ก แต่กระทบทุก config ที่อ้างชื่อเดิม
| # | ECC (เดิม) | S/4HANA (ใหม่) | ความหมาย |
|---|---|---|---|
| 1 | CIT_RC | CIT_TH | Corporate Income Tax — ธุรกิจปกติในไทย |
| 2 | PITA1 | PITA1_TH | Petroleum Income Tax Act — ระบบสัมปทาน (ชุดที่ 1) |
| 3 | PITA3 | PITA3_TH | PITA ชุดที่ 3 |
| 4 | PITA4 | PSC_TH | เปลี่ยนความหมายชัดเจนขึ้น — Production Sharing Contract |
| 5 | MTJDA | MTJDA | Malaysia–Thailand Joint Development Area (ไม่เปลี่ยน) |
PSC_* เหมือนกัน
(ดู TAX-RPT-4 — PSC_DZ, PSC_MM, PSC_VN, PSC_OM, PSC_MY)| # | ECC | S/4HANA | Company code ตัวอย่าง |
|---|---|---|---|
| 1 | CIT_RC | CIT_TH | TH01 Client · XB01 (สาขาต่างประเทศ) |
| 2 | PITA1 | PITA1_TH | — |
| 3 | PITA3 | PITA3_TH | — |
| 4 | PITA4 | PSC_TH | — |
| 5 | IBC-SVCS | IBC-SVCS | 1013 Client SERVICES |
| 6 | IHQ | IBC-TC (เปลี่ยน) | 1086 Client TC |
| 7 | — | BOI (ใหม่) | 1126 FST |
| 8 | MTJDA | MTJDA | — |
IHQ (International Headquarters) เป็นสิทธิประโยชน์ทางภาษีรุ่นเก่าที่ถูกยกเลิก และแทนที่ด้วย IBC (International Business Center) — จึงต้องเปลี่ยนทั้งชื่อ layout, ชื่อตาราง และ checkbox บนหน้าจอ
ตารางชุดนี้คือ “สมอง” ของรายงาน · ถูกใช้ร่วมกับ ZTAXA_R06/038/039 และ interface ไป BI
| Table | หน้าที่ | Delta ใน S/4HANA | Field type |
|---|---|---|---|
ZTAXA_T05 | Node master | ไม่เปลี่ยนโครงสร้าง (ข้อมูล node เปลี่ยนได้) | — |
ZTAXA_T06 | Define node + description | เพิ่ม Proportion/Fixed และ Fixed Rate | CHAR 1 · CHAR 5 |
ZTAXA_T01 | GL account mapping | เพิ่ม Valid From / Valid To | DATS 8 |
ZTAXA_T07 | Define report layout | เพิ่ม Valid From / Valid To / Proportion-Fixed + layout BOI + layout IBCTC | DATS 8 · DATS 8 · CHAR 1 |
ZTAXA_T03 | Upload data (flat file) | เพิ่ม RLDNR (Ledger) · check table = FINSC_LD_CMP | CHAR 2 |
ZTAXA_T08 | Exclude asset class | รวม 029+030+031+032 เป็นตารางเดียว · เพิ่ม Segment (custom) + Include/Exclude | CHAR 10 · CHAR 1 · CHAR 1 |
ZTAXA_T14 | (เดิม: exclude asset class PITA1/PITA3) | ยุบเข้า T029 | — |
ZTAXA_T15 | (เดิม: exclude asset class MTJDA) | ยุบเข้า T029 | — |
ZTAXA_T16 | (เดิม: asset class Pre-OP) | ยุบเข้า T029 | — |
ZTAXA_T11 | Tax rate for tax filing | ไม่เปลี่ยน | — |
ZTAXA_T04 | Trading partner ต่อ tax rate (IBC-TC) | เพิ่ม Valid From / Valid To · เปลี่ยนชื่อ field Partner PC → Trading Partner | DATS 8 |
ZTAXA_T02 | Company code สำหรับ IBC/BOI | โครงสร้างไม่เปลี่ยน · เปลี่ยนชื่อตาราง IHQ → IBC/BOI | — |
ZTAXA_T10 | IBC tax rate + trading partner จาก customers | โครงสร้างไม่เปลี่ยน · เปลี่ยนชื่อ IHQ → IBC | — |
รายงานภาษีต้องรันย้อนหลังได้ (ตรวจสอบ/แก้ไขแบบยื่นเก่า) ถ้า mapping หรือ layout เปลี่ยนกลางทาง การรันปีเก่าจะได้ผลลัพธ์ตาม config ปัจจุบัน = ผิด Valid From/To ทำให้โปรแกรม เลือก config ที่ใช้อยู่ ณ ปีที่รายงาน — FD ระบุว่า “Report should display same data as per the reporting year … with historical values and layout”
*999999999
ผังบัญชี S/4HANA ของ Client ขึ้นต้นด้วย A, B หรือ C (เช่น A999X042, B_PC07, C_PC34)
ถ้า map ทีละตัวอักษรจะได้ 3 แถวต่อ 1 บัญชี → บวม
FD จึงกำหนดให้ใช้ *999999999 — ดอกจันแทนตัวอักษรนำหน้า เพื่อ “รวมยอดของทั้ง 3 ตัวในแถวเดียว”
ECC มี ledger เดียวในบริบทนี้ แต่ S/4HANA มี หลาย ledger (0L, T1 …)
รายการปรับปรุงที่อัปโหลดจึงต้องระบุว่า “ปรับที่ ledger ไหน”
check table FINSC_LD_CMP คือ ตารางกำหนด ledger ต่อ company code → กันไม่ให้ใส่ ledger ที่บริษัทนั้นไม่มี
ZTAXA_I01)
→ เวลาแก้ตารางต้องแจ้ง 2 ทีมนี้เสมอ · นี่คือเหตุผลที่ FD ลงตารางว่าตารางไหนถูกใช้โดยโปรแกรมใดบ้างหน้าจอ TO-BE แบ่ง 4 block: General Selection (Main) · Display Report · General Selection (Branch) · Display Currency
| Field | Delta | Default | Validation / หมายเหตุ |
|---|---|---|---|
| Company code (Main) | เพิ่ม multiple selection | — | ใส่หลาย company code ได้พร้อมกัน |
| Reporting Year / Period | ไม่เปลี่ยน | — | — |
| Profit center | ไม่เปลี่ยน | — | — |
| Recovery Indicator | ใหม่ | Blank | จาก T8JJ-RECID · validate คู่กับ BUKRS |
| Exclude profit center O* | ถูกลบออก | — | S/4 ต้องรวม profit center ที่ขึ้นต้นด้วย O ด้วย |
| Depreciation Area (Main) | เปลี่ยน default | 32 | แก้ไขได้ (editable) |
| Ledger (Main) | เปลี่ยน default | T1 | แก้ไขได้ |
| Segment (Main) | ไม่เปลี่ยน | — | — |
| BOI (checkbox) | ใหม่ — มาแทน IHQ | Blank | validate กับ ZTAXA_T02 — ถ้า company code ผูก BOI อยู่ต้องติ๊ก มิฉะนั้น error “please select BOI checkbox” |
| IBC (checkbox) | ไม่เปลี่ยนโครง · เพิ่ม validation | — | ติ๊กแต่ไม่มีใน T035 → error “Please do not select IBC” · มีใน T035 แต่ไม่ติ๊ก → error “Please select IBC” |
| Company code (Branch) | ใหม่ | None | optional · multiple · ไม่มี validation กับ main · ถ้า main ใส่หลายตัว → field นี้ถูก grey out |
| Profit Center (Branch) | ใหม่ | None | multiple selection |
| Recovery Indicator (Branch) | ใหม่ | None | validate T8JJ คู่กับ branch company code |
| Depreciation area (Branch) | ใหม่ | 02 | default เมื่อใส่ branch company code · editable |
| Ledger (Branch) | ใหม่ | 0L | default เมื่อใส่ branch company code · editable |
| Segment (Branch) | ใหม่ | None | ใช้เมื่อใส่ branch เท่านั้น |
| Display currency | ไม่เปลี่ยน | LC2 | radio LC1 / LC2 / LC3 · เปลี่ยนได้ |
ECC ใช้แค่ LC2 · S/4HANA เพิ่ม LC3 เข้ามา
| Currency | Table | Amount field | Currency field | ความหมาย |
|---|---|---|---|---|
| LC1 | ACDOCA | HSL | RHCUR | Company code currency (สกุลของบริษัท) |
| LC2 | ACDOCA | KSL | RKCUR | Global currency (สกุลกลุ่ม) |
| LC3 | ACDOCA | OSL | ROCUR | Freely defined currency 1 (สกุลอิสระ — ใช้เก็บค่าที่ตีราคาใหม่) |
ACDOCARACCT จาก mapping table ZTAXA_T01 ผ่าน item type ใน layoutR + ตัวอักษรเดิม + CUR
→ เป็นชุดเดียวกับที่ TAX-RPT-4 ใช้ ไม่ต้องจำใหม่เจตนา: “Client wants to minimize the manual data which comes from uploading flat files”
| # | Item type | สูตร | ใช้กับ layout |
|---|---|---|---|
| 1 | LOSS CARRIED FORWARD | ดึงจากตารางของ TAX-RPT-5 (ZTAXB_T01) แทนอัปโหลด | ทุก layout |
| 2 | UNREALIZED GAIN/LOSS ON FINANCIAL DERIVATIVES ผ่าน OCI | A490X036 + A490X037 + A490X038 · กลับเครื่องหมาย | CIT_TH · PITA1_TH · PITA3_TH · PSC_TH |
| 3 | ACCRUED INTEREST FROM FINANCIAL DERIVATIVES | A460X032 + A560X041 · กลับเครื่องหมาย | CIT_TH · PITA1_TH · PITA3_TH · PSC_TH |
| 4 | ADJUST WRITE-OFF FROM IDC | A520X040 · กลับเครื่องหมาย | PITA1_TH · PITA3_TH · PSC_TH |
| 5 | RETIREMENT RESERVE — COVENTURERS / JCE | movement ของ A254X027 = ยอดต้นงวด − ยอดปลายงวด | PITA1_TH · PITA3_TH · PSC_TH |
การเปลี่ยน 2 รายการจาก “proportion” เป็น “fixed rate”
ZTAXA_T02 (company code ผูก IBC) + ZTAXA_T04 (trading partner ต่ออัตรา)| Item type | Node | Item type code | เปลี่ยนเป็น |
|---|---|---|---|
| EXPENSE POOL COST → “EXPENSES SPECIFIC 20%” | HGL4 | HG6 | Fixed 20% — ลงคอลัมน์ 20% ทั้งก้อน ไม่แบ่งสัดส่วน |
| ACTUAL PAYMENT FOR PENSION FUND | TCL1 | TG21 | Fixed 3% — ย้ายจาก 20% มา 3% ทั้งก้อน |
ZTAXA_T01ACDOCA ดึงยอดZTAXA_T02
แล้ว output กลับไปใช้ layout CIT_TH ปกติ”ธุรกิจการเงิน — รายได้ 4 ประเภท และการปันสัดส่วน 3% / 20%
| คอลัมน์ | ECC | S/4HANA | ความหมาย |
|---|---|---|---|
| 0% | มี | ลบออก | ไม่ใช้แล้ว |
| 10% | มี | ลบออก | ไม่ใช้แล้ว |
| A — IBC 3% | มี | มี | ธุรกรรม intercompany · ระบุด้วย R001 ใน ZTAXA_T04 ผ่าน trading partner |
| B — Non-IBC 20% | มี | มี | ธุรกรรม ไม่ใช่ intercompany |
| C — Total | — | เพิ่มใหม่ | C = A + B |
| D — ยอดต่อ Profit Center | มี | มี (ขยายได้หลายคอลัมน์) | ยอด G/L จาก ZTAXA_T01 ราย profit center |
| Check difference | มี | มี | = D − C · ควรเป็น 0 |
ZTAXA_T04)
→ เป็นจุดแรกที่ต้องดูตอนกระทบยอด ไม่ต้องไล่ทีละบรรทัดZTAXA_T01ACDOCA ตาม selection (company code, fiscal year, ledger, period …)VBUND ที่ระดับ line itemZTAXA_T04 → intercompany ลง 3% · ไม่ใช่ ลง 20% · แยกตาม profit center ด้วย| Item type | ปันตามอะไร |
|---|---|
| Admin employee expenses · Admin selling expenses | % Proportion of Revenue |
| Interest Expense | % Portion of Interest Income (ไม่ใช่ revenue) |
| Others | % Ratio of Revenue |
| Expense แต่ละบรรทัด | ยอดในบรรทัด × % Proportion of revenue ของคอลัมน์นั้น |
| Item type | ดึงจากด้าน | Field |
|---|---|---|
| Gain from Trading investment | เครดิต | ACDOCA-SHKZG = 'H' |
| Gain from Derivative instrument | เครดิต | SHKZG = 'H' |
| Loss from Trading investment | เดบิต | SHKZG = 'S' |
SHKZG ที่ระดับ line item
→ เป็นเหตุผลว่าทำไมรายงานนี้ต้องอ่าน ACDOCA ระดับบรรทัด ไม่ใช่ยอดสรุปสิทธิประโยชน์ BOI แยกด้วย profit center · มีเพดาน 2% ที่ต้องคำนวณเอง
| กลุ่ม | ตัวอย่าง Profit Center |
|---|---|
| Corporate | B_PC01 |
| BOI 1 | B_PC02 |
| BOI 2 | B_PC04 |
| Non-BOI 1 | B_PC03 |
| Non-BOI 2 | B_PC05 |
ถ้ามี BOI/Non-BOI ใหม่ เลข หลักที่ 8 และ 9 จะเดินต่อ — สังเกตว่า
หลักสุดท้าย 1 = BOI · 2 = Non-BOI
| ฝั่ง | คอลัมน์ |
|---|---|
| TB (Trial Balance — ตามที่ระบบบันทึกจริง) | Profit Ctr-Corp · Profit Ctr-BOI 1 · Profit Ctr-BOI 2 · Profit Ctr-Non BOI 1 · Profit Ctr-Non BOI 2 · Total |
| Tax closing (หลังปันส่วนตามกติกาภาษี) | BOI 1 · BOI 2 · Non BOI 1 · Non BOI 2 · Total per Tax Closing |
| Profit center | Direct income | % ของ Total DI | เพดาน 2% |
|---|---|---|---|
| Corporate | 0 | — | — |
| BOI 1 | 1,000,000 | 27.027% | 20,000 |
| BOI 2 | 2,000,000 | 54.054% | 40,000 |
| Non-BOI 1 | 200,000 | 5.4054% | — |
| Non-BOI 2 | 500,000 | 13.5135% | — |
| Total DI | 3,700,000 | 100% | 60,000 |
| Profit center | ตาม TB | ได้รับปันจาก Corporate (30,000) |
|---|---|---|
| Corporate | 30,000 | → กระจายออก |
| BOI 1 | 25,000 | 27.027% × 30,000 = 8,108.1 |
| BOI 2 | 30,000 | 54.054% × 30,000 = 16,216.2 |
| Non-BOI 1 | 5,000 | 5.4054% × 30,000 = 1,621.62 |
| Non-BOI 2 | 7,000 | 13.5135% × 30,000 = 4,054.05 |
| รวม | 97,000 | 30,000 |
Precondition ของทั้งชุด: “Ensure that the necessary non-SAP data has been uploaded prior to executing this report”
| Test ID | Condition | Expected result |
|---|---|---|
| TC-001 | เลือก segment CIT_TH / PITA1_TH / PITA3_TH / PSC_TH / MTJDA | แสดง layout ตาม segment ที่เลือก |
| TC-002 | Layout IBCSVCS ของ 1013 | ค่าออกตาม calculation logic ใหม่ (fixed 20% / 3%) |
| TC-003 | Layout IBCTC ของ 1086 | แสดงคอลัมน์ 3% และ 20% เท่านั้น — 0% และ 10% ต้องหายไป |
| TC-004 | เลือกหลาย company code — XB01 (สาขาต่างประเทศ) + TH01 Client segment CIT_TH | แสดงข้อมูลรวมของทั้งสอง |
| TC-005 | ใส่เงื่อนไขบน selection screen | รายงานตรงกับเงื่อนไขที่ใส่ |
| TC-006 | Branch company code | มี field สำหรับ branch ให้กรอกครบ |
| TC-007 | BOI checkbox | มี checkbox บนหน้าจอ · ดึง layout BOI ให้ company code 1126 |
| TC-008 | BOI Layout | รายงานแสดง layout BOI ถูกต้อง |
| TC-009 | BOI report logic | ค่าฝั่ง Tax closing (BOI / Non-BOI) คำนวณถูก |
| TC-010 | ZTAXA_T10 logic | cost center ที่ไม่ได้ระบุในตาราง → ใช้อัตรา default (ปัจจุบัน 3%) · ที่ระบุไว้ → ใช้อัตราในตาราง |
| TC-011 | Manual adjustment ที่ดึงจากระบบ | ค่าถูกดึงจาก GL ตามสูตร ไม่ต้องอัปโหลด |
| TC-012 | Loss carried forward | ดึงยอดปีก่อนจาก custom table มาแสดงเป็น LCF ของปีปัจจุบัน |
| TC-013 | Performance | ข้อมูลใหญ่ — ต้องเร็ว และมี option รัน background |
| TC-014 | Proportion / Fixed Rate logic ของ IBC | ค่าออกตามที่ maintain ใน ZTAXA_T06 และ ZTAXA_T07 |
| TC-015 | Validation ทั้งหมด | ทุก validation ทำงาน (BOI/IBC checkbox, recovery indicator ฯลฯ) |
FD นี้เขียนเฉพาะสิ่งที่เปลี่ยน — logic เดิมทั้งหมดอยู่ใน FS ZTAXA_R05 Current Tax V0.1.docx ของ ECC
เวลาทำ FUT ห้ามเทสต์แค่ delta เพราะ regression มักเกิดที่ส่วนที่ “ไม่ได้เปลี่ยน”
แต่ถูกกระทบจากการยุบตาราง T029–T032 และการเพิ่ม Valid From/To
ZTAXB_T01ZTAXA_T05/025/027/028/029/035 ของ RPT-3 โดยเพิ่ม flag “Overseas” เพื่อแยกข้อมูล
FD เตือนไว้ตรง ๆ ว่า “As we combine these tables, logic in the backend also need to be adjusted accordingly”
กติกาใหม่คือ: asset class ที่เหมือนกันทั้ง PITA1_TH/PITA3_TH/PSC_TH
ให้ maintain ครั้งเดียวใต้ PITA_TH (segment รวมที่เก็บใน constants table)
ส่วน asset class ที่เป็นของ segment ใด segment หนึ่งโดยเฉพาะ ให้แยกบรรทัด
ใน ECC profit center ที่ขึ้นต้นด้วย O ถูกกันออกจากรายงานภาษีโดยอัตโนมัติ
แต่ใน S/4HANA ผังบัญชี/ผัง profit center ถูกออกแบบใหม่ ทำให้ prefix นั้นไม่ได้แปลว่า “ไม่เกี่ยวกับภาษี” อีกต่อไป
→ การเก็บ validation เดิมไว้จะทำให้ ยอดหาย อย่างเงียบ ๆ
นี่คือ delta ที่อันตรายที่สุดในหน้าจอ เพราะไม่มี error ให้เห็น
5 จุดที่ต้องดูก่อนส่งตัวเลขให้ทีมภาษี
1. Segment PITA4 ใน ECC กลายเป็นอะไรใน S/4HANA และทำไม?
PSC_TH — เพราะจริง ๆ แล้วเป็นระบบ Production Sharing Contract
ไม่ใช่ PITA ตัวที่ 4 · ชื่อใหม่สอดคล้องกับ segment ต่างประเทศ (PSC_DZ, PSC_MM, PSC_VN, PSC_OM, PSC_MY)
2. เขียนสูตร ANNUAL (PROFIT)/LOSS AFTER LCF
3. Default ของ Depreciation area และ Ledger ต่างกันอย่างไรระหว่าง Main กับ Branch?
4. IBCTC ตัดสินว่ารายการไหนเป็น 3% จากอะไร?
VBUND ใน ACDOCA ที่ระดับ line item
แล้ว validate กับ ZTAXA_T04 (intercompany = R001)
intercompany → คอลัมน์ 3% · ไม่ใช่ → คอลัมน์ 20%
5. BOI — เพดานดอกเบี้ยออมทรัพย์คำนวณจากอะไร และส่วนเกินไปไหน?
6. ทำไม ZTAXA_T01 ต้องมี Valid From / Valid To?
ZTAXA_T07 ก็มีเหตุผลเดียวกันสำหรับ layout)
7. *999999999 ใน GL mapping หมายความว่าอะไร?
A999X042 + B_PC07 + C_PC34 ในแถวเดียว
— ดอกจันแทนตัวอักษรนำหน้าของผังบัญชี S/4HANA เพื่อลดจำนวนแถวที่ต้อง maintain ลง 3 เท่า
8. รายงานนี้ส่งข้อมูลต่อให้ใครบ้าง?
ZTAXA_R07) ·
(2) BI Interface ผ่าน ZTAXA_I01 ·
(3) TAX-RPT-5 LCF ผ่านปุ่ม “Update table for LCF” → ZTAXB_T01
— เพราะแบบนี้การแก้โครงตารางจึงต้องแจ้งหลายทีม