เทมเพลตข้อมูลสำหรับกระบวนการชำระเงินเจ้าหนี้การค้า
เทมเพลตข้อมูลสำหรับกระบวนการชำระเงินเจ้าหนี้การค้า
- แอตทริบิวต์หลักสำหรับวิเคราะห์ผู้ขายและการชำระเงิน
- จุดสำคัญของกระบวนการชำระเงินที่ควรบันทึก
- ตรรกะการดึงข้อมูลเฉพาะสำหรับระบบ SAP S/4HANA
แอตทริบิวต์ของกระบวนการชำระเงินเจ้าหนี้การค้า
| ชื่อ | คำอธิบาย | ||
|---|---|---|---|
| กิจกรรม Activity | งานหรือการเปลี่ยนสถานะเหตุการณ์ที่บันทึกไว้สำหรับใบแจ้งหนี้. | ||
| คำอธิบาย แอตทริบิวต์นี้แสดงขั้นตอนต่างๆ ที่เกิดขึ้นตลอดวงจรของใบแจ้งหนี้ เช่น การสร้าง การบันทึกรายการ การบล็อก การอนุมัติ และการเคลียร์การชำระเงิน ชื่อกิจกรรมได้มาจากรหัสธุรกรรม รายการในบันทึกการเปลี่ยนแปลง หรือการอัปเดตสถานะ workflow ในระบบต้นทาง ในการวิเคราะห์ ฟิลด์นี้สำคัญต่อการทำแผนที่รูปแบบการไหลของกระบวนการ ช่วยให้ process mining แสดงลำดับขั้นตอน ระบุวงจรการทำงานซ้ำ และค้นหาจุดที่กระบวนการเบี่ยงเบนจากแนวทางมาตรฐาน ฟิลด์นี้เป็นองค์ประกอบหลักของบันทึกเหตุการณ์. เหตุผลที่สำคัญ กำหนดโหนดในแผนผังกระบวนการ เพื่อแสดงเวิร์กโฟลว์และคอขวด. แหล่งข้อมูล ได้จากรหัสธุรกรรม (TCODE) หรือส่วนหัวเอกสารการเปลี่ยนแปลง (CDHDR) และรายการ (CDPOS) ตัวอย่าง ลงบัญชีใบแจ้งหนี้แล้วตั้งค่าระงับการชำระเงินดำเนินการรอบการชำระเงินเคลียร์ใบแจ้งหนี้แล้ว | |||
| เวลาที่เกิดเหตุการณ์ EventTime | เวลาที่แน่นอนซึ่งกิจกรรมเกิดขึ้น. | ||
| คำอธิบาย เวลาที่เกิดเหตุการณ์บันทึกวันที่และเวลาที่มีการบันทึกกิจกรรมลงในฐานข้อมูล SAP โดยให้ข้อมูลด้านเวลาที่จำเป็นต่อการเรียงลำดับเหตุการณ์ภายในแต่ละกรณี โดยทั่วไปจะนำฟิลด์วันที่ CPU และเวลา CPU จากบันทึกระบบหรือส่วนหัวเอกสารมารวมกันเพื่อระบุเวลานี้ ในการวิเคราะห์ แอตทริบิวต์นี้จำเป็นต่อการคำนวณรอบเวลา ระยะเวลา และปริมาณงาน ช่วยวัดช่วงเวลาระหว่างขั้นตอน เช่น ระยะเวลาตั้งแต่รับใบแจ้งหนี้จนถึงอนุมัติขั้นสุดท้าย ซึ่งจำเป็นต่อการระบุคอขวดและประเมิน KPI เช่น เวลาเฉลี่ยในการอนุมัติใบแจ้งหนี้. เหตุผลที่สำคัญ ใช้เรียงลำดับเหตุการณ์ตามเวลา และเป็นพื้นฐานสำหรับการคำนวณประสิทธิภาพด้านเวลาทั้งหมด. แหล่งข้อมูล ตาราง SAP BKPF ฟิลด์ CPUDT (วันที่บันทึกรายการ) และ CPUTM (เวลาบันทึกรายการ) หรือฟิลด์ UDATE และ UTIME ใน CDHDR ตัวอย่าง 2023-10-12T08:30:00.000Z2023-10-12T14:15:22.000Z2023-10-15T09:00:00.000Z | |||
| หมายเลขใบแจ้งหนี้ InvoiceNumber | รหัสเฉพาะของใบแจ้งหนี้จากผู้ขายที่กำลังดำเนินการ. | ||
| คำอธิบาย หมายเลขใบแจ้งหนี้เป็นคีย์หลักที่ใช้ติดตามวงจรของรายการเจ้าหนี้ในระบบ SAP S/4HANA โดยหมายถึงหมายเลขเอกสารบัญชีที่สร้างขึ้นเมื่อบันทึกใบแจ้งหนี้ลงบัญชีแยกประเภททั่วไป ตามคำศัพท์มาตรฐานของ SAP หมายเลขนี้ตรงกับ Document Number (BELNR) ภายใต้รหัสบริษัทและปีบัญชีที่ระบุ ในการวิเคราะห์กระบวนการ แอตทริบิวต์นี้ใช้เป็น Case ID เพื่อเชื่อมกิจกรรมต่างๆ เข้าด้วยกัน ตั้งแต่การรับและพักใบแจ้งหนี้ การอนุมัติและการแก้ไข ไปจนถึงการเคลียร์รายการชำระเงินขั้นสุดท้าย เมื่อนำเหตุการณ์มาแบ่งกลุ่มตามรหัสนี้ นักวิเคราะห์จะเห็นประวัติการดำเนินการทั้งหมดของภาระผูกพันในการชำระเงินแต่ละรายการ. เหตุผลที่สำคัญ ใช้เป็น Case ID หลักเพื่อสร้างภาพกระบวนการชำระเงินตั้งแต่ต้นจนจบ. แหล่งข้อมูล ตาราง SAP BKPF (ส่วนหัวเอกสารบัญชี) ฟิลด์ BELNR หรือฟิลด์ BELNR ใน ACDOCA ตัวอย่าง 1900000523510000289119000006015100003002 | |||
| ระบบต้นทาง SourceSystem | รหัสของอินสแตนซ์ SAP S/4HANA ที่เป็นแหล่งข้อมูล. | ||
| คำอธิบาย แอตทริบิวต์นี้ระบุการติดตั้ง ERP หรือไคลเอนต์ที่ดึงข้อมูลกระบวนการมา ในสภาพแวดล้อมที่มี SAP หลายอินสแตนซ์หรือระบบเดิมทำงานควบคู่กัน ฟิลด์นี้ช่วยรักษาที่มาของข้อมูลและเปรียบเทียบข้อมูลข้ามระบบได้ ในการวิเคราะห์ ฟิลด์นี้ใช้เป็นตัวกรองระดับสูง ช่วยให้นักวิเคราะห์แยกข้อมูลเมื่อเปรียบเทียบผลการดำเนินงานระหว่างระบบที่ติดตั้งในภูมิภาคต่างๆ หรือตรวจสอบความสอดคล้องของข้อมูลระหว่างโครงการย้ายระบบ นอกจากนี้ยังช่วยให้เข้าใจบริบทของความแตกต่างในกระบวนการที่เกิดจากการตั้งค่าระบบ. เหตุผลที่สำคัญ แยกแหล่งข้อมูลในสภาพแวดล้อมที่มีหลายระบบ เพื่อให้แบ่งกลุ่มข้อมูลได้อย่างถูกต้อง. แหล่งข้อมูล System ID (SY-SYSID) จากบริบทการติดตั้ง SAP ตัวอย่าง SAP_PROD_01S4H_NA_100ERP_EU_200 | |||
| อัปเดตข้อมูลล่าสุด LastDataUpdate | เวลาประทับที่ระบุว่าดึงหรือรีเฟรชระเบียนครั้งล่าสุดเมื่อใด. | ||
| คำอธิบาย อัปเดตข้อมูลล่าสุดระบุเวลาที่โหลดข้อมูลเข้าสู่แพลตฟอร์ม process mining สำเร็จ เวลานี้ไม่ใช่เวลาที่เกิดเหตุการณ์ทางธุรกิจ แต่แสดงความใหม่ของชุดข้อมูล ซึ่งสำคัญต่อการสร้างความเชื่อมั่นในแดชบอร์ดการวิเคราะห์ ในการวิเคราะห์ แอตทริบิวต์นี้ช่วยให้ผู้ใช้ทราบว่าข้อมูลที่กำลังดูเป็นข้อมูลล่าสุดเพียงใด โดยเฉพาะเมื่อใช้ติดตามแดชบอร์ดที่อัปเดตเกือบเรียลไทม์ เช่น การวิเคราะห์บล็อกการชำระเงิน เพื่อให้ตัดสินใจจากสถานะล่าสุดของระบบ SAP S/4HANA. เหตุผลที่สำคัญ แจ้งให้ผู้ใช้ทราบว่าข้อมูลเป็นปัจจุบันเพียงใด ซึ่งสำคัญต่อแดชบอร์ดการปฏิบัติการ. แหล่งข้อมูล สร้างโดยกระบวนการ ETL / การดึงข้อมูล ตัวอย่าง 2023-10-27T23:59:59.000Z2023-11-01T06:00:00.000Z | |||
| เงื่อนไขการชำระเงิน PaymentTerms | รหัสที่ระบุข้อตกลงเรื่องกำหนดชำระเงินและส่วนลด. | ||
| คำอธิบาย เงื่อนไขการชำระเงินกำหนดวันครบกำหนดของใบแจ้งหนี้และส่วนลดเงินสดที่ได้รับเมื่อชำระก่อนกำหนด รหัสนี้ เช่น 'Z001' เชื่อมโยงกับกฎอย่าง 'สุทธิ 30 วัน' หรือ 'ส่วนลด 2% หากชำระภายใน 10 วัน มิฉะนั้นชำระสุทธิภายใน 30 วัน' โดยคัดลอกจากข้อมูลหลักผู้ขายมายังใบแจ้งหนี้ แต่สามารถแก้ไขด้วยตนเองได้ ในการวิเคราะห์ แอตทริบิวต์นี้เป็นข้อมูลหลักของแดชบอร์ดเครื่องมือเพิ่มประสิทธิภาพส่วนลดเมื่อชำระก่อนกำหนดและการปฏิบัติตามข้อกำหนดการชำระเงินของผู้ขาย ช่วยให้ระบบคำนวณวันครบกำหนดตั้งต้นและตรวจสอบว่าชำระเงินภายในช่วงเวลาที่เหมาะสมเพื่อรับส่วนลดหรือไม่. เหตุผลที่สำคัญ กำหนดกรอบเวลาที่คาดหวังและสิทธิประโยชน์ทางการเงิน ซึ่งสำคัญต่อการวิเคราะห์ส่วนลด. แหล่งข้อมูล ตาราง SAP BSEG ฟิลด์ ZTERM ตัวอย่าง Z001NT300001 | |||
| ชำระเงินล่าช้าหรือไม่ IsLatePayment | ตัวบ่งชี้แบบบูลีนที่ระบุว่าชำระเงินหลังวันครบกำหนดสุทธิหรือไม่. | ||
| คำอธิบาย แอตทริบิวต์ที่คำนวณนี้มีค่าเป็น true เมื่อ Clearing Date อยู่หลัง Net Due Date อย่างเคร่งครัด ใช้จำแนกผลการดำเนินงานของกระบวนการเป็นสองกลุ่ม ในการวิเคราะห์ ใช้ตัวบ่งชี้นี้นับกรณีที่ไม่เป็นไปตามข้อกำหนดสำหรับ KPI ความถี่ของค่าปรับกรณีชำระล่าช้า นอกจากนี้ยังช่วยสร้างแดชบอร์ดได้ง่ายขึ้น โดยนับค่า 'True' แทนการคำนวณวันที่ที่ซับซ้อนในส่วนแสดงผล. เหตุผลที่สำคัญ ช่วยคำนวณ KPI การชำระเงินตรงเวลาได้ง่ายขึ้น. แหล่งข้อมูล คำนวณจาก: Clearing Date > Net Due Date ตัวอย่าง truefalse | |||
| ชื่อผู้ใช้ UserName | ID ของผู้ใช้ที่ทำกิจกรรมนั้น. | ||
| คำอธิบาย ชื่อผู้ใช้บันทึก ID เข้าสู่ระบบของบุคคลหรือบัญชีระบบที่รับผิดชอบขั้นตอนหนึ่งของกระบวนการ อาจเป็นผู้ใช้ที่กรอกข้อมูลด้วยตนเอง หรือ ID ของงานเบื้องหลัง เช่น 'BATCH_USER' ที่ทำงานอัตโนมัติ ในการวิเคราะห์ แอตทริบิวต์นี้ช่วยคำนวณอัตราการทำงานอัตโนมัติของกิจกรรม โดยแยกผู้ใช้ที่เป็นบุคคลออกจากบัญชีระบบ นักวิเคราะห์จะวัดระดับการทำงานอัตโนมัติของกระบวนการได้ นอกจากนี้ยังใช้ในแดชบอร์ดการกระจายจุดที่ต้องดำเนินการด้วยตนเอง เพื่อประเมินภาระงานของแต่ละทีม. เหตุผลที่สำคัญ แยกงานที่ทำด้วยตนเองออกจากงานอัตโนมัติ เพื่อคำนวณอัตราการทำงานอัตโนมัติได้. แหล่งข้อมูล ตาราง SAP BKPF ฟิลด์ USNAM หรือฟิลด์ USERNAME ใน CDHDR ตัวอย่าง BSMITHWF-BATCHRJONES | |||
| ประเภทเอกสาร DocumentType | จัดประเภทเอกสารบัญชี เช่น ใบแจ้งหนี้ผู้ขาย การชำระเงิน หรือใบลดหนี้. | ||
| คำอธิบาย ประเภทเอกสารเป็นรหัสสองอักขระใน SAP ที่ใช้จัดประเภทรายการบัญชี ประเภทที่พบบ่อย ได้แก่ 'KR' สำหรับใบแจ้งหนี้ผู้ขาย 'KZ' สำหรับการชำระเงินให้ผู้ขาย และ 'RE' สำหรับการรับใบแจ้งหนี้แบบยอดรวม รหัสนี้กำหนดช่วงหมายเลขและสถานะฟิลด์ของเอกสาร ในการวิเคราะห์ แอตทริบิวต์นี้ใช้กรองขอบเขตของกระบวนการ เช่น นักวิเคราะห์อาจตัดใบลดหนี้ออก เพื่อมุ่งวิเคราะห์ประสิทธิภาพของการชำระเงินขาออกโดยเฉพาะ นอกจากนี้ยังช่วยดูสัดส่วนของประเภทธุรกรรมที่ดำเนินการ และใช้กับแดชบอร์ดความซับซ้อนของรูปแบบกระบวนการได้. เหตุผลที่สำคัญ จัดหมวดหมู่กรณี เช่น ใบแจ้งหนี้หรือใบลดหนี้ เพื่อให้กรองการวิเคราะห์ได้. แหล่งข้อมูล ตาราง SAP BKPF ฟิลด์ BLART ตัวอย่าง KRREKZKG | |||
| ประมวลผลโดยไม่ต้องดำเนินการด้วยตนเอง IsTouchless | ตัวบ่งชี้แบบบูลีนที่ระบุว่าประมวลผลใบแจ้งหนี้โดยไม่มีการดำเนินการด้วยตนเองหรือไม่. | ||
| คำอธิบาย แอตทริบิวต์นี้คำนวณจากการวิเคราะห์ลำดับเหตุการณ์ของแต่ละกรณี หากกรณีนั้นมีเฉพาะกิจกรรมอัตโนมัติ เช่น ผู้ใช้ 'system' หรือ TCODES เบื้องหลังที่กำหนด และไม่มีการแก้ไขหรือบล็อกด้วยตนเอง ระบบจะระบุว่าเป็นกรณีที่ไม่มีการดำเนินการด้วยตนเอง ในการวิเคราะห์ นี่คือตัวชี้วัดหลักของ KPI อัตราใบแจ้งหนี้ที่ประมวลผลโดยไม่มีการดำเนินการด้วยตนเอง องค์กรใช้ติดตามผลของโครงการระบบอัตโนมัติ และดูว่ากรณีประเภทใด เช่น ตามผู้ขายหรือภูมิภาค ไหลผ่านระบบได้โดยไม่ต้องให้คนเข้ามาดำเนินการ. เหตุผลที่สำคัญ เป็นตัวชี้วัดหลักของระบบอัตโนมัติและประสิทธิภาพของกระบวนการ. แหล่งข้อมูล คำนวณจากลำดับกิจกรรมและประเภทผู้ใช้ ตัวอย่าง truefalse | |||
| ยอดเงินในใบแจ้งหนี้ InvoiceAmount | ยอดรวมก่อนหักของใบแจ้งหนี้ในสกุลเงินของเอกสาร. | ||
| คำอธิบาย แอตทริบิวต์นี้แสดงมูลค่าทางการเงินของใบแจ้งหนี้ตามที่บันทึกไว้ในเอกสารต้นทาง และเป็นหนี้สินที่ต้องชำระให้ผู้ขาย ใน SAP S/4HANA โดยทั่วไปจะจัดเก็บไว้ในฟิลด์ยอดเงินในสกุลเงินของเอกสาร ในการวิเคราะห์ ยอดเงินในใบแจ้งหนี้ช่วยจัดลำดับความสำคัญของงาน แดชบอร์ดอย่างการกระจายจุดที่ต้องดำเนินการด้วยตนเองใช้ฟิลด์นี้เพื่อดูว่ามีการใช้แรงงานกับกิจกรรมที่ต้องทำด้วยตนเองมากเกินไปกับใบแจ้งหนี้มูลค่าต่ำหรือไม่ ช่วยให้องค์กรมุ่งปรับปรุงรายการมูลค่าสูง ซึ่งความผิดพลาดในกระบวนการอาจก่อให้เกิดความเสี่ยงทางการเงินมากกว่า. เหตุผลที่สำคัญ แสดงมูลค่าทางการเงินของแต่ละกรณี ซึ่งจำเป็นต่อการจัดลำดับความสำคัญของปัญหาในกระบวนการที่เกี่ยวข้องกับรายการมูลค่าสูง. แหล่งข้อมูล ตาราง SAP BKPF หรือ BSEG ฟิลด์ WRBTR ตัวอย่าง 1500.00250.5010000.00 | |||
| รหัสบริษัท CompanyCode | หน่วยงานที่จัดทำงบดุลและงบกำไรขาดทุน. | ||
| คำอธิบาย รหัสบริษัทหมายถึงหน่วยงานบัญชีอิสระภายในองค์กร เป็นหน่วยงานหลักสำหรับการบัญชีภายนอกและใช้จัดโครงสร้างข้อมูลทางการเงิน ใบแจ้งหนี้แต่ละรายการจะกำหนดให้กับรหัสบริษัทเพียงหนึ่งรหัส ในการวิเคราะห์ แอตทริบิวต์นี้ช่วยแบ่ง KPI ตามนิติบุคคลหรือภูมิภาค ใช้ในแดชบอร์ดเพื่อเปรียบเทียบประสิทธิภาพของทีมบัญชีเจ้าหนี้ระหว่างบริษัทในเครือ เช่น ช่วยระบุว่าสาขาใดมีอัตราการบล็อกการชำระเงินด้วยตนเองสูงกว่ามาตรฐานขององค์กร. เหตุผลที่สำคัญ แบ่งกระบวนการตามนิติบุคคล เพื่อให้เปรียบเทียบผลการดำเนินงานภายในองค์กรได้. แหล่งข้อมูล ตาราง SAP BKPF ฟิลด์ BUKRS ตัวอย่าง US01DE1010002000 | |||
| วันครบกำหนดสุทธิ NetDueDate | วันที่คำนวณได้ซึ่งต้องชำระใบแจ้งหนี้ภายในวันดังกล่าวเพื่อหลีกเลี่ยงค่าปรับ. | ||
| คำอธิบาย วันครบกำหนดสุทธิเป็นกำหนดชำระเงินขั้นสุดท้าย คำนวณโดยบวกจำนวนวันสูงสุดตามเงื่อนไขการชำระเงินเข้ากับวันฐานสำหรับคำนวณ บางระบบอาจจัดเก็บค่านี้ไว้โดยตรง แต่ในมุมมองการวิเคราะห์มักคำนวณขึ้น ในการวิเคราะห์ วันที่นี้เป็นเกณฑ์หลักของตัวติดตามการชำระเงินล่าช้าและค่าปรับ เมื่อนำวันที่เคลียร์รายการจริงมาเปรียบเทียบกับวันครบกำหนดสุทธิ จะคำนวณตัวชี้วัด 'จำนวนวันที่ชำระล่าช้า' ได้ ซึ่งช่วยประเมินประสิทธิภาพของทีมบัญชีเจ้าหนี้และความเสี่ยงต่อความสัมพันธ์กับผู้ขาย. เหตุผลที่สำคัญ เป็นกำหนดเวลาที่กระบวนการต้องทำให้ได้ หากชำระไม่ทันอาจกระทบอันดับเครดิตและมีค่าใช้จ่ายเพิ่ม. แหล่งข้อมูล คำนวณจาก: วันฐานสำหรับคำนวณ + จำนวนวันสูงสุดตามเงื่อนไขการชำระเงิน (ZBD1T/ZBD2T/ZBD3T) ตัวอย่าง 2023-11-302023-12-01 | |||
| วันที่เคลียร์รายการ ClearingDate | วันที่เคลียร์ใบแจ้งหนี้ด้วยการชำระเงิน. | ||
| คำอธิบาย วันที่เคลียร์รายการบันทึกเวลาที่เคลียร์ยอดค้างในบัญชีเจ้าหนี้ โดยทั่วไปเกิดจากรอบการชำระเงินหรือการบันทึกการชำระเงินด้วยตนเอง ซึ่งถือเป็นการสิ้นสุดภาระหนี้ ในการวิเคราะห์ แอตทริบิวต์นี้ใช้คำนวณรอบเวลารวมของกระบวนการ เป็นเวลาที่ใช้กับกิจกรรม 'เคลียร์รายการชำระเงิน' และนำไปเปรียบเทียบกับวันครบกำหนดสุทธิเพื่อประเมินผลการชำระเงินตรงเวลา ข้อมูลนี้ส่งต่อไปยังแดชบอร์ดประสิทธิภาพการเคลียร์รายการชำระเงินโดยตรง. เหตุผลที่สำคัญ ระบุว่ากระบวนการชำระเงินเสร็จสิ้นเมื่อใด และใช้ประเมินว่าชำระเงินตรงเวลาหรือไม่. แหล่งข้อมูล ตาราง SAP BSEG หรือฟิลด์ AUGDT ในตาราง AUGDT ตัวอย่าง 2023-11-012023-11-15 | |||
| หมายเลขผู้ขาย VendorNumber | รหัสเฉพาะของผู้จัดหาที่เกี่ยวข้องกับใบแจ้งหนี้. | ||
| คำอธิบาย หมายเลขผู้ขายเชื่อมโยงกับบัญชีเจ้าหนี้เฉพาะรายในบัญชีแยกประเภทย่อยของ SAP โดยเชื่อมใบแจ้งหนี้กับข้อมูลหลักที่มีเงื่อนไขการชำระเงิน รายละเอียดธนาคาร และข้อมูลติดต่อ ใน S/4HANA มักเชื่อมโยงกับแนวคิด Business Partner แต่หลายตารางยังใช้ชื่อฟิลด์เดิมคือ LIFNR ในการวิเคราะห์ แอตทริบิวต์นี้เป็นข้อมูลหลักสำหรับแดชบอร์ดการปฏิบัติตามข้อกำหนดการชำระเงินของผู้ขาย ช่วยให้นักวิเคราะห์สรุปผลการดำเนินงานตามผู้จัดหา และระบุผู้ขายที่มักทำให้เกิดการบล็อก ส่วนต่างราคา หรือความล่าช้า ข้อมูลนี้ยังช่วยประกอบการตัดสินใจด้านการจัดหาเชิงกลยุทธ์และการบริหารความสัมพันธ์กับผู้ขาย. เหตุผลที่สำคัญ ช่วยสรุปผลการดำเนินงานตามผู้ขาย ซึ่งสำคัญต่อการค้นหาสาเหตุหลักของความล่าช้า. แหล่งข้อมูล ตาราง SAP BKPF ฟิลด์ LIFNR หรือฟิลด์ LIFNR ใน ACDOCA ตัวอย่าง 100050VEND-US-99200400 | |||
| เหตุผลที่บล็อกการชำระเงิน PaymentBlockReason | รหัสที่ระบุสาเหตุที่บล็อกใบแจ้งหนี้ไม่ให้ชำระเงิน. | ||
| คำอธิบาย แอตทริบิวต์นี้ระบุรหัสเหตุผลที่ใช้กับใบแจ้งหนี้ ซึ่งทำให้รอบการชำระเงินอัตโนมัติไม่นำรายการนั้นไปดำเนินการ ตัวอย่างเช่น 'A' หมายถึงบล็อกการชำระเงิน 'R' หมายถึงรอตรวจสอบใบแจ้งหนี้ หรือเป็นการบล็อกด้วยตนเองโดยผู้ใช้ ในการวิเคราะห์ ฟิลด์นี้เป็นปัจจัยหลักของแดชบอร์ดวิเคราะห์การบล็อกการชำระเงินด้วยตนเอง เมื่อสรุปความถี่ของเหตุผลในการบล็อกแต่ละประเภท องค์กรจะวินิจฉัยปัญหาเชิงระบบได้ เช่น ส่วนต่างราคาที่เกิดบ่อยหรือการรับสินค้าที่ขาดหาย ซึ่งทำให้กระบวนการชำระเงินหยุดชะงัก. เหตุผลที่สำคัญ ระบุสาเหตุเฉพาะที่ทำให้กระบวนการหยุดชะงัก เพื่อให้วิเคราะห์หาสาเหตุหลักได้ตรงจุด. แหล่งข้อมูล ตาราง SAP BSEG ฟิลด์ ZLSPR ตัวอย่าง ABR* | |||
| จำนวนวันรับส่วนลดเงินสด 1 CashDiscountDays1 | จำนวนวันนับจากวันฐานสำหรับคำนวณที่ยังได้รับส่วนลดเงินสดครั้งแรก. | ||
| คำอธิบาย แอตทริบิวต์นี้กำหนดช่วงเวลาที่ได้รับเงื่อนไขการชำระเงินที่คุ้มค่าที่สุด เช่น '10' ใน 'ส่วนลด 2% หากชำระภายใน 10 วัน มิฉะนั้นชำระสุทธิภายใน 30 วัน' โดยดึงข้อมูลจากเงื่อนไขที่จัดเก็บไว้ในรายการบรรทัดของใบแจ้งหนี้ ในการวิเคราะห์ ข้อมูลนี้ช่วยกำหนด 'วันที่เป้าหมาย' สำหรับเครื่องมือเพิ่มประสิทธิภาพส่วนลดเมื่อชำระก่อนกำหนด หากเคลียร์ใบแจ้งหนี้ภายในช่วงเวลานี้ ก็จะได้รับส่วนลด ฟิลด์นี้ช่วยวัดต้นทุนค่าเสียโอกาสจากรอบการดำเนินงานที่ล่าช้า. เหตุผลที่สำคัญ กำหนดช่วงเวลาที่สามารถประหยัดค่าใช้จ่ายได้. แหล่งข้อมูล ตาราง SAP BSEG ฟิลด์ ZBD1T ตัวอย่าง 10140 | |||
| ปีบัญชี FiscalYear | ปีบัญชีที่ใบแจ้งหนี้อยู่ในรอบนั้น. | ||
| คำอธิบาย ปีบัญชีเป็นช่วงเวลาที่ใช้จัดทำรายงานทางการเงิน เมื่อใช้ร่วมกับรหัสบริษัทและหมายเลขเอกสาร จะเป็นคีย์หลักแบบผสมสำหรับเอกสารทางการเงินใน SAP ในการวิเคราะห์ ข้อมูลนี้จำเป็นทางเทคนิคสำหรับระบุกรณีให้ไม่ซ้ำกัน และยังรองรับการรายงานเปรียบเทียบระหว่างปี ช่วยให้ Case ID 'หมายเลขใบแจ้งหนี้' ไม่ซ้ำกัน แม้มีข้อมูลย้อนหลังหลายสิบปี. เหตุผลที่สำคัญ ข้อกำหนดทางเทคนิคสำหรับระบุกรณีใน SAP FI ให้ไม่ซ้ำกัน. แหล่งข้อมูล ตาราง SAP BKPF ฟิลด์ GJAHR ตัวอย่าง 20232024 | |||
| เปอร์เซ็นต์ส่วนลดเงินสด 1 CashDiscountPercentage1 | เปอร์เซ็นต์ส่วนลดที่ได้รับเมื่อชำระภายในช่วงส่วนลดแรก. | ||
| คำอธิบาย แอตทริบิวต์นี้ระบุอัตราส่วนลดที่ผู้ขายเสนอให้เมื่อชำระเงินก่อนกำหนด เช่น '2' ใน 'ส่วนลด 2% หากชำระภายใน 10 วัน' ในการวิเคราะห์ ใช้คำนวณมูลค่า 'ส่วนลดเงินสดที่อาจได้รับ' เมื่อนำเปอร์เซ็นต์นี้คูณกับยอดเงินในใบแจ้งหนี้ แดชบอร์ดจะแสดงยอดเงินที่เสียโอกาสไปเพราะกระบวนการไม่มีประสิทธิภาพ ซึ่งช่วยสนับสนุนเหตุผลทางธุรกิจในการนำระบบอัตโนมัติมาใช้. เหตุผลที่สำคัญ ใช้คำนวณมูลค่าเงินที่อาจประหยัดได้ ซึ่งจำเป็นต่อการคำนวณ ROI. แหล่งข้อมูล ตาราง SAP BSEG ฟิลด์ ZBD1P ตัวอย่าง 2.03.00.0 | |||
| มูลค่าส่วนลดที่เสียไป DiscountLostAmount | มูลค่าเงินส่วนลดที่มีสิทธิ์ได้รับแต่ไม่ได้ใช้. | ||
| คำอธิบาย แอตทริบิวต์ที่คำนวณนี้แสดงมูลค่าส่วนลดที่พลาดไป โดยตรวจสอบว่าชำระเงินหลังวันสิ้นสุดระยะเวลาส่วนลดหรือไม่ หากชำระหลังวันดังกล่าว ระบบจะคำนวณมูลค่าส่วนลดที่เสียไปจากเปอร์เซ็นต์ส่วนลดและยอดใบแจ้งหนี้ ในการวิเคราะห์ นี่คือตัวชี้วัดทางการเงินสำคัญสำหรับเครื่องมือเพิ่มประสิทธิภาพส่วนลดเมื่อชำระเงินก่อนกำหนด โดยแสดงต้นทุนจากความไม่มีประสิทธิภาพเป็นจำนวนเงินจริง เพื่อใช้ประกอบการตัดสินใจปรับปรุงกระบวนการ. เหตุผลที่สำคัญ แสดงมูลค่าความเสียหายทางการเงินโดยตรงจากความล่าช้าของกระบวนการ. แหล่งข้อมูล คำนวณจาก: หาก Clearing Date > Discount Date ให้ใช้ Invoice Amount * Discount % ตัวอย่าง 30.000.00150.00 | |||
| วันฐานสำหรับคำนวณ BaselineDate | วันที่เริ่มใช้เงื่อนไขการชำระเงินและใช้คำนวณวันครบกำหนด. | ||
| คำอธิบาย วันฐานสำหรับคำนวณเป็นจุดเริ่มต้นในการคำนวณวันครบกำหนดสุทธิและช่วงเวลารับส่วนลดเงินสด โดยทั่วไปคือวันที่ในใบแจ้งหนี้หรือวันที่บันทึกรายการ ขึ้นอยู่กับการตั้งค่าและข้อมูลหลักผู้ขาย ในการวิเคราะห์ วันที่นี้เป็นข้อมูลทางเทคนิคที่จำเป็นต่อการคำนวณสถานะ 'ชำระล่าช้า' หากระบุวันฐานผิด อาจทำให้ชำระเงินเร็วเกินไปและกระทบกระแสเงินสด หรือชำระล่าช้าและมีค่าปรับ การตรวจสอบความถูกต้องของวันที่นี้เป็นส่วนหนึ่งของการวิเคราะห์การปฏิบัติตามข้อกำหนดการชำระเงินของผู้ขาย. เหตุผลที่สำคัญ เป็นจุดตั้งต้นสำหรับคำนวณวันครบกำหนดทั้งหมด. แหล่งข้อมูล ตาราง SAP BSEG ฟิลด์ ZFBDT ตัวอย่าง 2023-10-012023-10-15 | |||
| สกุลเงิน Currency | รหัสสกุลเงินของยอดเงินในใบแจ้งหนี้. | ||
| คำอธิบาย แอตทริบิวต์สกุลเงินระบุหน่วยเงินของยอดเงินในใบแจ้งหนี้ เช่น USD, EUR หรือ GBP ช่วยให้ตีความมูลค่าทางการเงินได้ถูกต้อง และจำเป็นต่อการรวมข้อมูลจากรหัสบริษัทในหลายประเทศ ในการวิเคราะห์ ฟิลด์นี้ช่วยให้คำนวณ KPI ทางการเงินได้ถูกต้อง มักใช้ปรับยอดเงินให้อยู่ในสกุลเงินรายงานเดียวกันสำหรับแดชบอร์ดระดับโลก หากไม่มีแอตทริบิวต์นี้ ตัวชี้วัดรวมอย่างยอดใช้จ่ายทั้งหมดหรือมูลค่าใบแจ้งหนี้เฉลี่ยจะไม่มีความหมายเมื่อข้อมูลมีหลายสกุลเงิน. เหตุผลที่สำคัญ ให้บริบทของยอดเงิน ซึ่งจำเป็นต่อการรายงานผลระดับโลกอย่างถูกต้อง. แหล่งข้อมูล ตาราง SAP BKPF ฟิลด์ WAERS ตัวอย่าง USDEURGBPJPY | |||
| เอกสารจัดซื้อ PurchasingDocument | หมายเลขใบสั่งซื้อที่เกี่ยวข้องกับใบแจ้งหนี้. | ||
| คำอธิบาย แอตทริบิวต์นี้เชื่อมใบแจ้งหนี้กับกระบวนการจัดซื้อก่อนหน้า โดยระบุหมายเลขใบสั่งซื้อ (PO) ที่ใช้จับคู่กับใบแจ้งหนี้ ใบแจ้งหนี้บางประเภท เช่น ค่าใช้จ่ายเบ็ดเตล็ด อาจไม่มีข้อมูลอ้างอิง PO ในการวิเคราะห์ ฟิลด์นี้จำเป็นต่อการวิเคราะห์อัตราการจับคู่สามทาง ช่วยให้นักวิเคราะห์แยกใบแจ้งหนี้ที่มี PO ออกจากใบแจ้งหนี้ที่ไม่มี PO ซึ่งมักมี workflow การอนุมัติแตกต่างกันมาก และยังช่วยวิเคราะห์ process mining ตั้งแต่ต้นจนจบ โดยเชื่อมข้อมูลบัญชีเจ้าหนี้กับข้อมูลการจัดซื้อ. เหตุผลที่สำคัญ เชื่อมข้อมูลเจ้าหนี้การค้ากับการจัดซื้อ เพื่อวิเคราะห์การจับคู่สามทางและขยายขอบเขตการวิเคราะห์กระบวนการ. แหล่งข้อมูล ตาราง SAP BSEG ฟิลด์ EBELN ตัวอย่าง 45000012344500009876 | |||
กิจกรรมในกระบวนการชำระเงินเจ้าหนี้การค้า
| กิจกรรม | คำอธิบาย | ||
|---|---|---|---|
| เคลียร์รายการชำระเงินแล้ว | ระบุการกระทบยอดขั้นสุดท้าย เมื่อเคลียร์รายการค้างในบัญชีผู้ขายกับรายการชำระเงิน ข้อมูลนี้บันทึกไว้ในฟิลด์ AUGDT (วันที่เคลียร์รายการ) ของตาราง BSEG. | ||
| เหตุผลที่สำคัญ เป็นสถานะสุดท้ายของกระบวนการ แสดงว่าดำเนินการครบวงจรและบัญชีสมดุลแล้ว หากมีการเคลียร์รายการด้วยตนเองในสัดส่วนสูง แสดงว่าการกระทบยอดยังไม่มีประสิทธิภาพ. แหล่งข้อมูล ตาราง BSEG ฟิลด์ AUGDT (วันที่เคลียร์รายการ). บันทึก บันทึกเมื่อมีการระบุค่าในฟิลด์ AUGDT ประเภทเหตุการณ์ explicit | |||
| ดำเนินการรอบการชำระเงิน | แสดงการดำเนินการรอบการชำระเงิน ซึ่งเป็นขั้นตอนสร้างคำสั่งโอนเงิน ติดตามเหตุการณ์นี้ได้จากการอัปเดตสถานะในตาราง REGUH หรือ REGUP. | ||
| เหตุผลที่สำคัญ เป็นการยืนยันภาระผูกพันในการชำระเงิน ซึ่งสำคัญต่อการวิเคราะห์ประสิทธิภาพของการรวมรายการชำระเงินเป็นรอบ. แหล่งข้อมูล ตาราง REGUH ซึ่งโดยทั่วไปเชื่อมโยงกับวันที่และรหัสระบุรอบการชำระเงิน. บันทึก บันทึกเมื่อมีการอัปเดตสถานะรอบการชำระเงิน ประเภทเหตุการณ์ explicit | |||
| ตั้งค่าระงับการชำระเงิน | หมายถึงมีการตั้งค่าระงับการชำระเงินในรายการบรรทัดของใบแจ้งหนี้ ทำให้รายการไม่ถูกรวมในรอบการชำระเงิน ระบบตรวจจับได้จากการติดตามการเปลี่ยนแปลงฟิลด์ ZLSPR ในตาราง BSEG ผ่านเอกสารการเปลี่ยนแปลง. | ||
| เหตุผลที่สำคัญ การระงับเป็นสาเหตุหลักของการชำระเงินล่าช้าและการติดขัดของกระบวนการ ซึ่งส่งผลโดยตรงต่อแดชบอร์ดการวิเคราะห์การระงับการชำระเงินด้วยตนเอง. แหล่งข้อมูล ตาราง CDPOS และ CDHDR (เอกสารการเปลี่ยนแปลง) โดยค้นหาการอัปเดตฟิลด์ BSEG-ZLSPR. บันทึก บันทึกเมื่อระเบียน CDPOS มีการเปลี่ยนแปลงใน ZLSPR ประเภทเหตุการณ์ explicit | |||
| ยกเลิกการระงับการชำระเงิน | หมายถึงยกเลิกการระงับการชำระเงินที่ตั้งไว้ก่อนหน้า ทำให้ใบแจ้งหนี้พร้อมชำระเงิน ระบบตรวจจับได้เมื่อฟิลด์ ZLSPR ใน BSEG เปลี่ยนจากค่าที่กำหนดเป็นค่าว่างหรือไม่มีค่า. | ||
| เหตุผลที่สำคัญ มักใช้แทนกิจกรรม 'อนุมัติใบแจ้งหนี้' ในระบบที่ไม่มีบันทึกเวิร์กโฟลว์โดยตรง และเป็นจุดสิ้นสุดของช่วงที่เกิดคอขวด. แหล่งข้อมูล ตาราง CDPOS และ CDHDR โดยค้นหาการเปลี่ยนแปลง BSEG-ZLSPR เป็นค่าว่าง. บันทึก บันทึกเมื่อระเบียน CDPOS ระบุการนำค่า ZLSPR ออก ประเภทเหตุการณ์ explicit | |||
| ลงบัญชีใบแจ้งหนี้แล้ว | หมายถึงการบันทึกหนี้สินอย่างเป็นทางการในบัญชีแยกประเภททั่วไป กิจกรรมนี้ได้จากเวลาที่สร้างรายการในตาราง BKPF หรือวันที่บันทึกรายการในตาราง ACDOCA. | ||
| เหตุผลที่สำคัญ เป็นจุดเริ่มต้นหลักของลำดับเวลาทางการเงิน ใช้กำหนดฐานสำหรับวันครบกำหนดและการวิเคราะห์อายุหนี้. แหล่งข้อมูล ตาราง BKPF โดยใช้ CPUDT (วันที่บันทึกรายการ) และ CPUTM (เวลาที่บันทึกรายการ). บันทึก บันทึกเมื่อสร้างระเบียนใน BKPF ประเภทเหตุการณ์ explicit | |||
| สร้างเอกสารการชำระเงิน | การสร้างเอกสารบัญชีที่บันทึกเครดิตธนาคารและเดบิตผู้ขาย ดูข้อมูลนี้ได้ใน BKPF โดยใช้ประเภทเอกสารการชำระเงิน เช่น ZP หรือ KZ. | ||
| เหตุผลที่สำคัญ เป็นการบันทึกการชำระเงินจริง ใช้คำนวณ Days Payable Outstanding (DPO). แหล่งข้อมูล ตาราง BKPF โดยกรองตามประเภทเอกสาร (BLART) ที่ใช้กับการชำระเงิน. บันทึก บันทึกเมื่อสร้างเอกสารการชำระเงินใน BKPF ประเภทเหตุการณ์ explicit | |||
| กลับรายการใบแจ้งหนี้ | ระบุว่าเอกสารใบแจ้งหนี้ถูกกลับรายการหรือยกเลิก ตรวจสอบได้จากฟิลด์ STBLG (เอกสารกลับรายการ) ในตาราง BKPF. | ||
| เหตุผลที่สำคัญ แสดงถึงการทำงานซ้ำและความผิดพลาดในกระบวนการ ช่วยระบุงานที่สูญเปล่าและความพยายามที่อาจซ้ำซ้อน. แหล่งข้อมูล ตาราง BKPF โดยฟิลด์ STBLG มีข้อมูล. บันทึก บันทึกเมื่อมีการระบุค่าในฟิลด์ STBLG ประเภทเหตุการณ์ explicit | |||
| ตรวจพบส่วนต่างของจำนวน | กิจกรรมที่อนุมานได้ซึ่งบ่งชี้ว่าจำนวนในใบแจ้งหนี้ไม่ตรงกับจำนวนที่รับสินค้า โดยตรวจจับจากการใช้รหัสระงับการชำระเงินเฉพาะในรายการบรรทัด ซึ่งโดยทั่วไปคือ 'M' สำหรับส่วนต่างของจำนวน. | ||
| เหตุผลที่สำคัญ สำคัญต่อการวิเคราะห์ประสิทธิภาพการจับคู่และคุณภาพข้อมูลในห่วงโซ่อุปทาน. แหล่งข้อมูล อนุมานจากค่า BSEG-ZLSPR ที่เป็น 'M' (หรือการกำหนดค่าระบบเฉพาะสำหรับการระงับเนื่องจากจำนวน). บันทึก เปรียบเทียบค่า ZLSPR กับ 'M' ประเภทเหตุการณ์ inferred | |||
| ตรวจพบส่วนต่างของราคา | กิจกรรมที่อนุมานได้ซึ่งบ่งชี้ว่าราคาในใบแจ้งหนี้ไม่ตรงกับราคาในใบสั่งซื้อ โดยตรวจจับจากการใช้รหัสระงับการชำระเงินเฉพาะ ซึ่งโดยทั่วไปคือ 'R' สำหรับการตรวจสอบใบแจ้งหนี้ และระบบจะกำหนดให้อัตโนมัติเมื่อลงบัญชี. | ||
| เหตุผลที่สำคัญ ช่วยระบุสาเหตุที่แท้จริงของการแก้งานด้วยตนเอง และสนับสนุนการวิเคราะห์อัตราการจับคู่สามรายการ. แหล่งข้อมูล อนุมานจากค่า BSEG-ZLSPR ที่เป็น 'R' (หรือการกำหนดค่าระบบเฉพาะสำหรับการระงับเนื่องจากราคา) ณ เวลาที่ลงบัญชี. บันทึก เปรียบเทียบค่า ZLSPR กับ 'R' ประเภทเหตุการณ์ inferred | |||
| ถึงวันครบกำหนดชำระใบแจ้งหนี้ | เวลาที่คำนวณได้ซึ่งระบุว่าใบแจ้งหนี้ถึงวันครบกำหนดสุทธิ โดยคำนวณจากการบวกจำนวนวันตามเงื่อนไขการชำระเงินเข้ากับวันที่ฐานในตาราง BSEG. | ||
| เหตุผลที่สำคัญ ใช้เป็นจุดอ้างอิงสำหรับประสิทธิภาพการชำระเงินตรงเวลาและตัวติดตามค่าปรับจากการชำระเงินล่าช้า. แหล่งข้อมูล คำนวณจาก BSEG-ZFBDT (วันที่ฐาน) + BSEG-ZBD1T/ZBD2T/ZBD3T (จำนวนวัน). บันทึก อนุมานจากการเปรียบเทียบวันที่ปัจจุบันกับวันครบกำหนดสุทธิ ประเภทเหตุการณ์ calculated | |||
| เปลี่ยนเงื่อนไขการชำระเงิน | บันทึกการอัปเดตเงื่อนไขการชำระเงินของใบแจ้งหนี้ที่ยังค้าง ซึ่งส่งผลต่อวันครบกำหนดหรือสิทธิ์รับส่วนลด ติดตามได้จากบันทึกการเปลี่ยนแปลงฟิลด์ ZTERM ในตาราง BSEG. | ||
| เหตุผลที่สำคัญ การเปลี่ยนแปลงบ่อยครั้งอาจบ่งชี้ว่าข้อมูลหลักผิดพลาดหรือมีการแก้ไขด้วยตนเอง ซึ่งส่งผลต่อการคาดการณ์กระแสเงินสดและการปฏิบัติตามเงื่อนไขการชำระเงินของผู้ขาย. แหล่งข้อมูล ตาราง CDPOS และ CDHDR โดยค้นหาการอัปเดตฟิลด์ BSEG-ZTERM. บันทึก บันทึกเมื่อระเบียน CDPOS มีการเปลี่ยนแปลงใน ZTERM ประเภทเหตุการณ์ explicit | |||
| พลาดส่วนลดเงินสด | เหตุการณ์ที่คำนวณได้เพื่อระบุวันที่สิทธิ์รับส่วนลดเงินสดหมดอายุ โดยเปรียบเทียบวันครบกำหนดรับส่วนลดกับวันที่ปัจจุบันหรือวันที่ชำระเงิน. | ||
| เหตุผลที่สำคัญ จำเป็นต่อเครื่องมือเพิ่มประสิทธิภาพส่วนลดชำระเงินก่อนกำหนด เพื่อแสดงโอกาสทางการเงินที่สูญเสียไป. แหล่งข้อมูล คำนวณจาก BSEG-ZFBDT + BSEG-ZBD1T (จำนวนวันรับส่วนลด 1). บันทึก อนุมานจากการเปรียบเทียบวันที่กับวันครบกำหนดรับส่วนลด ประเภทเหตุการณ์ calculated | |||
| พักใบแจ้งหนี้ | หมายถึงใบแจ้งหนี้ที่บันทึกใน SAP แล้ว แต่ยังไม่ได้ลงบัญชีในบัญชีแยกประเภททั่วไป โดยมักใช้สำหรับป้อนข้อมูลเบื้องต้น ระบบบันทึกกิจกรรมนี้ได้โดยตรงจากตาราง VBKPF หรือระบุเอกสารใน BKPF ที่มีรหัสสถานะพักรายการก่อนเปลี่ยนเป็นสถานะลงบัญชี. | ||
| เหตุผลที่สำคัญ การพักรายการแสดงจุดเริ่มต้นของขั้นตอนป้อนข้อมูล และช่วยวัดเวลาที่ล่าช้าระหว่างการรับใบแจ้งหนี้กับการเกิดภาระผูกพันทางการเงิน. แหล่งข้อมูล ตาราง VBKPF สำหรับข้อมูลส่วนหัวของเอกสารที่พักรายการ หรือ BKPF ที่มีสถานะเอกสารเฉพาะ (BSTAT = V). บันทึก บันทึกเมื่อสร้างรายการใน VBKPF ประเภทเหตุการณ์ explicit | |||
| สร้างข้อเสนอการชำระเงิน | หมายถึงมีการรวมใบแจ้งหนี้ไว้ในรอบสร้างข้อเสนอการชำระเงิน (F110) ซึ่งเป็นขั้นตอนแรกของโปรแกรมชำระเงินอัตโนมัติ ระบบบันทึกกิจกรรมนี้จากตาราง REGUH ซึ่งเก็บข้อมูลการชำระเงิน. | ||
| เหตุผลที่สำคัญ หมายถึงใบแจ้งหนี้ได้รับเลือกให้ชำระเงินและผ่านการตรวจสอบความถูกต้องในโปรแกรมชำระเงิน. แหล่งข้อมูล เวลาที่สร้างตาราง REGUH (คีย์ LAUFD และ LAUFI). บันทึก บันทึกเมื่อสร้างระเบียน REGUH ประเภทเหตุการณ์ explicit | |||
คู่มือการดึงข้อมูล
ขั้นตอน
ระบุ CDS View ที่ต้องใช้: ตรวจสอบว่า SAP S/4HANA มี CDS View มาตรฐานที่ต้องใช้หรือไม่ โดยหลักแล้วต้องใช้ I_JournalEntry (ส่วนหัว), I_OperationalAcctgDocItem (รายการ เทียบเท่า BSEG), I_SupplierInvoice (โลจิสติกส์), I_PaymentProposalItem (F110) และ I_ChangeDocument (สำหรับบันทึกการเปลี่ยนแปลง)
กำหนดสิทธิ์ผู้ใช้: ตรวจสอบว่าผู้ใช้ฐานข้อมูลหรือผู้ใช้บริการทางเทคนิคมีสิทธิ์ SELECT บน DDL SQL view ที่เชื่อมโยงกับ CDS entity โดยปกติจะจัดการผ่าน SAP HANA Studio หรือ ABAP Eclipse Development Tools (ADT)
เตรียมสภาพแวดล้อม SQL: เปิดอินเทอร์เฟซ SQL เช่น SAP HANA Studio, DBeaver ที่เชื่อมต่อกับ HANA หรือเครื่องมือเชื่อมต่อ process mining ที่รองรับ SQL วิธีนี้ต้องเข้าถึง SQL โดยตรงในชั้น HANA ซึ่งเปิด CDS View ให้ใช้งานในรูปแบบ view
กำหนดขอบเขตข้อมูล: ระบุ Company Code (CompanyCode) และช่วงปีงบการเงินเพื่อจำกัดปริมาณข้อมูล ขั้นตอนนี้สำคัญต่อประสิทธิภาพเมื่อ Query ข้อมูลจาก Operational Accounting Document Item view
กำหนดตรรกะกิจกรรม: คัดลอก SQL query ด้านล่าง query นี้ใช้ UNION ALL รวมตรรกะ 14 ส่วนที่แตกต่างกันให้เป็น event log เดียว โดยแต่ละส่วนดึงข้อมูลกิจกรรมเฉพาะ เช่น ลงบัญชีใบแจ้งหนี้และเคลียร์การชำระเงิน
จัดการเอกสารการเปลี่ยนแปลง: query มีส่วนสำหรับการเปลี่ยนเงื่อนไขการชำระเงินและการแก้ไขสถานะบล็อก ซึ่งอาศัย I_ChangeDocument หาก view นี้ยังไม่เปิดใช้งานใน S/4 รุ่นที่คุณใช้ อาจต้องสร้าง CDS view แบบกำหนดเองเพื่อครอบตารางต้นทาง (CDHDR/CDPOS)
ตรวจสอบเหตุการณ์ที่คำนวณขึ้น: ตรวจสอบตรรกะสำหรับวันครบกำหนดใบแจ้งหนี้และส่วนลดเงินสดที่เสียไป เหตุการณ์เหล่านี้คำนวณโดยบวกจำนวนวันเข้ากับวันที่ฐานจาก view รายการบัญชีปฏิบัติการ
ดึงข้อมูล: เรียกใช้ query หากมีข้อมูลจำนวนมาก แนะนำให้แบ่งการดึงข้อมูลตามปีงบการเงินหรือ Company Code เพื่อป้องกันหน่วยความจำล้น
ตรวจสอบรูปแบบวันที่: ตรวจสอบว่าคอลัมน์ EventTime อยู่ในรูปแบบ YYYY-MM-DD HH:MM:SS ค่า timestamp ที่ SAP HANA SQL ส่งกลับมาอาจต้องแปลงรูปแบบให้ตรงกับแอปพลิเคชันปลายทาง
ส่งออกข้อมูล: บันทึกผลลัพธ์เป็นไฟล์ CSV หรือ Parquet และตรวจสอบว่าชื่อหัวคอลัมน์ตรงกับคอลัมน์ที่ระบุในคำสั่ง SELECT สุดท้าย
แปลงข้อมูลก่อนอัปโหลด: หากเครื่องมือ process mining ต้องใช้รูปแบบ CSV เฉพาะ เช่น รูปแบบวันที่ที่กำหนด ให้แปลงข้อมูลด้วยสคริปต์หลังประมวลผลหรือใช้ฟังก์ชัน TO_VARCHAR ใน SQL
ตรวจสอบขั้นสุดท้าย: โหลดตัวอย่างข้อมูลเข้า ProcessMind แล้วตรวจสอบว่า Case ID (Invoice Number) จัดกลุ่มกิจกรรมทั้งหมดตั้งแต่ลงบัญชีจนถึงเคลียร์รายการได้ถูกต้อง.
การกำหนดค่า
- ตัวกรอง Company Code: จำกัด query ให้เหลือหน่วยงานที่ต้องการ (CompanyCode = '1000') เพื่อคงบริบทและประสิทธิภาพ
- ช่วงวันที่: กรองด้วย PostingDate หรือ CreationDate เช่น 12 เดือนล่าสุด เพื่อควบคุมปริมาณข้อมูล
- ประเภทบัญชี: กรอง I_OperationalAcctgDocItem ด้วย FinancialAccountType = 'K' (ผู้ขาย) เพื่อไม่รวมรายการบัญชีแยกประเภททั่วไปและลูกค้า
- เปิดใช้งาน CDS View: ตรวจสอบว่า I_JournalEntry, I_OperationalAcctgDocItem และ I_PaymentProposalItem เปิดใช้งานและอนุญาตให้เข้าถึงผ่าน SQL
- ประสิทธิภาพของบันทึกการเปลี่ยนแปลง: การ Query I_ChangeDocument อาจใช้ทรัพยากรมาก จำกัด sub-query ด้วย ObjectClass 'BELEG' และชื่อฟิลด์เฉพาะ เช่น ZLSPR และ ZTERM.
ตัวอย่างคำค้น sql
/* SAP S/4HANA CDS View Extraction for Accounts Payable */
/* Combined Event Log Query */
/* 1. Invoice Parked */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Invoice Parked' AS Activity,
JE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
JE.CreatedByUser AS UserName,
NULL AS ClearingDate,
ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) AS NetDueDate,
CASE WHEN JE.CreationDateTime > ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) THEN 'True' ELSE 'False' END AS IsLatePayment,
'False' AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K' -- Vendor
AND JE.AccountingDocumentCategory = 'V' -- Parked Document
UNION ALL
/* 2. Invoice Posted */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Invoice Posted' AS Activity,
JE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
JEItem.PaymentBlockingReason AS PaymentBlockReason,
JE.CreatedByUser AS UserName,
NULL AS ClearingDate,
ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) AS NetDueDate,
'False' AS IsLatePayment,
CASE WHEN JE.CreatedByUser = 'BATCH_USER' THEN 'True' ELSE 'False' END AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JE.AccountingDocumentCategory <> 'V' -- Exclude Parked
UNION ALL
/* 3. Price Variance Detected (Inferred at Posting) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Price Variance Detected' AS Activity,
JE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
JEItem.PaymentBlockingReason AS PaymentBlockReason,
'System' AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.PaymentBlockingReason = 'R' -- Standard SAP Price Variance Block Key
UNION ALL
/* 4. Quantity Variance Detected (Inferred at Posting) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Quantity Variance Detected' AS Activity,
JE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
JEItem.PaymentBlockingReason AS PaymentBlockReason,
'System' AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.PaymentBlockingReason = 'M' -- Standard SAP Quantity Variance Block Key
UNION ALL
/* 5. Payment Block Applied (via Change Document) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Block Applied' AS Activity,
CD.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
CD.NewValue AS PaymentBlockReason,
CD.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_ChangeDocument AS CD
JOIN I_JournalEntry AS JE ON CD.ObjectValue = CONCAT(JE.CompanyCode, JE.AccountingDocument)
JOIN I_OperationalAcctgDocItem AS JEItem ON JE.AccountingDocument = JEItem.AccountingDocument AND JE.CompanyCode = JEItem.CompanyCode
WHERE CD.ObjectClass = 'BELEG'
AND CD.TableName = 'BSEG'
AND CD.FieldName = 'ZLSPR'
AND CD.OldValue IS NULL AND CD.NewValue IS NOT NULL
UNION ALL
/* 6. Payment Block Removed (via Change Document) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Block Removed' AS Activity,
CD.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
CD.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_ChangeDocument AS CD
JOIN I_JournalEntry AS JE ON CD.ObjectValue = CONCAT(JE.CompanyCode, JE.AccountingDocument)
JOIN I_OperationalAcctgDocItem AS JEItem ON JE.AccountingDocument = JEItem.AccountingDocument AND JE.CompanyCode = JEItem.CompanyCode
WHERE CD.ObjectClass = 'BELEG'
AND CD.TableName = 'BSEG'
AND CD.FieldName = 'ZLSPR'
AND CD.OldValue IS NOT NULL AND (CD.NewValue IS NULL OR CD.NewValue = '')
UNION ALL
/* 7. Payment Terms Changed (via Change Document) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Terms Changed' AS Activity,
CD.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
CD.NewValue AS PaymentTerms,
NULL AS PaymentBlockReason,
CD.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_ChangeDocument AS CD
JOIN I_JournalEntry AS JE ON CD.ObjectValue = CONCAT(JE.CompanyCode, JE.AccountingDocument)
JOIN I_OperationalAcctgDocItem AS JEItem ON JE.AccountingDocument = JEItem.AccountingDocument AND JE.CompanyCode = JEItem.CompanyCode
WHERE CD.ObjectClass = 'BELEG'
AND CD.TableName = 'BSEG'
AND CD.FieldName = 'ZTERM'
UNION ALL
/* 8. Invoice Due (Calculated) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Invoice Due' AS Activity,
TO_TIMESTAMP(ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays))) AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
'System' AS UserName,
NULL AS ClearingDate,
ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) < CURRENT_DATE
UNION ALL
/* 9. Cash Discount Lost (Calculated) */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Cash Discount Lost' AS Activity,
TO_TIMESTAMP(ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.CashDiscount1Days))) AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
'System' AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.CashDiscount1Days > 0
AND (JEItem.ClearingDate IS NULL OR JEItem.ClearingDate > ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.CashDiscount1Days)))
UNION ALL
/* 10. Payment Proposal Created */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Proposal Created' AS Activity,
PPI.ProposalRunDate AS EventTime, -- Often just a date, cast to timestamp if needed
JE.CompanyCode,
PPI.Supplier AS VendorNumber,
PPI.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
PPI.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_PaymentProposalItem AS PPI
JOIN I_JournalEntry AS JE
ON PPI.CompanyCode = JE.CompanyCode
AND PPI.AccountingDocument = JE.AccountingDocument
AND PPI.FiscalYear = JE.FiscalYear
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JEItem.FinancialAccountType = 'K'
UNION ALL
/* 11. Payment Run Executed */
/* Derived from existence in payment tables with a run ID */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Run Executed' AS Activity,
PPI.PaymentRunDate AS EventTime,
JE.CompanyCode,
PPI.Supplier AS VendorNumber,
PPI.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
PPI.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_PaymentProposalItem AS PPI
JOIN I_JournalEntry AS JE
ON PPI.CompanyCode = JE.CompanyCode
AND PPI.AccountingDocument = JE.AccountingDocument
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
WHERE PPI.PaymentRunID IS NOT NULL
UNION ALL
/* 12. Payment Document Created */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Document Created' AS Activity,
PayJE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
PayJE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
PayJE.CreatedByUser AS UserName,
PayJE.PostingDate AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
JOIN I_JournalEntry AS PayJE
ON JEItem.ClearingJournalEntry = PayJE.AccountingDocument
AND JEItem.ClearingJournalEntryFiscalYear = PayJE.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.ClearingJournalEntry IS NOT NULL
UNION ALL
/* 13. Payment Cleared */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Payment Cleared' AS Activity,
TO_TIMESTAMP(JEItem.ClearingDate) AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
'System' AS UserName,
JEItem.ClearingDate,
ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) AS NetDueDate,
CASE WHEN JEItem.ClearingDate > ADD_DAYS(JEItem.DocumentItemDate, TO_INTEGER(JEItem.NetPaymentDays)) THEN 'True' ELSE 'False' END AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JEItem.ClearingDate IS NOT NULL
UNION ALL
/* 14. Invoice Reversed */
SELECT
JE.OriginalReferenceDocument AS InvoiceNumber,
'Invoice Reversed' AS Activity,
RevJE.CreationDateTime AS EventTime,
JE.CompanyCode,
JEItem.Supplier AS VendorNumber,
JEItem.AmountInTransactionCurrency AS InvoiceAmount,
JE.AccountingDocumentType AS DocumentType,
JEItem.PaymentTerms,
NULL AS PaymentBlockReason,
RevJE.CreatedByUser AS UserName,
NULL AS ClearingDate,
NULL AS NetDueDate,
NULL AS IsLatePayment,
NULL AS IsTouchless,
'S4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM I_JournalEntry AS JE
JOIN I_OperationalAcctgDocItem AS JEItem
ON JE.CompanyCode = JEItem.CompanyCode
AND JE.AccountingDocument = JEItem.AccountingDocument
AND JE.FiscalYear = JEItem.FiscalYear
JOIN I_JournalEntry AS RevJE
ON JE.ReverseDocument = RevJE.AccountingDocument
AND JE.ReverseDocumentFiscalYear = RevJE.FiscalYear
WHERE JEItem.FinancialAccountType = 'K'
AND JE.ReverseDocument IS NOT NULL ขั้นตอน
- ยืนยันว่ามีสิทธิ์เข้าถึง SQL โดยตรงไปยังสคีมา SAP HANA ที่มี ACDOCA, BKPF, BSEG, VBKPF, REGUH, REGUP และตารางเอกสารการเปลี่ยนแปลงที่เกี่ยวข้อง แทนที่ [Your SAP HANA schema] และรายละเอียดการเชื่อมต่อด้วยค่าที่ได้รับอนุมัติสำหรับระบบของคุณ
- ยืนยันชุดใบแจ้งหนี้และช่วงเวลาที่ต้องการรายงาน กำหนด [Start date] และ [End date] ในรูปแบบ YYYYMMDD และตั้งค่า [Company code filter] เป็นเงื่อนไข SQL ที่ถูกต้อง เช่น BUKRS IN ('1000','2000')
- ตรวจสอบรุ่น SAP และการตั้งค่าในระบบของคุณสำหรับเอกสารที่พักไว้ ฟิลด์สถานะโปรแกรมการชำระเงิน ประเภทเอกสารการชำระเงิน และการจัดเก็บเอกสารการเปลี่ยนแปลง คิวรีนี้ใช้วัตถุต้นทางที่มีเอกสารอ้างอิงและการจับคู่ฟิลด์แบบระมัดระวัง แต่ต้องตรวจสอบส่วนขยายเฉพาะระบบและความแตกต่างระหว่างรุ่นก่อนใช้งานจริง
- เรียกใช้คิวรีกับ SAP HANA ผ่านไคลเอนต์ SQL หรือบริการดึงข้อมูลที่ได้รับอนุมัติ คิวรีจะสร้างแถวเหตุการณ์สำหรับแต่ละกิจกรรมที่ดึงข้อมูลไว้อย่างชัดเจน ProcessMind จะไม่อนุมานกิจกรรมที่ไม่มีอยู่ในผลลัพธ์
- ตรวจสอบข้อมูลต้นทางและปรับเงื่อนไขที่ระบุไว้สำหรับสถานะเอกสารที่พักไว้ ประเภทเอกสารการชำระเงิน สถานะข้อเสนอการชำระเงินและรอบการชำระเงิน รวมถึงคลาสออบเจ็กต์ของเอกสารการเปลี่ยนแปลง อย่าขยายเงื่อนไขเหล่านี้โดยไม่ตรวจสอบเอกสารบัญชีที่ซ้ำหรือไม่เกี่ยวข้อง
- ตรวจสอบการเชื่อมตารางโดยใช้ InvoiceNumber, CompanyCode, ปีบัญชี, หมายเลขเอกสารบัญชี, หมายเลขผู้ขาย และรายการบัญชีตามความเหมาะสม ยืนยันว่าหมายเลขเอกสารใบแจ้งหนี้แสดงในรูปแบบเดียวกันใน BKPF, BSEG, ACDOCA, REGUH และ REGUP ของระบบเป้าหมาย
- ตรวจสอบเหตุการณ์ที่คำนวณขึ้น ระบบจะสร้าง Invoice Due ณ วันที่ครบกำหนดสุทธิที่คำนวณได้ และสร้าง Cash Discount Lost ณ กำหนดเวลาส่วนลดที่เกี่ยวข้องซึ่งมาถึงก่อนสุด เมื่อไม่มีการชำระเงินก่อนถึงกำหนด แถวเหล่านี้เป็นข้อมูลที่คำนวณขึ้น จึงควรแยกให้ชัดเจนจากเหตุการณ์ที่มาจากระเบียนต้นทาง
- ส่งออกผลลัพธ์เป็นไฟล์ CSV แบบแบนที่เข้ารหัส UTF-8 หรือรูปแบบตารางอื่นที่ ProcessMind รองรับ คงชื่อคอลัมน์ให้ตรงตามนี้: InvoiceNumber, Activity, EventTime, SourceSystem และ LastDataUpdate ให้มีหนึ่งแถวต่อเหตุการณ์ และอย่ารวมกิจกรรมตามใบแจ้งหนี้
- อัปโหลดบันทึกเหตุการณ์ไปยัง ProcessMind แล้วจับคู่ InvoiceNumber เป็นรหัสเคส, Activity เป็นชื่อกิจกรรม และ EventTime เป็นเวลาเหตุการณ์ จับคู่คอลัมน์ที่เหลือเป็นแอตทริบิวต์ของเหตุการณ์หรือเคสตามการตั้งค่านำเข้าของ ProcessMind
การกำหนดค่า
- ช่วงวันที่: เริ่มดึงข้อมูลย้อนหลัง 3 ถึง 6 เดือน ใช้เงื่อนไขวันที่ลงบัญชี วันที่เปลี่ยนแปลง และวันที่ของโปรแกรมการชำระเงินให้สอดคล้องกัน และขยายช่วงเวลาเมื่อตรวจสอบเงื่อนไขการชำระเงินระยะยาว
- Schema: เปลี่ยน [Your SAP HANA schema] เป็น schema ที่เป็นเจ้าของออบเจ็กต์ SAP ตรวจสอบว่าสภาพแวดล้อมเปิดออบเจ็กต์ที่ขึ้นกับ client ผ่าน schema ที่เลือกหรือจำเป็นต้องระบุเงื่อนไข client โดยตรง
- การกรอง Company Code: กำหนด [Company code filter] เพื่อจำกัด BUKRS ให้เหลือเฉพาะ Company Code ที่ต้องการ ใช้ขอบเขตเดียวกันกับ BKPF, BSEG, ACDOCA, REGUH, REGUP และแหล่งข้อมูลเอกสารการเปลี่ยนแปลงในกรณีที่มีฟิลด์ดังกล่าว
- การกรองเอกสาร: ตรวจสอบเงื่อนไขประเภทเอกสารใบแจ้งหนี้และประเภทเอกสารการชำระเงิน query มีตัวอย่างที่ใช้กันทั่วไป แต่ประเภทเอกสารปรับเปลี่ยนได้และต้องตั้งให้ตรงกับระบบเป้าหมาย
- ใบแจ้งหนี้ที่พักไว้: ตรวจสอบวิธีระบุสถานะเอกสารที่พักไว้ใน VBKPF หรือ BKPF query ใช้เงื่อนไขสถานะที่ปรับเปลี่ยนได้ เนื่องจากรหัสสถานะเอกสารที่พักไว้อาจแตกต่างกันตามรุ่นและการติดตั้ง
- การเปลี่ยนแปลงการชำระเงิน: ตรวจสอบคลาสออบเจ็กต์ ชื่อตาราง ชื่อฟิลด์ และรูปแบบค่าของ BSEG-ZLSPR และ BSEG-ZTERM ในเอกสารการเปลี่ยนแปลง ต้องยืนยันการจัดเก็บเอกสารและชื่อฟิลด์กับระบบเป้าหมาย
- โปรแกรมการชำระเงิน: ตรวจสอบฟิลด์ใน REGUH และ REGUP ที่ใช้ระบุสถานะข้อเสนอและการดำเนินการ วันที่รอบการชำระเงิน รหัสรอบการชำระเงิน และการเชื่อมโยงเอกสารบัญชี การตั้งค่าโปรแกรมการชำระเงินเฉพาะระบบอาจส่งผลต่อค่าที่ใช้ระบุสถานะได้
- ประสิทธิภาพ: จำกัดช่วงวันที่และ Company Code เลือกเฉพาะคอลัมน์ที่ต้องใช้ และใช้ตัวกรองเฉพาะแหล่งข้อมูลก่อนเชื่อมตาราง หากมีข้อมูลจำนวนมาก ให้สร้างชุดข้อมูลต้นทางที่กรองแล้ว หรือใช้ HANA calculation view หรือ schema สำหรับดึงข้อมูลที่ได้รับอนุมัติ
- สิทธิ์การเข้าถึง: ต้องมีสิทธิ์อ่านออบเจ็กต์ใน SAP HANA schema ที่เกี่ยวข้อง รวมถึง view ที่เปิดเผยข้อมูลบัญชี โปรแกรมการชำระเงิน และเอกสารการเปลี่ยนแปลง ประสานงานกับทีมความปลอดภัย SAP และทีมกำกับดูแลข้อมูล
- ข้อกำหนดด้านการทำงาน: ต้องเปิดใช้งานและมีข้อมูลในส่วนงานบัญชีการเงิน เจ้าหนี้การค้า โปรแกรมการชำระเงิน และเอกสารการเปลี่ยนแปลง หากระบบไม่ได้ใช้ตารางต้นทางใด ให้ตั้งค่าแหล่งทดแทนที่ได้รับอนุมัติตามการออกแบบระบบ
- การจัดการ timestamp: โดยทั่วไป BKPF และ BSEG แยกวันที่กับเวลาไว้คนละฟิลด์ query จะรวมข้อมูลเป็น timestamp ตรวจสอบเขตเวลาของระบบต้นทางและแปลงให้ถูกต้องก่อนอัปโหลดเข้า ProcessMind
- การคุ้มครองข้อมูล: จำกัดข้อมูลผู้ขายและข้อมูลบัญชีให้ตรงตามขอบเขตที่ได้รับอนุมัติ และปฏิบัติตามนโยบายการเก็บรักษา การปกปิดข้อมูล และการเข้าถึงขององค์กร.
ตัวอย่างคำค้น sql
WITH
params AS (
SELECT
TO_DATE('[Start date]', 'YYYYMMDD') AS start_date,
TO_DATE('[End date]', 'YYYYMMDD') AS end_date,
'[Source system identifier]' AS source_system
FROM DUMMY
),
base_bkpf AS (
SELECT
b.MANDT,
b.BUKRS,
b.BELNR,
b.GJAHR,
b.BLART,
b.BLDAT,
b.BUDAT,
b.CPUDT,
b.CPUTM,
b.USNAM,
b.STBLG,
b.STJAH,
b.XBLNR,
b.WAERS,
b.BKTXT,
p.source_system,
p.start_date,
p.end_date
FROM [Your SAP HANA schema].BKPF b
CROSS JOIN params p
WHERE b.BUDAT BETWEEN TO_VARCHAR(p.start_date, 'YYYYMMDD') AND TO_VARCHAR(p.end_date, 'YYYYMMDD')
AND [Company code filter]
),
invoice_bseg AS (
SELECT
k.MANDT,
k.BUKRS,
k.BELNR,
k.GJAHR,
k.BLART,
k.BLDAT,
k.BUDAT,
k.CPUDT,
k.CPUTM,
k.USNAM,
k.STBLG,
k.STJAH,
k.XBLNR,
k.WAERS,
k.BKTXT,
k.source_system,
s.BUZEI,
s.LIFNR,
s.WRBTR,
s.DMBTR,
s.ZTERM,
s.ZLSPR,
s.ZFBDT,
s.ZBD1T,
s.ZBD2T,
s.ZBD3T,
s.AUGDT,
s.AUGBL,
s.SHKZG,
s.SGTXT,
s.XREF1,
s.XREF2,
s.XREF3
FROM base_bkpf k
INNER JOIN [Your SAP HANA schema].BSEG s
ON s.MANDT = k.MANDT
AND s.BUKRS = k.BUKRS
AND s.BELNR = k.BELNR
AND s.GJAHR = k.GJAHR
WHERE s.LIFNR IS NOT NULL
AND s.LIFNR <> ''
),
acdoca_invoice AS (
SELECT
a.RCLNT AS MANDT,
a.RBUKRS AS BUKRS,
a.BELNR,
a.GJAHR,
a.BUZEI,
a.RACCT,
a.HSL,
a.WSL,
a.RWCUR,
a.BUDAT,
a.BLDAT,
a.AUGDT,
a.AUGBL
FROM [Your SAP HANA schema].ACDOCA a
WHERE a.BUDAT BETWEEN TO_VARCHAR((SELECT start_date FROM params), 'YYYYMMDD')
AND TO_VARCHAR((SELECT end_date FROM params), 'YYYYMMDD')
AND [ACDOCA company code filter]
),
invoice_cases AS (
SELECT DISTINCT
i.MANDT,
i.BUKRS,
i.BELNR,
i.GJAHR,
i.BUZEI,
i.LIFNR,
i.WRBTR,
i.ZTERM,
i.ZLSPR,
i.ZFBDT,
i.ZBD1T,
i.ZBD2T,
i.ZBD3T,
i.AUGDT,
i.AUGBL,
i.BLART,
i.BLDAT,
i.BUDAT,
i.CPUDT,
i.CPUTM,
i.USNAM,
i.STBLG,
i.STJAH,
i.XBLNR,
i.WAERS,
i.source_system,
COALESCE(NULLIF(i.XBLNR, ''), i.BELNR) AS InvoiceNumber,
ADD_DAYS(TO_DATE(COALESCE(NULLIF(i.ZFBDT, ''), i.BLDAT), 'YYYYMMDD'), COALESCE(TO_INTEGER(NULLIF(i.ZBD3T, '')), 0)) AS NetDueDate,
ADD_DAYS(TO_DATE(COALESCE(NULLIF(i.ZFBDT, ''), i.BLDAT), 'YYYYMMDD'), COALESCE(TO_INTEGER(NULLIF(i.ZBD1T, '')), 0)) AS DiscountDueDate1,
ADD_DAYS(TO_DATE(COALESCE(NULLIF(i.ZFBDT, ''), i.BLDAT), 'YYYYMMDD'), COALESCE(TO_INTEGER(NULLIF(i.ZBD2T, '')), 0)) AS DiscountDueDate2
FROM invoice_bseg i
LEFT JOIN acdoca_invoice a
ON a.MANDT = i.MANDT
AND a.BUKRS = i.BUKRS
AND a.BELNR = i.BELNR
AND a.GJAHR = i.GJAHR
AND a.BUZEI = i.BUZEI
),
change_events AS (
SELECT
c.MANDT,
c.OBJECTID,
c.TABKEY,
c.FNAME,
c.VALUE_OLD,
c.VALUE_NEW,
c.UDATE,
c.UTIME,
c.USERNAME
FROM [Your SAP HANA schema].[Your change document item table name] c
WHERE c.TABNAME = 'BSEG'
AND c.FNAME IN ('ZLSPR', 'ZTERM')
AND c.UDATE BETWEEN TO_VARCHAR((SELECT start_date FROM params), 'YYYYMMDD')
AND TO_VARCHAR((SELECT end_date FROM params), 'YYYYMMDD')
AND [Change document object class filter]
),
reguh_events AS (
SELECT
r.MANDT,
r.LAUFD,
r.LAUFI,
r.XVORL,
r.ZBUKR,
r.LIFNR,
r.VBLNR,
r.AUSFD,
r.AUSDT,
r.LAUFD AS RunDate,
r.ZALDT,
r.RZAWE,
r.XEINZ,
r.XPGRO,
r.XAVIS,
r.XVORL AS ProposalIndicator
FROM [Your SAP HANA schema].REGUH r
WHERE r.LAUFD BETWEEN TO_VARCHAR((SELECT start_date FROM params), 'YYYYMMDD')
AND TO_VARCHAR((SELECT end_date FROM params), 'YYYYMMDD')
),
regup_events AS (
SELECT
u.MANDT,
u.LAUFD,
u.LAUFI,
u.ZBUKR,
u.LIFNR,
u.VBLNR,
u.BUKRS,
u.BELNR,
u.GJAHR,
u.BUZEI,
u.XVORL,
u.AUGBL,
u.AUGDT
FROM [Your SAP HANA schema].REGUP u
WHERE u.LAUFD BETWEEN TO_VARCHAR((SELECT start_date FROM params), 'YYYYMMDD')
AND TO_VARCHAR((SELECT end_date FROM params), 'YYYYMMDD')
),
events AS (
SELECT
i.InvoiceNumber,
'Invoice Parked' AS Activity,
TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS') AS EventTime,
i.source_system AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
i.LIFNR AS VendorNumber,
i.BUKRS AS CompanyCode,
i.WRBTR AS InvoiceAmount,
i.BLART AS DocumentType,
i.ZTERM AS PaymentTerms,
i.ZLSPR AS PaymentBlockReason,
i.USNAM AS UserName,
i.AUGDT AS ClearingDate,
i.NetDueDate,
CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END AS IsLatePayment,
FALSE AS IsTouchless
FROM invoice_cases i
INNER JOIN [Your SAP HANA schema].VBKPF v
ON v.MANDT = i.MANDT
AND v.BUKRS = i.BUKRS
AND v.BELNR = i.BELNR
AND v.GJAHR = i.GJAHR
WHERE [VBKPF parked status predicate]
UNION ALL
SELECT i.InvoiceNumber, 'Invoice Posted', TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i
UNION ALL
SELECT i.InvoiceNumber, 'Payment Block Applied', TO_TIMESTAMP(c.UDATE || LPAD(COALESCE(c.UTIME, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, c.VALUE_NEW, c.USERNAME, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN change_events c ON c.OBJECTID = i.BELNR AND c.FNAME = 'ZLSPR' AND COALESCE(c.VALUE_OLD, '') = '' AND COALESCE(c.VALUE_NEW, '') <> ''
UNION ALL
SELECT i.InvoiceNumber, 'Price Variance Detected', TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.ZLSPR = 'R'
UNION ALL
SELECT i.InvoiceNumber, 'Quantity Variance Detected', TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.ZLSPR = 'M'
UNION ALL
SELECT i.InvoiceNumber, 'Payment Terms Changed', TO_TIMESTAMP(c.UDATE || LPAD(COALESCE(c.UTIME, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, c.VALUE_NEW, i.ZLSPR, c.USERNAME, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN change_events c ON c.OBJECTID = i.BELNR AND c.FNAME = 'ZTERM'
UNION ALL
SELECT i.InvoiceNumber, 'Payment Block Removed', TO_TIMESTAMP(c.UDATE || LPAD(COALESCE(c.UTIME, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, c.VALUE_OLD, c.USERNAME, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN change_events c ON c.OBJECTID = i.BELNR AND c.FNAME = 'ZLSPR' AND COALESCE(c.VALUE_OLD, '') <> '' AND COALESCE(c.VALUE_NEW, '') = ''
UNION ALL
SELECT i.InvoiceNumber, 'Invoice Due', TO_TIMESTAMP(TO_VARCHAR(i.NetDueDate, 'YYYYMMDD') || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.NetDueDate IS NOT NULL
UNION ALL
SELECT i.InvoiceNumber, 'Cash Discount Lost', TO_TIMESTAMP(TO_VARCHAR(CASE WHEN i.DiscountDueDate1 <= i.DiscountDueDate2 THEN i.DiscountDueDate1 ELSE i.DiscountDueDate2 END, 'YYYYMMDD') || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.AUGDT IS NULL OR i.AUGDT > CASE WHEN i.DiscountDueDate1 <= i.DiscountDueDate2 THEN i.DiscountDueDate1 ELSE i.DiscountDueDate2 END
UNION ALL
SELECT i.InvoiceNumber, 'Payment Proposal Created', TO_TIMESTAMP(r.RunDate || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN regup_events u ON u.BUKRS = i.BUKRS AND u.BELNR = i.BELNR AND u.GJAHR = i.GJAHR AND u.BUZEI = i.BUZEI INNER JOIN reguh_events r ON r.MANDT = u.MANDT AND r.LAUFD = u.LAUFD AND r.LAUFI = u.LAUFI AND r.LIFNR = u.LIFNR WHERE [Payment proposal status predicate]
UNION ALL
SELECT i.InvoiceNumber, 'Payment Run Executed', TO_TIMESTAMP(r.RunDate || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN regup_events u ON u.BUKRS = i.BUKRS AND u.BELNR = i.BELNR AND u.GJAHR = i.GJAHR AND u.BUZEI = i.BUZEI INNER JOIN reguh_events r ON r.MANDT = u.MANDT AND r.LAUFD = u.LAUFD AND r.LAUFI = u.LAUFI AND r.LIFNR = u.LIFNR WHERE [Payment run executed status predicate]
UNION ALL
SELECT i.InvoiceNumber, 'Payment Document Created', TO_TIMESTAMP(p.CPUDT || LPAD(COALESCE(p.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, p.BLART, i.ZTERM, i.ZLSPR, p.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i INNER JOIN [Your SAP HANA schema].BKPF p ON p.MANDT = i.MANDT AND p.BUKRS = i.BUKRS AND p.BELNR = i.AUGBL AND p.GJAHR = i.GJAHR WHERE p.BLART IN ('ZP', 'KZ')
UNION ALL
SELECT i.InvoiceNumber, 'Payment Cleared', TO_TIMESTAMP(i.AUGDT || '000000', 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.AUGDT IS NOT NULL
UNION ALL
SELECT i.InvoiceNumber, 'Invoice Reversed', TO_TIMESTAMP(i.CPUDT || LPAD(COALESCE(i.CPUTM, '000000'), 6, '0'), 'YYYYMMDDHH24MISS'), i.source_system, CURRENT_TIMESTAMP, i.LIFNR, i.BUKRS, i.WRBTR, i.BLART, i.ZTERM, i.ZLSPR, i.USNAM, i.AUGDT, i.NetDueDate, CASE WHEN i.AUGDT IS NOT NULL AND i.AUGDT > i.NetDueDate THEN TRUE ELSE FALSE END, FALSE
FROM invoice_cases i WHERE i.STBLG IS NOT NULL AND i.STBLG <> ''
)
SELECT
InvoiceNumber,
Activity,
EventTime,
SourceSystem,
LastDataUpdate,
VendorNumber,
CompanyCode,
InvoiceAmount,
DocumentType,
PaymentTerms,
PaymentBlockReason,
UserName,
ClearingDate,
NetDueDate,
IsLatePayment,
IsTouchless
FROM events
WHERE EventTime IS NOT NULL
ORDER BY InvoiceNumber, EventTime, Activity; พร้อมเริ่มต้นหรือยัง?
เปลี่ยนข้อมูลทางการเงินให้เป็นข้อมูลเชิงลึกที่นำไปใช้ได้จริง แล้วเริ่มปรับปรุงรอบการชำระเงินของคุณได้เลย ทีมงานของเราพร้อมช่วยเหลือคุณในทุกขั้นตอนของการใช้ process mining.
ปรับปรุงกระบวนการประมวลผลการจ่ายเงินเจ้าหนี้การค้าใน SAP S/4HANA
ขจัดคอขวดและลดระยะเวลาของกระบวนการลง 30%.
ไม่ต้องใช้บัตรเครดิต ตั้งค่าเสร็จใน 5 นาที.