← หน้ารวม (Hub) Client FI design →
Role 2 ANONYMIZED · PUBLIC EDITION FI Document Verification

FI Document Verification
ตรวจ “ป้ายภาษี” ของทุกเอกสาร FI — LC1/LC2/LC3 · Segment · Tax fields

Used in · SIT (QAS) · FUT CoCd · TH · MY MY01 · MM MM01 Owner · Chatree K.

Source: LC concept v0.1 (sheet LC-TH company) · BPE 01.01.07 §6.1–6.4 · FD TAX-ENH-4 (CR-TKT-03) · FD ENH-2 / ENH-3 · training TAX-101 / TAX-301 · knowledge session 7-Oct-2026

ทุกเอกสาร FI ที่ผ่านมือในงาน SIT ซีเป็น “คนตรวจฉลาก” — เหมือนตรวจฉลากสินค้า 11 ช่อง: สาขา, สาขาคู่ค้า, รหัสภาษี, ฐาน, ยอดภาษี, WHT type / code, Segment และสกุลเงินสามชั้น ถ้าช่องไหนผิด ต้องบอกได้ว่าผิดเพราะ master data, config หรือ โปรแกรม
1

Expected result ของทุก Tax step

ประโยคมาตรฐานใน SIT script: “Posting with correct Business Place / BP Branch Code / Tax Code / Tax Base Amount / Tax Amount / WHT Type / WHT Code / Segment / LC1 / LC2 / LC3”
Business PlaceBP Branch CodeTax CodeTax BaseTax AmountWHT TypeWHT CodeSegmentLC1LC2LC3

ไม่ใช่ทุกช่องใช้กับทุกเอกสาร — ถ้าไม่เกี่ยว ให้เขียน N/A พร้อมเหตุผล เสมอ (เช่น “LC3 blank – MY CoCd”)

2

สองแหล่งอ้างอิงต่อหนึ่งช่อง

① Expected value = เอกสารธุรกิจ (tax invoice, expected ใน script) + KDS · ② System source = master data / config ที่ทำให้ระบบ post ค่านั้น — ถ้า posted ≠ expected ให้ดูข้อ ② ก่อน: master data ผิด = data issue ไม่ใช่ defect

FieldExpected fromSystem takes it fromPosted in
Business PlaceKDS BUSINESS PLACE_TH · สาขา Client บน tax invoiceJ_1BBRANCH · default ของ CoCd หรือ user กรอกBSEG-BUPLA
BP Branch Codeสาขาคู่ค้าบน tax invoice (00000 = HO)BP master + DFKKBPTAXNUM (TH1/TH3)บรรทัด vendor/customer TBC field ใน SE11
Tax CodeKDS IDT TAX CODE_ALL · scriptPO item (MIRO) · entry (FB60/FB70) · SD condition MWSTBSEG/BSET-MWSKZ
Tax Base / AmountTax invoice · rate ใน FTXPFTXP · OB40BSET FWBAS/FWSTE · HWBAS/HWSTE · H2… · H3…
WHT TypeKDS WHT · TH 3A–3F PND3 · 4A–4F PND53 · 5A/5D PND54BP → CoCd → WHT tab · T059PWITH_ITEM-WITHT, QSREC
WHT CodeKDS WHT + ประเภทเงินได้BP default / ตอนจ่าย · T059ZWITH_ITEM-WT_WITHCD
SegmentZTAXB_T04 → 010 → CEPCGGB1 TAX-ENH-4ACDOCA-SEGMENT
LC1 / LC2 / LC3LC concept + TCURRGL-ENH-1: OB22 → ZGLX_T02 → ZGLX_T01ACDOCA HSL / KSL / OSL
2.5

4 ชั้นของค่าภาษี — และค่าไหนไปพังรายงานไหน

จาก Tax Posting Field Map (knowledge session 7-Oct-2026) · รู้ว่าผิดที่ชั้นไหน = รู้ว่าต้องส่งใคร

Layer 1
Expected
KDS · tax invoice · expected ใน script
Layer 2
System source
config (FTXP, OB40, T059P/Z, OBWW) · BP master
Layer 3
Posted
BSEG · BSET · WITH_ITEM · ACDOCA
Layer 4
Used downstream
WRICEF · report · ไฟล์ยื่น RD
Layer 3 ≠ 1 · master ผิด

Data issue → แก้ BP / master (CO, BP, MM)

Layer 3 ≠ 1 · config ผิด

Config issue → Tax config owner (FTXP, OB40, T030K, T059Z) · mapping table → Tax team

Layer 3 ถูก · Layer 4 ผิด

Code defect → JIRA ถึง ABAP ของ WRICEF นั้น

Field × WRICEF — คลิกแถวหรือคอลัมน์

Field★ RPT-1★ FRM-1★ ENH-1★ FRM-2★ RPT-2RPT-6ENH-2ENH-4
Business Place??●
BP Branch / Tax ID●?●
Tax Code●●●
Tax Base / Amount●●●
Tax GL●●
WHT Type●●●●●
WHT Code●●●●
WHT Amount●●●●●
WHT GL●●●
Segment●●
วิธีใช้: คลิกชื่อ field → เห็นว่าถ้าค่านี้ผิด รายงานไหนพัง · คลิกหัวคอลัมน์ → เห็นว่า WRICEF นั้นพึ่ง field อะไร · ● = ใช้ · ? = น่าจะใช้ ต้องยืนยัน

Card ต่อ field (Layer 1 → 3)

FieldExpectedSystem sourcePosted
Tax GLKDS / CoA ที่ตกลงaccount key MWS / VST → OB40 (T030K, ต้องใช้ KTOPL จาก T001-KTOPL)ACDOCA tax line
WHT Amountbase × rate (หรือ gross-up)T059Z · timing ตาม T059PWT_QBSHB / QBSHH (ค่าที่ฟอร์มพิมพ์) / QBSH2 / QBSH3
WHT GLKDSOBWW (WIT = payable “Paid Over”) + GRU = gross-up offsetting entryACDOCA KTOSL = WIT
3

LC1 / LC2 / LC3 — สามกฎ (LC3 = USDTH เฉพาะไทย)

ตั้งค่าตอน posting โดย GL-ENH-1 (LC enhancement): OB22 default → ZGLX_T02 กฎรายบรรทัด → ZGLX_T01 override ตาม doc type (rate เดียวทั้งเอกสาร) BP

กฎ 1 · Document currency ตัดสินว่าอะไร “ไม่ต้องแปลง”

THB doc → LC1 = doc amount · USD doc → LC2 = LC3 = doc amount · FC อื่น → แปลงทั้งสามชั้น โดย LC2/LC3 เป็น cross rate ผ่าน THB = DC × ZTH(FC:THB) ÷ ZTH(USD:THB)

กฎ 2 · Segment ตัดสิน rate ของ LC3

CIT_TH → ZTH ดังนั้น LC3 = LC2 ทุกบรรทัด · PITA1_TH / PITA3_TH / PSC_TH / MTJDA → PITB (ฝั่งซื้อ: expense, AP, liability) หรือ PITM (ฝั่งขาย: revenue, AR) เป็น rate รายเดือน C3: GL BPE ใช้ชื่อ PITB/PITS

กฎ 3 · ประเภทบรรทัดตัดสิน rate/วันที่ของ LC1 (เมื่อ doc ไม่ใช่ THB)
LineLC1 rate @ date
Expense / APM @ posting date
Input VAT / VAT36B @ document date −1
WHT at invoiceM @ posting date −1 (“M9”)
WHT at paymentM @ posting date (“M9”)
AR / sales, output VATB @ document date −1 (SD: billing date −1)
PO invoice GR/IR & GR<IR expense@ วันที่ GR เดิม
Reversal / clearingHistorical

บรรทัด AP ของ THB doc: LC2/LC3 @ posting date · บรรทัด AR ของ THB doc: @ document date −1 · “M9” ใน LC concept ยังไม่รู้ความหมาย (ไม่ใช่ rate type ใน TCURR) TBC

InteractiveLC rule picker — เลือกเงื่อนไข แล้วดูว่าแต่ละสกุลควรเป็นเท่าไร
Company code
Document currency
Segment (TH)
Line type
LC1
LC2
LC3

    กฎทั้งหมดมาจาก LC concept v0.1 + GL-ENH-1 (หัวข้อด้านบน) · ใช้ตั้ง expected ก่อนเปิด SE16N layout /LC_CHECK — ไม่ได้คำนวณตัวเลขแทนระบบ

    ผลที่ตามมากับบรรทัดภาษี

    4

    5 quick checks — SE16N ACDOCA (layout /LC_CHECK)

    1. Σ HSL, Σ KSL, Σ OSL = 0 ต่อเอกสารต่อ ledger — LC3 ไม่ balance จะ block posting (“Balance in Hard currency USDTH” เช่น ENH-2 doc 580)
    2. THB doc: WSL = HSL
    3. USD doc: WSL = KSL = OSL
    4. CIT_TH: OSL = KSL
    5. Implied rate HSL/KSL ต่อบรรทัด — บรรทัดที่แปลกออกมามักเป็น VAT หรือ WHT
    Layout fields

    DOCLN BUZEI RACCT KOART KTOSL SEGMENT PRCTR MWSKZ RWCUR WSL RHCUR HSL RKCUR KSL ROCUR OSL BUDAT BLDAT BLART

    ดู RLDNR = 0L ก่อน แล้วค่อย T1

    5

    Segment substitution — TAX-ENH-4

    เดิมคือ TAX-ENH-9 → แทนที่ด้วย ENH-4 ผ่าน CR-TKT-03 · สร้างใน GGB1 (program substitution) FD

    Priority 1
    ZTAXB_T04
    CoCd + G/L account + validity → segment
    Priority 2
    ZTAXB_T05
    CoCd + cost center (+ IO) + validity → segment
    Fallback
    Profit center segment
    standard segment ของ PC (CEPC / KE53)
    Posted
    ACDOCA-SEGMENT
    ตัดสิน LC3 rate (กฎ 2)
    SimulatorSegment derivation — ข้อมูล QAS จริง (ZTAXB_T04 / 010 / CEPC, 05-Oct-2026)
    ตัวอย่างจาก Segment Simulator workbook
    ประเภทเอกสาร / บรรทัด
    มีเอกสารคู่ที่ยังไม่ reverse ใน PO history?
    Company code
    Account assignment ของบรรทัด
    G/L account
    Cost center
    Internal order
    Profit center
    Posting date
    Entry date (วันที่บันทึกจริง)
    ACDOCA-SEGMENT (expected)
    ผลต่อ LC3
    กฎ 2 ของ LC — segment ตัดสิน rate ของ LC3

      FI postings ตาม README ของ simulator · กฎ IO (exact IO ชนะ → ไม่งั้นแถว IO ว่าง → doc ไม่มี IO ไม่ match แถวที่มี IO) เป็น สมมติฐาน ที่ต้องยืนยันกับ ABAP TBC · แถวซ้ำใช้แถวแรก · CEPC มีแค่บาง PC ในหน้านี้ — PC อื่นให้ดู KE53

      QAS ณ 05-Oct-2026 SYS

      Segment ไม่ตรง — ไล่แบบนี้

      อาการสาเหตุที่น่าจะเป็นทำอะไร
      FB03 โชว์ segment ของ PC แต่ Z-table บอกอีกค่าแถว Z สร้างหลังเอกสาร หรือ posting date นอก validityสร้างทีหลัง = ไม่ใช่ defect · validity ผิด = Tax team แก้ตาราง
      IR ไม่ตรงกฎ 1–3กฎ procurement (copy จาก GR)เทียบกับ GR ผ่าน PO history
      Segment ของ PC ไม่เข้ากับธุรกิจPC master ผิดทีม CO — ไม่ใช่ defect TAX-ENH-4
      PC ไม่ตรงกับ cost object ตัวจริงmaster ของ CC / WBS / Networkทีม JVA / CO
      บรรทัดในเอกสารเดียวได้ segment ต่างกันcost object ต่างกัน หรือ splitting ต่อบรรทัดGL team ถ้าควรเหมือนกัน
      0L ≠ T1 / S1substitution ไม่วิ่งใน ledger นั้นDefect TAX-ENH-4 / GL
      ผิดหลังเช็กทุกข้อแล้วโปรแกรมDefect TAX-ENH-4 พร้อม expected / rule / actual
      Quick check 3 ข้อต่อบรรทัด: ① CoCd MM01 หรือ MY01? → ไปข้อ ③ เลย · ② G/L อยู่ในกลุ่ม 009 หรือ CC อยู่ใน 4 แถวของ 010? → ใช้ตารางนั้น (ยกเว้นเอกสารที่บันทึกก่อน 29.09.2026) · ③ ไม่งั้น → KE53 ของ PC บรรทัดนั้น

      Procurement (สิ่งที่ CR เพิ่ม)

      CaseGoods receiptInvoice receipt (MIRO)
      GR before IR (เดิม)009 → 010 → PCเอา segment ของ GR ที่ยังไม่ reverse ใน PO history (EKBE → FI GR/IR line KTOSL WRX, BSEG-SEGMENT)
      IR before GR (ใหม่ตาม CR)เอา segment ของ IR ที่ยังไม่ reverse ใน PO history009 → 010 → PC โดยใช้ CoCd, G/L, cost center, IO ของ PO (EKKN)

      ตัวอย่าง ZTAXB_T05 (QAS, valid 01.09.2026–31.12.9999) SYS

      CoCdCost centerIOSegment
      TH01C_PC08—CIT_TH
      TH01C_PC09—PITA1_TH
      TH01C_PC09C40000000141CIT_TH
      1096C_PC10—CIT_TH
      6

      Field rules แบบสั้น

      Fieldกฎ
      Business PlaceTH เท่านั้น · หนึ่งค่าต่อเอกสาร เหมือนกันทุกบรรทัด · ต้องอยู่ใน KDS ของ CoCd · SAP 4 หลัก บนแบบยื่น 5 หลัก · MY/MM = ว่าง · เอกสารไทยไม่มี tax code แต่มี default = ไม่ใช่ defect
      BP Branchสาขาของ คู่ค้า (ไม่ใช่ Client) · TH เท่านั้น · ส่งต่อให้ RPT-6 (“Head Office” เมื่อ 00000)
      Tax codeดูว่า เหมาะกับ scenario (goods vs service · claimable หรือไม่ · บริการต่างประเทศ → V*) ไม่ใช่แค่ตรงกับ script · MY U1/U2/U3 เป็น NVV (ภาษีอยู่ในบรรทัด cost) · การกระจาย NVV ของ MM TBC
      Base / amountbase = Σ บรรทัดที่ใช้ code นั้น · amount = base × rate ±0.01 · เช็ก doc currency ก่อน แล้วค่อย LC
      WHTหา WIT line ที่ invoice หรือ payment ตาม T059P · recipient type ต้องตรงแบบ (03 / 53 / 54) ไม่งั้นหลุดจาก FRM-1 / ENH-1 · base ไม่รวม VAT · MY/MM หักตอนจ่าย (invoice amount 0) · MY resident คาดว่าไม่มี WHT verify BP
      Gross-up 5Gพบบนเอกสาร (8084322612 5G/B8 · 2004328281 5G/O7) — สูตรและการรวมใน filter PND54 ของ RPT-1/FRM-1 TBC
      7

      FB03 tips + หาเอกสาร FI ให้เจอ

      FB03
      • General Ledger View ledger 0L (จอที่ขึ้นว่า “Ledger T1” คือ tax ledger)
      • เพิ่มคอลัมน์ Business Place, Order, Cost Center, WBS, Network, Segment, Profit Center, AcctAssgmt · Σ ที่ Local Crcy Amt
      • “Acct Assignment Cat.” = category ของ PO (K/P/N/F) ไม่ใช่ ACCASTY
      • ห้ามทับ layout กลาง /CHECKDOC — Save As ด้วยชื่อตัวเอง
      • Entry View = ก่อน splitting · GL View = หลัง splitting (segment / PC ต่อบรรทัด)
      หาเอกสาร FI จากต้นทาง
      Material doc (GR/UD/SES/GI)MIGO display → Doc info → FI Documents
      Supplier invoiceMIR4 → Follow-on documents
      BillingVF03 → Accounting
      Receipt / clearingFEBAN → Documents (PA1 on-account, PA2 clearing) หรือ FBL5N cleared items
      จาก POME23N → PO history
      ตารางBKPF AWTYP MKPF / RMRP / VBRK · AWKEY = doc + year

      GR หรือ IR? — 5 สัญญาณใน FB03

      สัญญาณGR (MIGO)IR (MIRO / VIM)
      Doc typeWERE
      BKPF-AWTYPMKPFRMRP
      บรรทัด vendorไม่มีมี (PK 31)
      ฝั่ง GR/IRCr (PK 96)Dr (PK 86)
      Assignment ของ GR/IRเลข POเลข PO

      Posting keys ที่เจอบ่อย: 40 / 50 G/L · 31 Cr vendor · 21 / 25 Dr vendor · 01 / 15 customer · 89 / 99 stock · 81 / 91 cost · 86 / 96 GR/IR · JVA: 0J / 1J partner · 2J cash-call offset · 3J cash-call request · ตัวอย่าง PO บริการ 100 + VAT 7%: GR = Dr expense 100 / Cr GR/IR 100 → IR = Dr GR/IR 100 + Dr input VAT 7 / Cr vendor 107 → payment = Dr vendor 107 / Cr bank 104, Cr WHT 3

      หลักฐาน tax code ใน 3 ภาพ (ใช้แทน FTXP เมื่อไม่มีสิทธิ์)
      1. SE16J join ZCDS_DOC_TAX_WHT = BKPF ⟕ BSET ⟕ WITH_ITEM on BUKRS + BELNR + GJAHR (outer join · ห้าม key ด้วย BUZEI) → Tx · G/L · base · tax
      2. T030K → MWSKZ · KTOSL · KONTS = G/L เดียวกับภาพ 1
      3. SE16J join ZCDS_TAX_RATE = A003 → KONP on KNUMH → KBETR เป็น per mille (70 = 7%) · ไม่มีแถว = 0% · ต้องเท่ากับ tax ÷ base

      join definition อยู่เฉพาะระบบที่สร้าง — DEV 120 ≠ QAS (ต้องสร้างใหม่ใน QAS) · ตัวอย่าง OX ของ MY: doc 3364322036 base 1,891,555.18 tax 0.00 GL A212X024 · T007S ZTXP_MY/OX “Non-Taxable Output Service Tax”

      ก่อนเช็กทุกครั้ง: AWKEY ชี้ไปเอกสารต้นทางของ step นั้นจริงไหม · CoCd และ posting date ตรงไหม · เป็น JE ตัวเดียวกับที่ JVA / GL review ใน block เดียวกันไหม
      8

      Country reference — TH / MY MY01 / MM MM01

      THMY MY01MM MM01
      Business place / BP branchRequiredBlankBlank
      Output codesO*, DB, S1, ONO1 6%, O2, O3, O4 −6%, OXDB 5%, O1 5%, OX
      Input codesI*, N*/U*, D*, V*R1/R2, U1 8%, U2 10%, U3 5% (NVV), UY, M1I1 5%, I2 3%, I3 15%, IX, D1–D3, C1 (0% posted / 5% reported)
      WHT3x / 4x / 5xBA–BE at paymentB0 / B2 at payment
      SegmentsCIT_TH, PITA1_TH, PITA3_TH, PSC_TH, MTJDACIT_MY, PSC_MYCIT_MM, PSC_MM
      LC1 / LC2 / LC3THB / USD / USDTHMYR / USD / –T001-WAERS / USD / –

      Malaysia SD billing ที่ใช้ OX ต้องมี Tax Exemption Reason text Z001 สำหรับ MyInvois (DRC, TAX-ENH-11)

      ✓

      Self-check

      1. USD invoice ใน CoCd TH01 segment CIT_TH — LC2 กับ LC3 ควรเป็นเท่าไร?

      ดูเฉลย
      LC2 = LC3 = doc amount (USD doc) และ CIT_TH ทำให้ LC3 = LC2 ทุกบรรทัดอยู่แล้ว

      2. Input VAT บนเอกสาร EUR ใช้ rate LC1 ของวันไหน และเกิดบรรทัดอะไรเพิ่ม?

      ดูเฉลย
      rate B @ document date −1 · เกิด Realized FX (from VAT) ใน LC1 = DC × rate(doc date −1) − DC × rate(posting date)

      3. Segment ของบรรทัดมาจากไหน ตามลำดับ?

      ดูเฉลย
      GGB1 TAX-ENH-4: ZTAXB_T04 (G/L) → ZTAXB_T05 (CC + IO) → segment ของ profit center

      4. MIRO ที่มาก่อน GR เอา segment จากไหน?

      ดูเฉลย
      IR derive เอง 009 → 010 → PC ด้วยข้อมูลของ PO (EKKN) · GR ที่มาทีหลังจะรับ segment จาก IR ใน PO history

      5. เอกสาร stock ของ MY มี LC2 rate ต่างกันรายบรรทัด — เปิด defect ไหม?

      ดูเฉลย
      ไม่ (อย่างเดียว) — LC2 ของ stock มาจาก material valuation · ตรวจว่า Σ KSL = 0 และ LC3 ว่าง (MY ไม่มี LC3)