เทมเพลตข้อมูลการจัดการสินค้าคงคลัง
เทมเพลตข้อมูลการจัดการสินค้าคงคลัง
- แอตทริบิวต์ที่แนะนำให้รวบรวม
- กิจกรรมสำคัญที่ควรติดตามเพื่อค้นหากระบวนการ
- คำแนะนำการดึงข้อมูลสำหรับ SAP S/4HANA
แอตทริบิวต์การจัดการสินค้าคงคลัง
| ชื่อ | คำอธิบาย | ||
|---|---|---|---|
| ล็อตสินค้าในคลัง InventoryBatchLot | รหัสเฉพาะที่ใช้ระบุสินค้าจำนวนหนึ่ง และใช้เป็นรหัสเคสเพื่อติดตามวงจรของสินค้า. | ||
| คำอธิบาย หมายเลขล็อตสินค้าคงคลังเป็นรหัสเคสหลักที่รวบรวมกิจกรรมทั้งหมดของสินค้ารายการหนึ่งในจำนวนที่ระบุ ช่วยให้เห็นลำดับการเคลื่อนไหวของสินค้าตั้งแต่รับเข้าคลัง การเคลื่อนย้ายและเปลี่ยนสถานะภายใน ไปจนถึงการตัดจ่ายเพื่อขาย ใช้ในการผลิต หรือกำจัดทิ้ง ในการวิเคราะห์กระบวนการ แอตทริบิวต์นี้เป็นข้อมูลพื้นฐานที่สำคัญ ช่วยให้คุณติดตามขั้นตอนตั้งแต่ต้นจนจบของแต่ละล็อต วัดระยะเวลาได้แม่นยำ ระบุความแตกต่างของกระบวนการ และทำความเข้าใจวิธีจัดการล็อตต่างๆ การวิเคราะห์ในระดับล็อตมีความสำคัญต่ออุตสาหกรรมที่ต้องตรวจสอบย้อนกลับ ควบคุมคุณภาพ และจัดการวันหมดอายุ เช่น อุตสาหกรรมยา อาหารและเครื่องดื่ม และเคมีภัณฑ์. เหตุผลที่สำคัญ นี่คือรหัสหลักที่เชื่อมโยงเหตุการณ์สินค้าคงคลังที่เกี่ยวข้องทั้งหมดไว้ในเคสเดียว ทำให้วิเคราะห์กระบวนการตั้งแต่ต้นจนจบได้. แหล่งข้อมูล โดยทั่วไปคือหมายเลขล็อต ซึ่งอยู่ในตาราง SAP เช่น MCHA (ข้อมูลหลักล็อตสินค้า) หรือ MCH1 (ล็อตสินค้า) ในฟิลด์ CHARG. ตัวอย่าง B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| เวลาที่เกิดเหตุการณ์ EventTime | วันที่และเวลาที่แน่นอนซึ่งระบบบันทึกกิจกรรมเกี่ยวกับสินค้าคงคลัง. | ||
| คำอธิบาย เวลาที่เกิดเหตุการณ์คือเวลาประทับที่ระบุอย่างชัดเจนว่ากิจกรรมเกิดขึ้นเมื่อใด ข้อมูลนี้จำเป็นต่อการเรียงเหตุการณ์ตามลำดับเวลา เพื่อสร้างภาพขั้นตอนการทำงานของแต่ละล็อตสินค้า และเป็นพื้นฐานของการวิเคราะห์ process mining ที่เกี่ยวกับเวลา เวลาที่เกิดเหตุการณ์ต้องแม่นยำ เพื่อคำนวณตัวชี้วัดสำคัญ เช่น รอบเวลา ระยะเวลาดำเนินการ และระยะเวลาของกิจกรรม นอกจากนี้ยังช่วยวิเคราะห์ประสิทธิภาพของกระบวนการในช่วงเวลาต่างๆ ระบุช่วงที่เกิดคอขวด และทำความเข้าใจสาเหตุของความล่าช้าจากข้อมูลจริง เช่น ระยะเวลาที่ล็อตสินค้าค้างอยู่ระหว่างตรวจสอบคุณภาพก่อนปล่อยออกมา. เหตุผลที่สำคัญ เวลาประทับนี้ใช้เรียงเหตุการณ์ตามลำดับเวลา และเป็นพื้นฐานสำหรับคำนวณระยะเวลาและประสิทธิภาพทั้งหมด. แหล่งข้อมูล โดยทั่วไปได้จากวันที่บันทึกรายการ (MKPF-BUDAT) และเวลาที่บันทึกรายการ (MKPF-CPUTM) ในตารางส่วนหัวเอกสารวัสดุ MKPF. ตัวอย่าง 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| กิจกรรม ActivityName | ชื่อเหตุการณ์ทางธุรกิจที่เกิดขึ้น ณ จุดหนึ่งในกระบวนการจัดการสินค้าคงคลัง. | ||
| คำอธิบาย แอตทริบิวต์กิจกรรมอธิบายขั้นตอนหรือเหตุการณ์หนึ่งในวงจรสินค้าคงคลังของล็อตสินค้า เหตุการณ์เหล่านี้แสดงการดำเนินงานสำคัญ เช่น รับสินค้า ย้ายสินค้า ตรวจสอบคุณภาพ หรือตัดจ่ายวัสดุ แต่ละกิจกรรมเป็นบันทึกสิ่งที่เกิดขึ้นกับล็อตสินค้า ณ เวลาหนึ่ง การวิเคราะห์กิจกรรมเป็นพื้นฐานของ process mining ช่วยให้เห็นภาพการไหลของกระบวนการ ระบุเส้นทางที่เกิดขึ้นบ่อยหรือไม่บ่อย ตรวจหาคอขวดที่ทำให้กิจกรรมล่าช้า และวิเคราะห์ขั้นตอนที่ต้องทำซ้ำ เมื่อเข้าใจลำดับและความถี่ของกิจกรรม เช่น 'ตัดจำหน่ายสินค้าในสต็อก' หรือ 'ตรวจสอบคุณภาพ' ธุรกิจก็ระบุจุดที่ควรปรับปรุงกระบวนการและประสิทธิภาพการปฏิบัติงานได้. เหตุผลที่สำคัญ ข้อมูลนี้กำหนดขั้นตอนในกระบวนการ ทำให้แสดงภาพและวิเคราะห์วงจรสินค้าคงคลังได้. แหล่งข้อมูล แอตทริบิวต์นี้ได้มาจากข้อมูลอื่น โดยมักจับคู่ประเภทการเคลื่อนไหวของ SAP (MSEG-BWART) หรือรหัสธุรกรรม (MKPF-TCODE2) กับชื่อที่ผู้ใช้เข้าใจง่าย. ตัวอย่าง บันทึกการรับสินค้าเข้าคลังบันทึกการโอนย้ายเพื่อจัดเก็บสินค้าเข้าที่บันทึกการตัดจ่ายสินค้าเพื่อจัดส่งตัดจำหน่ายสินค้าในสต็อก | |||
| ชื่อผู้ใช้ UserName | รหัสผู้ใช้ของผู้ที่ดำเนินธุรกรรมใน SAP. | ||
| คำอธิบาย แอตทริบิวต์นี้บันทึกรหัสผู้ใช้ SAP ของพนักงานที่บันทึกเอกสารหรือดำเนินกิจกรรม ช่วยตรวจสอบย้อนหลังได้ว่าใครรับผิดชอบการดำเนินการแต่ละรายการในกระบวนการจัดการสินค้าคงคลัง การวิเคราะห์ตามผู้ใช้จำเป็นต่อการทำความเข้าใจประสิทธิภาพ การปฏิบัติตามข้อกำหนด และความต้องการด้านการฝึกอบรม ตัวอย่างเช่น แดชบอร์ด 'สาเหตุของการปรับยอดสินค้าคงคลังด้วยตนเอง' ใช้แอตทริบิวต์นี้เพื่อดูว่าใครปรับยอดบ่อยที่สุด ข้อมูลนี้ช่วยระบุผู้ใช้ที่อาจต้องได้รับการฝึกอบรมเพิ่มเติม ตรวจพบกิจกรรมที่ไม่ได้รับอนุญาต หรือยกย่องผู้ที่ทำผลงานได้ดี. เหตุผลที่สำคัญ ช่วยระบุผู้รับผิดชอบ และค้นหาพฤติกรรมเฉพาะของผู้ใช้ ความต้องการด้านการฝึกอบรม หรือปัญหาการปฏิบัติตามข้อกำหนด. แหล่งข้อมูล อยู่ในตารางส่วนหัวเอกสารวัสดุ MKPF ฟิลด์ USNAM (ชื่อผู้ใช้). ตัวอย่าง JSMITHMBROWNWAREHOUSE_OPS | |||
| ตำแหน่งจัดเก็บ StorageLocation | ตำแหน่งเฉพาะภายใน Plant ที่ใช้จัดเก็บสินค้าในคลังจริง. | ||
| คำอธิบาย ตำแหน่งจัดเก็บเป็นหน่วยงานที่ใช้แยกประเภทสินค้าคงคลังภายใน Plant เช่น โรงงานหนึ่งอาจแยกตำแหน่งจัดเก็บวัตถุดิบ สินค้าสำเร็จรูป และสินค้าที่รอตรวจสอบคุณภาพออกจากกัน ข้อมูลนี้ระบุตำแหน่งได้ละเอียดกว่า Plant จึงใช้วิเคราะห์การเคลื่อนย้ายระหว่างพื้นที่จัดเก็บ เช่น ระยะเวลาขนย้ายสินค้าจากพื้นที่รับสินค้าไปยังคลังสินค้าหลัก การวิเคราะห์การใช้พื้นที่และความถี่ในการเคลื่อนย้ายแยกตามตำแหน่งจัดเก็บช่วยปรับผังคลังและการขนย้ายภายในให้เหมาะสมได้. เหตุผลที่สำคัญ ช่วยให้เห็นตำแหน่งจัดเก็บสินค้าใน Plant ได้ละเอียดขึ้น และวิเคราะห์การเคลื่อนย้ายภายในกับประสิทธิภาพการใช้พื้นที่ได้. แหล่งข้อมูล อยู่ในตารางรายการเอกสารวัสดุ MSEG ฟิลด์ LGORT (Storage Location). ตัวอย่าง 0001RM01FG01QI01 | |||
| ประเภทการเคลื่อนไหว MovementType | รหัสสามหลักใน SAP ที่กำหนดวิธีบันทึกการเคลื่อนไหวของสินค้า. | ||
| คำอธิบาย ประเภทการเคลื่อนไหวเป็นรหัสควบคุมสำคัญใน SAP Inventory Management ซึ่งกำหนดลักษณะของการเคลื่อนไหววัสดุ โดยระบุว่าต้องอัปเดตบัญชีใด หน้าจอธุรกรรมจะแสดงรูปแบบใด และต้องอัปเดตฟิลด์จำนวนหรือมูลค่าใด ตัวอย่างเช่น '101' ใช้สำหรับรับสินค้า '311' ใช้สำหรับบันทึกการโอนย้าย และ '551' ใช้สำหรับตัดจำหน่าย แอตทริบิวต์นี้มักใช้เป็นข้อมูลต้นทางเพื่อสร้างชื่อ 'กิจกรรม' ที่ผู้ใช้เข้าใจง่าย การวิเคราะห์กระบวนการตามประเภทการเคลื่อนไหวช่วยให้เห็นรายละเอียดทางเทคนิคของการไหลเวียนสินค้า จำเป็นต่อการตรวจสอบความถูกต้องของการทำแผนที่กระบวนการ และระบุธุรกรรมบางประเภทที่อาจทำให้เกิดคอขวดหรือความเบี่ยงเบน. เหตุผลที่สำคัญ ช่วยจำแนกเหตุการณ์สินค้าคงคลังแต่ละรายการในเชิงเทคนิคได้อย่างแม่นยำ ซึ่งจำเป็นต่อการกำหนดกิจกรรมและการวิเคราะห์โดยละเอียด. แหล่งข้อมูล อยู่ในตารางรายการเอกสารวัสดุ MSEG ฟิลด์ BWART (ประเภทการเคลื่อนไหว). ตัวอย่าง 101311261551601 | |||
| ปริมาณ Quantity | ปริมาณวัสดุที่เกี่ยวข้องกับการเคลื่อนไหวของสินค้าคงคลัง. | ||
| คำอธิบาย ข้อมูลนี้ระบุปริมาณวัสดุที่มีการเคลื่อนย้าย รับเข้า เบิกจ่าย หรือปรับปรุงในแต่ละกิจกรรม โดยบันทึกตามหน่วยวัดพื้นฐานของวัสดุนั้น การวิเคราะห์ปริมาณช่วยให้เข้าใจขนาดและผลกระทบของกระบวนการสินค้าคงคลัง และสร้างแดชบอร์ดเพื่อแสดงปริมาณสินค้าที่จัดการได้ เช่น “ปริมาณการเบิกจ่ายสินค้าแยกตาม SKU” นอกจากนี้ยังใช้คำนวณ KPI เช่น “อัตราสินค้าคงคลังที่ตัดจำหน่าย” ทำให้วิเคราะห์กระบวนการได้มากกว่าการนับจำนวนเหตุการณ์. เหตุผลที่สำคัญ ระบุปริมาณวัสดุในแต่ละกิจกรรม จึงวิเคราะห์ปริมาณงาน สินค้าที่ต้องตัดจำหน่าย และผลกระทบจากการปรับปรุงได้. แหล่งข้อมูล อยู่ในตารางรายการเอกสารวัสดุ MSEG ฟิลด์ MENGE (Quantity). ตัวอย่าง 10012.55000-10 | |||
| รหัสเหตุผลการเคลื่อนไหว MovementReasonCode | รหัสที่ระบุเหตุผลของการเคลื่อนไหวสินค้าคงคลัง. | ||
| คำอธิบาย รหัสเหตุผลการเคลื่อนไหวให้ข้อมูลเพิ่มเติมว่าทำไมจึงมีการเคลื่อนไหวสินค้า มักใช้ชี้แจงรายการที่ไม่ได้วางแผนไว้ เช่น การปรับปรุงสินค้าคงคลัง การคืนสินค้า หรือการตัดจำหน่าย ข้อมูลนี้มีประโยชน์มากต่อการวิเคราะห์หาสาเหตุที่แท้จริง สำหรับแดชบอร์ด “ปัจจัยที่ทำให้ต้องปรับปรุงสินค้าคงคลังด้วยตนเอง” การวิเคราะห์ตามรหัสเหตุผลอาจช่วยให้เห็นสาเหตุของความคลาดเคลื่อน เช่น สินค้าเสียหาย การโจรกรรม หรือการป้อนข้อมูลผิด ข้อมูลนี้ช่วยให้องค์กรแก้ปัญหาที่ต้นเหตุ แทนที่จะแก้เพียงอาการ. เหตุผลที่สำคัญ อธิบายสาเหตุของการเคลื่อนไหวสินค้าคงคลังที่ไม่ได้วางแผนไว้ และช่วยให้วิเคราะห์หาต้นเหตุได้ตรงจุด. แหล่งข้อมูล อยู่ในตารางรายการเอกสารวัสดุ MSEG ฟิลด์ GRUND (Reason for Movement). ตัวอย่าง 00010005102 | |||
| โรงงาน Plant | หน่วยงานในโครงสร้างองค์กรที่หมายถึงสถานที่จัดเก็บสินค้า เช่น โรงงานหรือศูนย์กระจายสินค้า. | ||
| คำอธิบาย Plant เป็นหน่วยงานหลักใน SAP ซึ่งอาจหมายถึงโรงงานผลิต คลังสินค้าส่วนกลาง หรือสำนักงานใหญ่ สินค้าคงคลังทั้งหมดจะอยู่ภายใน Plant ไม่ว่าจะเป็นตำแหน่งจริงหรือตำแหน่งที่กำหนดในระบบ การวิเคราะห์แยกตาม Plant เป็นพื้นฐานสำคัญในการเปรียบเทียบประสิทธิภาพของกระบวนการในแต่ละสถานที่ ช่วยตอบคำถามได้ เช่น “Plant ใดใช้เวลาจัดเก็บสินค้านานที่สุด” หรือ “อัตราความคลาดเคลื่อนของสินค้าคงคลังใน Plant A สูงกว่า Plant B หรือไม่” การแบ่งข้อมูลตามพื้นที่หรือหน่วยงานช่วยให้ระบุปัญหาเฉพาะจุดและแบ่งปันแนวทางที่ได้ผลระหว่างหน่วยงานได้. เหตุผลที่สำคัญ ช่วยให้เปรียบเทียบกระบวนการและประสิทธิภาพการจัดการสินค้าคงคลังระหว่างสถานที่ต่างๆ ของบริษัทได้. แหล่งข้อมูล อยู่ในตารางรายการเอกสารวัสดุ MSEG ฟิลด์ WERKS (Plant). ตัวอย่าง 10001710DE01US01 | |||
| หมายเลขวัสดุ MaterialNumber | รหัสเฉพาะที่ใช้ระบุผลิตภัณฑ์หรือวัสดุที่กำลังจัดการ. | ||
| คำอธิบาย หมายเลขวัสดุ ซึ่งมักเรียกว่า SKU (Stock Keeping Unit) คือรหัสเฉพาะที่กำหนดให้กับผลิตภัณฑ์แต่ละรายการ เป็นข้อมูลหลักพื้นฐานในการจัดการสินค้าคงคลัง ใช้ติดตามจำนวน มูลค่า และการเคลื่อนไหวของสินค้า ใน process mining การวิเคราะห์ตามหมายเลขวัสดุช่วยให้เห็นกระบวนการสินค้าคงคลังแยกตามผลิตภัณฑ์ ช่วยตอบคำถามได้ว่า ผลิตภัณฑ์ใดใช้เวลาตรวจสอบคุณภาพนานที่สุด รายการใดถูกตัดจำหน่ายบ่อยที่สุด หรือรายการใดมีการโอนย้ายภายในมากที่สุด การแยกข้อมูลเช่นนี้จำเป็นต่อการระบุปัญหาเฉพาะของผลิตภัณฑ์และปรับกลยุทธ์การจัดการสินค้าคงคลังให้เหมาะกับสินค้าแต่ละประเภท. เหตุผลที่สำคัญ ช่วยแยกวิเคราะห์ตามผลิตภัณฑ์ เพื่อให้เห็นรูปแบบและปัญหาที่เกี่ยวข้องกับสินค้าแต่ละรายการ. แหล่งข้อมูล อยู่ในตารางรายการเอกสารวัสดุ MSEG ฟิลด์ MATNR ส่วนข้อมูลหลักอยู่ในตาราง MARA. ตัวอย่าง RM-1001FG-2050-B100-400-A | |||
| ช่องจัดเก็บสินค้า StorageBin | หน่วยจัดเก็บที่ระบุตำแหน่งวัสดุในคลังได้ละเอียดที่สุด. | ||
| คำอธิบาย ช่องจัดเก็บสินค้าระบุตำแหน่งเฉพาะในคลัง เช่น ตำแหน่งบนชั้นวาง โดยทั่วไปจะใช้ข้อมูลระดับนี้เมื่อมีการติดตั้ง SAP Warehouse Management (WM) หรือ Extended Warehouse Management (EWM) ข้อมูลนี้สำคัญต่อแดชบอร์ด “การใช้พื้นที่จัดเก็บในคลัง” เพราะช่วยวิเคราะห์ประสิทธิภาพการใช้พื้นที่ ระบุจุดที่มีความแออัด และค้นหาความไม่มีประสิทธิภาพในเส้นทางจัดเก็บหรือหยิบสินค้า การวิเคราะห์การเคลื่อนย้ายระหว่างช่องจัดเก็บช่วยปรับผังคลังและลดเวลาเดินของพนักงานได้. เหตุผลที่สำคัญ ให้ข้อมูลตำแหน่งที่ละเอียดที่สุด จึงวิเคราะห์การใช้พื้นที่คลังและประสิทธิภาพการปฏิบัติงานได้. แหล่งข้อมูล หากใช้ WM ข้อมูลนี้อาจอยู่ในตารางใบสั่งโอน เช่น LTAK/LTAP ส่วนเอกสารสินค้าคงคลังอาจอยู่ใน MSEG-LGPBE โปรดดูเอกสาร SAP S/4HANA. ตัวอย่าง A-01-01-AB-05-10-CRCV-AREA-01 | |||
| ประเภทสต็อก StockType | ระบุสถานะของสินค้าคงคลัง เช่น ใช้งานได้ รอตรวจสอบคุณภาพ หรือถูกระงับการใช้งาน. | ||
| คำอธิบาย ประเภทสต็อกใช้จัดหมวดหมู่สินค้าคงคลังตามสถานะการใช้งาน ประเภทหลัก ได้แก่ สต็อกที่พร้อมใช้งาน สต็อกที่รอตรวจสอบคุณภาพ และสต็อกที่ถูกระงับการใช้งาน การเคลื่อนไหวสินค้ามักทำให้ประเภทสต็อกเปลี่ยนไป การติดตามการเปลี่ยนประเภทสต็อกเป็นพื้นฐานสำคัญในการทำความเข้าใจกระบวนการตรวจสอบความพร้อมของสินค้า และช่วยติดตามกิจกรรม เช่น “บันทึกสต็อกเพื่อรอตรวจสอบคุณภาพ” และ “เปลี่ยนสถานะสต็อกเป็นถูกระงับการใช้งาน” การวิเคราะห์เวลาที่สินค้าอยู่ในแต่ละประเภท โดยเฉพาะช่วงรอตรวจสอบคุณภาพ ช่วยระบุความล่าช้าที่กระทบต่อความพร้อมของสินค้าสำหรับขายหรือผลิต. เหตุผลที่สำคัญ ติดตามสถานะความพร้อมใช้งานของสินค้าคงคลัง ซึ่งสำคัญต่อการวิเคราะห์ความล่าช้าในการตรวจสอบคุณภาพและความพร้อมของสินค้า. แหล่งข้อมูล อยู่ในตารางรายการเอกสารวัสดุ MSEG ฟิลด์ INSMK (Stock Type). ตัวอย่าง พร้อมใช้งานรอตรวจสอบคุณภาพสต็อกที่ถูกระงับการใช้งาน | |||
| ระบบต้นทาง SourceSystem | ระบุระบบต้นทางที่ใช้ดึงข้อมูล. | ||
| คำอธิบาย แอตทริบิวต์นี้ระบุระบบบันทึกข้อมูลหลักที่เป็นแหล่งที่มาของข้อมูลการจัดการสินค้าคงคลัง ในกรณีนี้คือ SAP S/4HANA อินสแตนซ์ที่ระบุ ข้อมูลนี้สำคัญในสภาพแวดล้อมที่ดึงข้อมูลจาก ERP หลายระบบ ระบบจัดการคลังสินค้า หรือแพลตฟอร์มเดิม แม้ข้อมูลนี้อาจไม่เปลี่ยนแปลงเมื่อวิเคราะห์ระบบเดียว แต่มีความสำคัญเมื่อนำข้อมูลจากหลายแหล่งมารวมกันเพื่อให้เห็นภาพกระบวนการทั้งหมด ช่วยกำกับดูแลข้อมูล แก้ไขปัญหาการดึงข้อมูล และตรวจสอบที่มาของข้อมูลได้ชัดเจน. เหตุผลที่สำคัญ ข้อมูลนี้บอกที่มาของข้อมูล ซึ่งจำเป็นต่อการกำกับดูแลข้อมูลและการวิเคราะห์หลายระบบ. แหล่งข้อมูล โดยทั่วไปจะกำหนดค่าไว้ตายตัวระหว่างการแปลงข้อมูล เพื่อระบุ SAP S/4HANA อินสแตนซ์ที่ต้องการ. ตัวอย่าง S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
| ระยะเวลาตั้งแต่รับคำสั่งซื้อจนจัดส่งเสร็จ OrderFulfillmentCycleTime | ระยะเวลาตั้งแต่เริ่มหยิบสินค้าจนถึงการเบิกจ่ายเพื่อจัดส่ง. | ||
| คำอธิบาย ตัวชี้วัดนี้คำนวณจากเวลาตั้งแต่กิจกรรม “เริ่มหยิบสินค้า” จนถึงกิจกรรม “บันทึกการเบิกจ่ายสินค้าเพื่อจัดส่ง” โดยแสดงเวลารวมที่คลังใช้เตรียมและจัดส่งคำสั่งซื้อของลูกค้าหลังเริ่มกระบวนการ ข้อมูลนี้ใช้วัด KPI “ระยะเวลาตั้งแต่รับคำสั่งซื้อจนจัดส่งเสร็จ” โดยตรง การวิเคราะห์ระยะเวลาช่วยให้องค์กรเข้าใจว่าตอบสนองต่อความต้องการของลูกค้าได้รวดเร็วเพียงใด และแยกดูตามสินค้า คลังสินค้า หรือลูกค้าเพื่อระบุจุดที่เกิดความล่าช้าในขั้นตอนหยิบ บรรจุ และจัดส่ง ซึ่งส่งผลต่อความพึงพอใจของลูกค้าและประสิทธิภาพด้านโลจิสติกส์โดยตรง. เหตุผลที่สำคัญ วัดความรวดเร็วและประสิทธิภาพของการจ่ายสินค้าออกจากคลัง ซึ่งเป็นปัจจัยสำคัญต่อความพึงพอใจของลูกค้า. แหล่งข้อมูล คำนวณจากผลต่างของเวลาระหว่างเหตุการณ์ “เริ่มหยิบสินค้า” และ “บันทึกการเบิกจ่ายสินค้าเพื่อจัดส่ง” สำหรับแต่ละล็อต. ตัวอย่าง 7200144003600 | |||
| วันหมดอายุ ExpirationDate | วันที่สินค้าล็อตนั้นหมดอายุและไม่สามารถใช้งานได้อีกต่อไป. | ||
| คำอธิบาย วันหมดอายุของสินค้า (SLED) เป็นข้อมูลหลักที่สำคัญสำหรับสินค้าที่เน่าเสียง่ายหรือมีอายุการใช้งานจำกัด โดยจัดการในระดับล็อตและระบุวันที่สินค้าหมดสิทธิ์จำหน่ายหรือบริโภค ข้อมูลนี้จำเป็นต่อแดชบอร์ด “วิเคราะห์สินค้าล้าสมัยและหมดอายุ” การวิเคราะห์กิจกรรมควบคู่กับวันหมดอายุช่วยให้องค์กรระบุล็อตที่เสี่ยงหมดอายุและดำเนินการล่วงหน้าได้ อีกทั้งยังใช้วัดประสิทธิผลของนโยบายหมุนเวียนสินค้า เช่น หมดอายุก่อนจ่ายออกก่อน (FEFO) และคำนวณความสูญเสียจากการตัดจำหน่ายสินค้าหมดอายุ. เหตุผลที่สำคัญ ช่วยวิเคราะห์สินค้าล้าสมัยและหมดอายุ เพื่อลดของเสียและความสูญเสียทางการเงิน. แหล่งข้อมูล อยู่ในตารางข้อมูลหลักของล็อต MCH1 หรือ MCHA ฟิลด์ VFDAT (Shelf Life Expiration Date). ตัวอย่าง 2024-12-312025-06-302024-09-01 | |||
| หน่วยวัด UnitOfMeasure | หน่วยที่ใช้วัดปริมาณวัสดุ เช่น ชิ้นหรือกิโลกรัม. | ||
| คำอธิบาย หน่วยวัดระบุหน่วยของข้อมูล “ปริมาณ” ตัวอย่างหน่วยที่ใช้กันทั่วไป ได้แก่ ชิ้น (PC) กิโลกรัม (KG) ลิตร (L) และกล่อง (BOX) ข้อมูลนี้ช่วยให้เข้าใจค่าปริมาณได้ถูกต้อง แม้จะใช้เป็นเพียงคำอธิบาย แต่ข้อมูลนี้สำคัญต่อคุณภาพข้อมูลและการวิเคราะห์ที่ต้องแปลงหน่วยให้เป็นมาตรฐานเดียวกัน เช่น การคำนวณมูลค่ารวมของสินค้าที่ตัดจำหน่ายอย่างถูกต้อง ต้องทราบหน่วยของปริมาณแต่ละรายการและอาจต้องแปลงหน่วยก่อน. เหตุผลที่สำคัญ ช่วยให้เข้าใจข้อมูล “ปริมาณ” ได้ถูกต้อง และตีความปริมาณวัสดุได้อย่างแม่นยำ. แหล่งข้อมูล อยู่ในตารางรายการเอกสารวัสดุ MSEG ฟิลด์ MEINS (Base Unit of Measure). ตัวอย่าง PCKGEAM | |||
| หมายเลขเอกสารวัสดุ MaterialDocumentNumber | หมายเลขเฉพาะที่ใช้ระบุเอกสารวัสดุซึ่งบันทึกการเคลื่อนไหวของสินค้า. | ||
| คำอธิบาย เมื่อบันทึกการเคลื่อนไหวของสินค้าใน SAP ระบบจะสร้างเอกสารวัสดุไว้เป็นหลักฐาน ข้อมูลนี้คือหมายเลขเฉพาะของเอกสารดังกล่าว เอกสารวัสดุหนึ่งฉบับอาจมีหลายรายการหรือหลายกิจกรรม ใน process mining หมายเลขเอกสารวัสดุเป็นรหัสธุรกรรมสำคัญที่ใช้จัดกลุ่มเหตุการณ์ที่บันทึกพร้อมกันได้ และจำเป็นต่อการตรวจสอบย้อนหลังหรือเจาะลึกจากผลวิเคราะห์กระบวนการไปยังระบบต้นทางเพื่อตรวจสอบธุรกรรมเฉพาะรายการ. เหตุผลที่สำคัญ ใช้เป็นรหัสธุรกรรมสำหรับตรวจสอบย้อนหลัง และจัดกลุ่มกิจกรรมที่ดำเนินการพร้อมกันได้. แหล่งข้อมูล อยู่ในตาราง MKPF (ส่วนหัว) และ MSEG (รายการ) ฟิลด์ MBLNR (Number of Material Document). ตัวอย่าง 490000123450000056784900002345 | |||
| อัปเดตข้อมูลล่าสุดเมื่อ LastDataUpdate | เวลาประทับที่ระบุว่าระบบต้นทางอัปเดตข้อมูลของระเบียนนี้ครั้งล่าสุดเมื่อใด. | ||
| คำอธิบาย แอตทริบิวต์นี้บันทึกวันที่และเวลาที่ดึงหรืออัปเดตข้อมูลจากระบบต้นทางครั้งล่าสุด เป็นข้อมูลกำกับที่สำคัญซึ่งบอกว่าข้อมูลที่นำมาวิเคราะห์เป็นข้อมูลล่าสุดเพียงใด ช่วยให้ผู้ใช้ทราบว่ากำลังดูข้อมูลที่ใกล้เคียงเรียลไทม์หรือเป็นภาพข้อมูลจากช่วงก่อนหน้า การทราบว่าข้อมูลเป็นปัจจุบันเพียงใดช่วยให้สรุปผลได้ตรงประเด็นและแม่นยำ นักวิเคราะห์และผู้ใช้ทางธุรกิจใช้ฟิลด์นี้ตรวจสอบความใหม่ของข้อมูล และมักแสดงไว้บนแดชบอร์ดเพื่อให้เข้าใจบริบทของข้อมูลเชิงลึก. เหตุผลที่สำคัญ ข้อมูลนี้ช่วยให้ผู้ใช้ทราบว่าข้อมูลเป็นปัจจุบันเพียงใด และช่วยให้มั่นใจว่าการวิเคราะห์อิงจากข้อมูลล่าสุด. แหล่งข้อมูล ระบบสร้างและเพิ่มเวลาประทับนี้ระหว่างกระบวนการดึง แปลง และโหลดข้อมูล (ETL). ตัวอย่าง 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
กิจกรรมการจัดการสินค้าคงคลัง
| กิจกรรม | คำอธิบาย | ||
|---|---|---|---|
| ตัดจำหน่ายสินค้าในสต็อก | แสดงการกำจัดล็อตสินค้าออกจากระบบสินค้าคงคลังอย่างถาวร โดยทั่วไปเกิดกับสินค้าหมดอายุ เสียหาย หรือล้าสมัย. | ||
| เหตุผลที่สำคัญ นี่คือเหตุการณ์สิ้นสุดที่แสดงถึงการสูญเสียทางการเงิน การวิเคราะห์รายการตัดจำหน่ายช่วยระบุปัญหาเรื่องสินค้าเก่า ขั้นตอนการจัดการ หรือการพยากรณ์ความต้องการ. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC โดยระบุจากประเภทการเคลื่อนไหว (BWART) สำหรับการตัดจำหน่าย เช่น 551 (จากสต็อกพร้อมใช้งานโดยไม่มีข้อจำกัด), 553 (จากสต็อกตรวจสอบคุณภาพ) หรือ 555 (จากสต็อกที่ถูกระงับการใช้งาน). บันทึก ดึงข้อมูลจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหวสำหรับการตัดจำหน่าย เช่น 551. ประเภทเหตุการณ์ explicit | |||
| บันทึกการตัดจ่ายสินค้าเพื่อการผลิต | แสดงการนำล็อตสินค้าไปใช้ในใบสั่งผลิตหรือใบสั่งกระบวนการ ธุรกรรมนี้ลดจำนวนสินค้าในสต็อกและจัดสรรต้นทุนวัสดุให้กับใบสั่งผลิต. | ||
| เหตุผลที่สำคัญ นี่คือเหตุการณ์หลักของการใช้วัสดุ ซึ่งแสดงจุดสิ้นสุดของวงจรสินค้าคงคลังสำหรับชิ้นส่วน มีความสำคัญต่อการวิเคราะห์ความพร้อมของวัสดุสำหรับการผลิตและรูปแบบการใช้วัสดุ. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC โดยระบุจากประเภทการเคลื่อนไหว (BWART) สำหรับการตัดจ่ายสินค้าให้ใบสั่ง เช่น 261. บันทึก ดึงข้อมูลจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหว 261. ประเภทเหตุการณ์ explicit | |||
| บันทึกการตัดจ่ายสินค้าเพื่อจัดส่ง | บันทึกขั้นตอนสุดท้ายของกระบวนการส่งสินค้าออก โดยโอนกรรมสิทธิ์ล็อตสินค้าให้ลูกค้าหรือผู้ขนส่ง ธุรกรรมนี้บันทึกไว้อย่างชัดเจน ลดจำนวนสินค้าในสต็อก และบันทึกบัญชี. | ||
| เหตุผลที่สำคัญ นี่คือเหตุการณ์สำคัญที่แสดงว่ากระบวนการจัดส่งคำสั่งซื้อเสร็จสมบูรณ์ มีความสำคัญต่อการวัดการส่งมอบตรงเวลาและคำนวณระยะเวลารวมตั้งแต่รับคำสั่งซื้อจนจัดส่ง. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC โดยระบุจากประเภทการเคลื่อนไหว (BWART) สำหรับการตัดจ่ายสินค้าเพื่อส่งตามคำสั่งขาย ซึ่งโดยทั่วไปคือ 601. บันทึก ดึงข้อมูลจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหว 601. ประเภทเหตุการณ์ explicit | |||
| บันทึกการปรับยอดสินค้าคงคลัง | บันทึกการเปลี่ยนแปลงจำนวนสินค้า ซึ่งเกิดจากการตรวจนับสินค้าจริงหรือพบยอดไม่ตรงกัน เหตุการณ์นี้ปรับยอดสินค้าในระบบให้ตรงกับจำนวนที่ตรวจนับได้จริง. | ||
| เหตุผลที่สำคัญ การปรับยอดเหล่านี้มีความสำคัญต่อการรักษาความถูกต้องของสินค้าคงคลัง หากมีการปรับยอดบ่อยครั้ง แสดงว่าอาจมีปัญหาเบื้องหลังในการจัดการสินค้า การรักษาความปลอดภัย หรือการบันทึกข้อมูล. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC โดยระบุจากประเภทการเคลื่อนไหวสำหรับการตรวจนับสินค้าจริง (BWART) เช่น 701 สำหรับยอดสินค้าเพิ่ม หรือ 702 สำหรับยอดสินค้าลด. บันทึก ดึงข้อมูลจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหวสำหรับการปรับยอดจากการตรวจนับสินค้าจริง เช่น 701, 702. ประเภทเหตุการณ์ explicit | |||
| บันทึกการรับสินค้าเข้าคลัง | ระบุการรับล็อตสินค้าเข้าคลังเป็นครั้งแรก โดยทั่วไปเป็นสินค้าจากผู้จำหน่ายหรือจากการผลิต SAP S/4HANA บันทึกเหตุการณ์นี้ไว้อย่างชัดเจนเมื่อสร้างเอกสารวัสดุหลังรับสินค้า. | ||
| เหตุผลที่สำคัญ นี่คือเหตุการณ์เริ่มต้นหลักของวงจรสินค้าคงคลัง การวิเคราะห์เวลาตั้งแต่กิจกรรมนี้ไปจนถึงกิจกรรมอื่น เช่น การจัดเก็บสินค้าเข้าที่ มีความสำคัญต่อการวัดประสิทธิภาพของจุดรับสินค้า. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC โดยระบุจากประเภทการเคลื่อนไหว (BWART) เช่น 101 สำหรับการรับสินค้าตามใบสั่งซื้อ หรือ 103 สำหรับการรับสินค้าเข้าสต็อกที่ถูกระงับการใช้งาน. บันทึก ดึงข้อมูลจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหวสำหรับการรับสินค้าเข้าคลัง. ประเภทเหตุการณ์ explicit | |||
| บันทึกการโอนย้ายเพื่อจัดเก็บสินค้าเข้าที่ | แสดงการเคลื่อนย้ายล็อตสินค้าจากพื้นที่รับสินค้าหรือพื้นที่พัก ไปยังตำแหน่งจัดเก็บหรือช่องเก็บสินค้าปลายทาง โดยบันทึกเป็นเอกสารวัสดุสำหรับการโอนย้ายใน SAP. | ||
| เหตุผลที่สำคัญ ขั้นตอนนี้ทำให้กระบวนการรับสินค้าเข้าคลังเสร็จสมบูรณ์ เวลาที่ใช้ในกิจกรรมนี้เรียกว่าเวลาจัดเก็บสินค้าเข้าที่ และเป็น KPI สำคัญสำหรับวัดประสิทธิภาพคลังสินค้า. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC เป็นรายการโอนย้ายสต็อก ซึ่งมักเป็นการย้ายระหว่างสถานที่จัดเก็บ เช่น ประเภทการเคลื่อนไหว 311 ประเภทการเคลื่อนไหวที่ใช้จริงอาจแตกต่างกันตามโครงสร้างคลังสินค้า. บันทึก ระบุจากเอกสารโอนย้ายใน MATDOC ที่ย้ายสินค้าจากสถานที่จัดเก็บชั่วคราวหรือจุดรับสินค้าไปยังสถานที่จัดเก็บปลายทาง. ประเภทเหตุการณ์ explicit | |||
| ปล่อยสินค้าออกจากสต็อกตรวจสอบคุณภาพ | ระบุว่าล็อตสินค้าผ่านการตรวจสอบคุณภาพและพร้อมใช้งานหรือจัดเก็บเข้าที่แล้ว โดยบันทึกเป็นรายการโอนย้ายสต็อกจากสต็อกตรวจสอบคุณภาพไปยังประเภทสต็อกอื่น เช่น สต็อกที่พร้อมใช้งานโดยไม่มีข้อจำกัด. | ||
| เหตุผลที่สำคัญ เหตุการณ์สำคัญนี้แสดงว่ากระบวนการตรวจสอบคุณภาพเสร็จสิ้นและสินค้าพร้อมใช้งาน หากล่าช้าอาจส่งผลกระทบต่อเนื่องอย่างมากต่อการผลิตหรือการจัดส่ง. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC เป็นรายการโอนย้ายสต็อก โดยทั่วไปจะระบุจากประเภทการเคลื่อนไหว (BWART) 321 ซึ่งย้ายสินค้าจาก 'ตรวจสอบคุณภาพ' ไปยัง 'พร้อมใช้งานโดยไม่มีข้อจำกัด'. บันทึก ดึงข้อมูลจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหว 321. ประเภทเหตุการณ์ explicit | |||
| บันทึกการโอนย้ายสินค้าภายใน | บันทึกการย้ายล็อตสินค้าระหว่างสถานที่จัดเก็บหรือช่องเก็บสินค้าต่างๆ ภายในโรงงานเดียวกัน ธุรกรรมนี้สร้างเอกสารวัสดุไว้อย่างชัดเจน. | ||
| เหตุผลที่สำคัญ การติดตามการโอนย้ายภายในช่วยวิเคราะห์ประสิทธิภาพการปฏิบัติงานในคลังสินค้า ระบุการเคลื่อนย้ายที่ไม่จำเป็น และวัดระยะเวลาการเติมสินค้าในแต่ละพื้นที่. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC โดยทั่วไปจะระบุจากประเภทการเคลื่อนไหว (BWART) 311 สำหรับการโอนย้ายระหว่างสถานที่จัดเก็บ. บันทึก ดึงข้อมูลจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหวสำหรับการย้ายสินค้าภายใน เช่น 311. ประเภทเหตุการณ์ explicit | |||
| บันทึกสินค้าเข้าสต็อกตรวจสอบคุณภาพ | แสดงการย้ายล็อตสินค้าที่รับเข้ามาไปยังสถานะพักรอตรวจสอบคุณภาพ ทำให้ยังนำสินค้าไปใช้ไม่ได้จนกว่าจะผ่านการตรวจสอบ รายการนี้เป็นธุรกรรมที่บันทึกไว้อย่างชัดเจนใน SAP โดยเปลี่ยนประเภทสต็อกของล็อตสินค้า. | ||
| เหตุผลที่สำคัญ กิจกรรมนี้เป็นจุดเริ่มต้นของกระบวนการตรวจสอบคุณภาพ ระยะเวลาตั้งแต่ขั้นตอนนี้จนถึงการปล่อยสินค้าออกจากสถานะตรวจสอบคุณภาพเป็นตัวชี้วัดสำคัญที่ช่วยให้เข้าใจความล่าช้าจากการตรวจสอบคุณภาพ. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC อาจเป็นการเคลื่อนไหวรับสินค้า เช่น 101 โดยกำหนดประเภทสต็อก (INSMK) เป็น 'Q' (ตรวจสอบคุณภาพ) หรือเป็นการโอนย้ายสต็อก เช่น 322. บันทึก ระบุจากเอกสารวัสดุใน MATDOC ที่กำหนดให้สินค้าอยู่ในประเภทสต็อก 'ตรวจสอบคุณภาพ'. ประเภทเหตุการณ์ explicit | |||
| เปลี่ยนสถานะล็อตสินค้า | แสดงการเปลี่ยนแปลงข้อมูลหลักของล็อตสินค้า เช่น เปลี่ยนสถานะจาก 'พร้อมใช้งานโดยไม่มีข้อจำกัด' เป็น 'จำกัดการใช้งาน' การเปลี่ยนแปลงนี้ไม่ใช่การเคลื่อนย้ายวัสดุ แต่เป็นการแก้ไขข้อมูลหลักที่มีการบันทึกไว้. | ||
| เหตุผลที่สำคัญ การเปลี่ยนสถานะล็อตสินค้าส่งผลโดยตรงต่อการนำไปใช้ในการขายหรือการผลิต การวิเคราะห์การเปลี่ยนแปลงเหล่านี้ช่วยให้พบปัญหาสินค้าใกล้หมดอายุหรือการควบคุมคุณภาพ โดยไม่ต้องอาศัยข้อมูลการเคลื่อนย้ายสินค้า. แหล่งข้อมูล อนุมานจากบันทึกการเปลี่ยนแปลงของตารางข้อมูลหลักล็อตสินค้า (MCH1, MCHA) โดยตาราง CDHDR และ CDPOS ติดตามการเปลี่ยนแปลงฟิลด์สถานะล็อตสินค้า (MCH1-ZUSTD). บันทึก อนุมานจากเอกสารการเปลี่ยนแปลงใน CDHDR/CDPOS สำหรับฟิลด์สถานะในข้อมูลหลักล็อตสินค้า (MCH1-ZUSTD). ประเภทเหตุการณ์ inferred | |||
| เปลี่ยนสถานะสินค้าเป็นถูกระงับการใช้งาน | แสดงการเปลี่ยนสถานะของล็อตสินค้า ทำให้ไม่สามารถตัดจ่ายได้ ซึ่งมักเกิดจากสินค้าเสียหาย การขอระงับการใช้งาน หรือสาเหตุอื่น รายการนี้เป็นการโอนย้ายสต็อกที่บันทึกไว้อย่างชัดเจนใน SAP. | ||
| เหตุผลที่สำคัญ แสดงการหยุดชะงักของความพร้อมใช้งานของสินค้า หากมีการระงับการใช้งานบ่อยครั้ง อาจบ่งชี้ถึงปัญหาในการจัดการ สภาพการจัดเก็บ หรือคุณภาพจากผู้จำหน่าย. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC เป็นรายการโอนย้ายสต็อก โดยทั่วไปใช้ประเภทการเคลื่อนไหว (BWART) 344 เพื่อย้ายสินค้าจาก 'ถูกระงับการใช้งาน' ไปยัง 'พร้อมใช้งานโดยไม่มีข้อจำกัด' และใช้ 343 เพื่อย้ายจาก 'พร้อมใช้งานโดยไม่มีข้อจำกัด' ไปยัง 'ถูกระงับการใช้งาน' กิจกรรมนี้ใช้รหัส 343. บันทึก ระบุจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหว 343. ประเภทเหตุการณ์ explicit | |||
| เปลี่ยนสถานะสินค้าเป็นพร้อมใช้งานโดยไม่มีข้อจำกัด | แสดงการเปลี่ยนสถานะของล็อตสินค้า โดยปล่อยสินค้าออกจากสถานะถูกระงับการใช้งานหรือพักรอตรวจสอบคุณภาพ ทำให้พร้อมนำไปใช้ รายการนี้บันทึกเป็นการโอนย้ายสต็อกไว้อย่างชัดเจน. | ||
| เหตุผลที่สำคัญ กิจกรรมนี้แสดงว่าการระงับสินค้าได้รับการแก้ไขแล้ว คุณสามารถวิเคราะห์ระยะเวลาที่สินค้าอยู่ในสถานะถูกระงับการใช้งาน เพื่อปรับปรุงกระบวนการแก้ไขปัญหา. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC เป็นรายการโอนย้ายสต็อก ประเภทการเคลื่อนไหว (BWART) 344 ใช้ย้ายสินค้าจาก 'ถูกระงับการใช้งาน' ไปยัง 'พร้อมใช้งานโดยไม่มีข้อจำกัด'. บันทึก ระบุจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหว 344. ประเภทเหตุการณ์ explicit | |||
| รับคืนสินค้าจากการขาย | บันทึกการส่งล็อตสินค้าที่เคยตัดจ่ายไปแล้วกลับจากลูกค้าเข้าคลัง ธุรกรรมนี้บันทึกไว้อย่างชัดเจนและเพิ่มจำนวนสินค้าในสต็อก. | ||
| เหตุผลที่สำคัญ การติดตามสินค้าคืนมีความสำคัญต่อการทำความเข้าใจปัญหาคุณภาพสินค้าและความไม่พอใจของลูกค้า ขั้นตอนจัดการและพิจารณาสินค้าคืนอาจเป็นสาเหตุหนึ่งที่ทำให้การทำงานไม่มีประสิทธิภาพ. แหล่งข้อมูล บันทึกไว้ในตาราง MATDOC โดยระบุจากประเภทการเคลื่อนไหว (BWART) สำหรับการรับคืนจากการขาย เช่น 651 (เข้าสต็อกพร้อมใช้งานโดยไม่มีข้อจำกัด) หรือ 653 (เข้าสต็อกตรวจสอบคุณภาพ). บันทึก ดึงข้อมูลจากเอกสารวัสดุใน MATDOC ที่มีประเภทการเคลื่อนไหวสำหรับการรับคืนจากการขาย เช่น 651, 653. ประเภทเหตุการณ์ explicit | |||
| เริ่มหยิบสินค้า | ระบุจุดเริ่มต้นของกระบวนการจัดส่งคำสั่งซื้อ โดยระบบสร้างงานคลังสินค้าเพื่อหยิบสินค้าล็อตหนึ่งจากช่องจัดเก็บ โดยทั่วไปบันทึกเหตุการณ์นี้เมื่อมีการสร้าง Transfer Order หรือ Warehouse Task | ||
| เหตุผลที่สำคัญ กิจกรรมนี้เป็นจุดเริ่มต้นของกระบวนการหยิบสินค้า การวิเคราะห์เวลาตั้งแต่เหตุการณ์นี้จนหยิบสินค้าเสร็จช่วยวัดประสิทธิภาพของพนักงานคลังสินค้าและระบุความล่าช้า. แหล่งข้อมูล โดยทั่วไปข้อมูลนี้ไม่มีอยู่ใน MATDOC หากระบบใช้ Warehouse Management (WM/EWM) สามารถอนุมานเวลาได้จากเวลาที่สร้าง Transfer Order (ตาราง LTAK) หรือ Warehouse Task บันทึก อนุมานจากระเบียนการสร้าง Transfer Order (ใน WM) หรือ Warehouse Task (ใน EWM) ที่เชื่อมโยงกับล็อตวัสดุ ประเภทเหตุการณ์ inferred | |||
คู่มือการดึงข้อมูล
ขั้นตอน
- ตั้งค่าการเข้าถึงระบบ: ตรวจสอบว่าคุณมีผู้ใช้ที่ได้รับสิทธิ์เพียงพอสำหรับเรียกดู Core Data Services (CDS) views ในระบบ SAP S/4HANA โดยทั่วไปผู้ดูแลระบบจะเป็นผู้กำหนดสิทธิ์ให้
- เลือก SQL client: เลือกเครื่องมือ SQL client ที่เชื่อมต่อกับฐานข้อมูล SAP HANA ได้ ตัวเลือกที่ใช้กันทั่วไป ได้แก่ SAP HANA Studio, SAP HANA Database Explorer และเครื่องมือจากผู้ให้บริการรายอื่น เช่น DBeaver
- ตั้งค่าการเชื่อมต่อฐานข้อมูล: สร้างการเชื่อมต่อฐานข้อมูลใหม่ใน SQL client โดยใช้ชื่อโฮสต์ของฐานข้อมูล HANA หมายเลขพอร์ต (โดยทั่วไปคือ 3<instance_number>15) และข้อมูลรับรองผู้ใช้ฐานข้อมูล
- เตรียม SQL query: คัดลอก SQL query ฉบับเต็มจากส่วน 'query' ในเอกสารนี้ไปยังตัวแก้ไขของ SQL client
- กำหนดพารามิเตอร์ query: ค้นหาค่าตัวแทนใน query แล้วแทนที่
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'ด้วยช่วงวันที่ที่ต้องการ เช่นBETWEEN '20230101' AND '20230630'จากนั้นปรับตัวกรองเฉพาะบริษัทหรือ Plant เช่นMaterialDocumentItem.Plant IN ('Plant1', 'Plant2')ให้ตรงกับโครงสร้างองค์กร - เรียกใช้ query: เรียกใช้ SQL query ที่ปรับแล้วกับฐานข้อมูล S/4HANA ระยะเวลาประมวลผลขึ้นอยู่กับช่วงวันที่และปริมาณข้อมูลสินค้าคงคลังในระบบ
- ตรวจสอบข้อมูล: เมื่อ query ทำงานเสร็จ ให้ตรวจสอบผลลัพธ์ใน SQL client ว่าถูกต้องและครบถ้วน ตรวจดูว่ามีกิจกรรมประเภทต่างๆ และมีข้อมูลแอตทริบิวต์สำคัญครบหรือไม่
- ส่งออกบันทึกเหตุการณ์: ส่งออกผลลัพธ์ทั้งหมดจาก SQL client เป็นไฟล์ CSV และตั้งค่าการส่งออกเป็น UTF-8 เพื่อป้องกันปัญหาเกี่ยวกับอักขระ
- เตรียมไฟล์อัปโหลด: ตั้งชื่อคอลัมน์ในไฟล์ CSV ให้ตรงกับชื่อ alias ใน query ทุกประการ เช่น
InventoryBatchLot,ActivityName,EventTimeเป็นต้น จากนั้นไฟล์ก็พร้อมอัปโหลดไปยังเครื่องมือ process mining.
การกำหนดค่า
- สิทธิ์การเข้าถึง: ผู้ใช้ที่เรียกใช้ query ต้องมีสิทธิ์
SELECTใน CDS views ต่อไปนี้:I_MaterialDocumentItem,I_BatchChangeDocumentและI_WarehouseTaskรวมถึงต้องเข้าถึงสคีมาฐานข้อมูลที่มี views เหล่านี้ - การกรองช่วงวันที่: ต้องกรองช่วงวันที่ในฟิลด์
PostingDate,ChangeDocumentCreationDateหรือWarehouseTaskCreationDateช่วงเวลาที่มักใช้วิเคราะห์คือ 3 ถึง 12 เดือน การ query ข้อมูลหลายปีอาจทำให้ประสิทธิภาพลดลงอย่างมาก - ตัวกรองหน่วยงาน: เพื่อให้ทำงานได้เร็วขึ้นและวิเคราะห์ได้ตรงจุด ให้เพิ่มเงื่อนไข
WHEREเพื่อกรองตามPlantหรือ `CompanyCode วิธีนี้ช่วยลดปริมาณข้อมูลและจำกัดการดึงข้อมูลไว้เฉพาะส่วนที่เกี่ยวข้องกับธุรกิจ - ปริมาณข้อมูล: ระบบจัดการสินค้าคงคลังสร้างข้อมูลจำนวนมาก ช่วงวันที่ที่กว้างอาจได้ข้อมูลหลายล้านแถว ซึ่งอาจกระทบทั้งระบบต้นทางระหว่างดึงข้อมูลและประสิทธิภาพของเครื่องมือที่ใช้
- Extended Warehouse Management (EWM): กิจกรรม “เริ่มหยิบสินค้า” อาศัย CDS view
I_WarehouseTaskซึ่งมีข้อมูลเมื่อใช้ SAP Extended Warehouse Management เท่านั้น หากองค์กรใช้โมดูล Warehouse Management (WM) รุ่นเก่า หรือใช้เฉพาะ Inventory Management (IM) ระบบจะไม่ดึงกิจกรรมนี้.
ตัวอย่างคำค้น sql
SELECT
mat_doc.Batch AS "InventoryBatchLot",
CASE
WHEN mat_doc.MovementType = '101' AND mat_doc.InventoryStockType = '2' THEN 'Stock Posted to Quality Inspection'
WHEN mat_doc.MovementType = '101' THEN 'Goods Receipt Posted'
WHEN mat_doc.MovementType = '321' THEN 'Quality Inspection Stock Released'
WHEN mat_doc.MovementType = '311' THEN 'Internal Stock Transfer Posted'
WHEN mat_doc.MovementType = '344' THEN 'Stock Status Changed to Blocked'
WHEN mat_doc.MovementType IN ('343', '322') THEN 'Stock Status Changed to Unrestricted'
WHEN mat_doc.MovementType IN ('701', '702') THEN 'Inventory Adjustment Posted'
WHEN mat_doc.MovementType = '601' THEN 'Goods Issue for Delivery Posted'
WHEN mat_doc.MovementType = '261' THEN 'Goods Issue for Production Posted'
WHEN mat_doc.MovementType IN ('651', '653') THEN 'Sales Return Received'
WHEN mat_doc.MovementType = '551' THEN 'Stock Scrapped'
WHEN mat_doc.MovementType = '313' THEN 'Put-Away Transfer Posted' -- Example for two-step transfers
ELSE 'Unknown Material Movement'
END AS "ActivityName",
TO_TIMESTAMP(mat_doc.PostingDate || LPAD(mat_doc.CreationTime, 6, '0'), 'YYYYMMDDHH24MISS') AS "EventTime",
mat_doc.Material AS "MaterialNumber",
mat_doc.CreatedByUser AS "UserName",
mat_doc.MovementType AS "MovementType",
mat_doc.Plant AS "Plant",
mat_doc.StorageLocation AS "StorageLocation",
mat_doc.QuantityInEntryUnit AS "Quantity",
mat_doc.ReasonForMovement AS "MovementReasonCode"
FROM
I_MaterialDocumentItem AS mat_doc
WHERE
mat_doc.Batch IS NOT NULL AND mat_doc.Batch <> ''
AND mat_doc.PostingDate BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
-- AND mat_doc.Plant IN ('Plant1', 'Plant2') -- Placeholder: Add filters for relevant plants
UNION ALL
SELECT
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 3) AS "InventoryBatchLot",
'Batch Status Changed' AS "ActivityName",
change_doc.ChangeDocumentCreationDateTime AS "EventTime",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 1) AS "MaterialNumber",
change_doc.ChangedByUser AS "UserName",
NULL AS "MovementType",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 2) AS "Plant",
NULL AS "StorageLocation",
NULL AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_BatchChangeDocument AS change_doc
WHERE
change_doc.ChangeDocumentTable = 'MCHA' AND change_doc.ChangeDocumentTableFieldName = 'ZUSTD'
AND TO_VARCHAR(change_doc.ChangeDocumentCreationDate) BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
UNION ALL
SELECT
wh_task.Batch AS "InventoryBatchLot",
'Picking Initiated' AS "ActivityName",
wh_task.WarehouseTaskCreationDateTime AS "EventTime",
wh_task.Product AS "MaterialNumber",
wh_task.CreatedByUser AS "UserName",
NULL AS "MovementType",
wh_task.Plant AS "Plant",
wh_task.SourceStorageLocation AS "StorageLocation",
wh_task.TargetQuantity AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_WarehouseTask AS wh_task
WHERE
wh_task.Batch IS NOT NULL AND wh_task.Batch <> ''
AND wh_task.WarehouseProcessType IN ('P210', 'P220') -- Placeholder: Adjust process types based on your picking configuration
AND TO_VARCHAR(wh_task.WarehouseTaskCreationDate) BETWEEN '20230101' AND '20231231'; -- Placeholder: Set your date range ขั้นตอน
- ยืนยันว่าได้รับอนุมัติให้ใช้ SAP HANA SQL โดยตรง และผู้ใช้สำหรับดึงข้อมูลมีสิทธิ์อ่าน MATDOC และตารางข้อมูลหลักของล็อตที่ระบบต้องใช้ ตรวจสอบชื่อเจ้าของสคีมาจริง แล้วแทนที่ [Your SAP HANA schema] ด้วยชื่อสคีมาที่ได้รับอนุมัติ
- ตรวจสอบฟิลด์ที่มีใน MATDOC และตารางล็อตของ SAP S/4HANA รุ่นเป้าหมาย query ด้านล่างใช้ฟิลด์ MATDOC และ MCHA ที่มักมีให้ใช้ แต่ฟิลด์และชื่ออาจแตกต่างกันตามรุ่น วิธีติดตั้ง และขอบเขตที่เปิดใช้งาน ให้แทนที่ฟิลด์ที่ระบุว่า [Configure based on your system] ก่อนเรียกใช้
- กำหนดช่วงเวลาที่ต้องการดึงข้อมูล โดยแทนที่ [Start timestamp] และ [End timestamp] ด้วยค่าเวลารูปแบบ ISO เริ่มดึงข้อมูล 3 ถึง 6 เดือนก่อน จากนั้นค่อยขยายช่วงหลังตรวจสอบปริมาณข้อมูลและประสิทธิภาพแล้ว
- เรียกใช้ query ใน SQL client ที่ได้รับอนุมัติ, SAP HANA Database Explorer หรือเครื่องมือฐานข้อมูลอื่นที่ได้รับอนุญาต จำกัดผลลัพธ์ตามรหัสบริษัท Plant ประเภทเอกสาร หรือประเภทการเคลื่อนไหวที่ต้องการ โดยแทนที่ค่าตัวแทนของตัวกรองที่เกี่ยวข้อง
- ตรวจสอบการจับคู่ประเภทการเคลื่อนไหวใน activity CTE ความหมายของประเภทการเคลื่อนไหวขึ้นอยู่กับการตั้งค่าระบบและธุรกิจ ให้แทนที่รายการประเภทการเคลื่อนไหวตัวอย่างด้วยค่าที่กำหนดไว้ในระบบเป้าหมายสำหรับการรับสินค้า การตรวจสอบคุณภาพ การอนุมัติ การจัดเก็บ การโอนภายใน สต็อกที่ถูกระงับการใช้งาน สต็อกที่พร้อมใช้งาน การปรับปรุงสินค้าคงคลัง การหยิบสินค้า การเบิกจ่ายเพื่อจัดส่ง การเบิกจ่ายเพื่อการผลิต การคืนสินค้าจากการขาย และการตัดจำหน่าย
- ตรวจสอบว่าแต่ละแถวผลลัพธ์มี InventoryBatchLot, ActivityName และ EventTime ยืนยันว่ารหัสล็อตมีความคงที่เพียงพอสำหรับใช้เป็นรหัสเคสของ ProcessMind หากต้องแยกล็อตที่มีค่าเหมือนกันในหน่วยงานต่างๆ ตามวัสดุ Plant หรือตำแหน่งจัดเก็บ ให้ใช้รหัสเคสแบบผสมที่กำหนดไว้ แทนการใช้ค่าล็อตเพียงอย่างเดียว
- ตรวจสอบลำดับเหตุการณ์ แถวซ้ำ เอกสารกลับรายการ เอกสารที่ยกเลิก และการจัดการเขตเวลา MATDOC บันทึกการลงรายการเอกสาร ดังนั้นรายการกลับรายการและยกเลิกอาจปรากฏเป็นเหตุการณ์แยก เว้นแต่จะระบุให้ตัดออกหรือจับคู่ไว้โดยชัดเจน
- ส่งออกผล query เป็นไฟล์แบน โดยมีหนึ่งแถวต่อเหตุการณ์และคอลัมน์ InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity และ MovementReasonCode ใช้รูปแบบเวลาประทับ ISO 8601 ให้สม่ำเสมอ และรักษาเลขศูนย์นำหน้าของค่าวัสดุ ล็อต Plant และตำแหน่งจัดเก็บ
- อัปโหลดบันทึกเหตุการณ์ไปยัง ProcessMind แล้วกำหนด InventoryBatchLot เป็นรหัสเคส, ActivityName เป็นกิจกรรม และ EventTime เป็นเวลาประทับของเหตุการณ์ อย่าคาดหวังให้ ProcessMind อนุมานกิจกรรม รวมระเบียน หรือสร้างเหตุการณ์ที่ขาดหายไปเอง.
การกำหนดค่า
- วิธีดึงข้อมูล: ใช้ SQL query กับข้อมูลสินค้าคงคลังและล็อตใน SAP HANA โดย query อ่าน MATDOC และเชื่อมกับข้อมูลหลักของล็อตจาก MCHA เพิ่ม MCH1 หรือตารางล็อตอื่นหลังจากยืนยันฟิลด์ที่เกี่ยวข้องและระดับล็อตในระบบเป้าหมายแล้ว
- ช่วงวันที่: เริ่มจาก 3 ถึง 6 เดือน โดยกำหนด EventTime จากวันที่และเวลาลงรายการเอกสารวัสดุที่มีใน MATDOC สำหรับการโหลดข้อมูลแบบเพิ่มทีละส่วน ให้กำหนดช่วงเวลาซ้อนทับเพื่อเก็บรายการที่ลงย้อนหลัง แล้วลบข้อมูลซ้ำโดยใช้รหัสเอกสารและรายการที่ตั้งค่าไว้
- ตัวกรองที่จำเป็น: กำหนดรหัสบริษัท Plant ประเภทเอกสารวัสดุ ประเภทการเคลื่อนไหว การมีค่าล็อต และวันที่ลงรายการให้ตรงกับขอบเขตกระบวนการ ต้องยืนยันฟิลด์รหัสบริษัทและประเภทเอกสารของรุ่นที่ติดตั้งก่อนเพิ่มลงใน query
- การจับคู่กิจกรรม: ความหมายของประเภทการเคลื่อนไหวขึ้นอยู่กับการตั้งค่า ให้ใช้ตารางจับคู่ที่ได้รับอนุมัติ หรือแทนที่รายการประเภทการเคลื่อนไหวใน query ด้วยค่าที่ธุรกิจใช้ อย่าถือว่ารายการตัวอย่างเป็นความหมายมาตรฐานของ SAP ที่ใช้ได้กับทุกระบบ
- ขอบเขตล็อต: query ตัดแถวที่ไม่มีค่าล็อตออก เพราะใช้ InventoryBatchLot เป็นรหัสเคส หากต้องดึงค่าล็อตจากแหล่งอื่น ให้กำหนดแหล่งข้อมูลนั้นอย่างชัดเจนก่อนดึงข้อมูล
- ระดับรายละเอียดเหตุการณ์: ระบบส่งออกแต่ละรายการ MATDOC ที่ตรงเงื่อนไขเป็นหนึ่งแถวเหตุการณ์ query ไม่ได้อนุมานการหยิบสินค้า การตัดสินผลตรวจสอบคุณภาพ การเปลี่ยนสถานะล็อต หรือกิจกรรมอื่นจากระเบียนภายหลัง
- การเปลี่ยนแปลงข้อมูลหลักของล็อต: MATDOC เพียงอย่างเดียวไม่สามารถแสดงการเปลี่ยนสถานะล็อตได้อย่างน่าเชื่อถือ ให้กำหนดแหล่งข้อมูลเอกสารการเปลี่ยนแปลงหรือประวัติลอตสำหรับกิจกรรม Batch Status Changed สาขาตัวอย่างใน query ต้องเชื่อมกับแหล่งข้อมูลที่ตรวจสอบแล้วก่อนเรียกใช้
- การหยิบสินค้า: โดยทั่วไปข้อมูลการเริ่มหยิบสินค้าอยู่ในข้อมูลการปฏิบัติงานคลังสินค้า ไม่ใช่รายการลงบัญชีใน MATDOC ให้กำหนดแหล่งข้อมูล warehouse task หรือ transfer order ที่ตรวจสอบแล้ว และแทนที่สาขาตัวอย่างก่อนเรียกใช้
- ประสิทธิภาพ: กรองตามเวลาประทับหรือวันที่ลงรายการ Plant รหัสบริษัท และประเภทการเคลื่อนไหวที่เกี่ยวข้อง เลือกเฉพาะคอลัมน์ที่จำเป็น หลีกเลี่ยงการสแกนข้อมูลย้อนหลังทั้งหมด และเรียกใช้ในช่วงเวลาที่ได้รับอนุมัติ แนะนำให้แบ่งพาร์ทิชันหรือดึงข้อมูลแบบเพิ่มทีละส่วนเมื่อ MATDOC มีข้อมูลจำนวนมาก
- สิทธิ์และข้อกำหนดเบื้องต้น: ขออนุมัติการเชื่อมต่อฐานข้อมูล การเข้าถึงสคีมา สิทธิ์อ่านข้อมูล การเข้าถึงข้อมูลสินค้าคงคลังใน SAP S/4HANA และการเข้าถึงแหล่งข้อมูลการปฏิบัติงานคลังสินค้าหรือประวัติการเปลี่ยนแปลงที่ใช้กับสองกิจกรรมซึ่งไม่มีใน MATDOC ตรวจสอบว่าการเข้าถึงฐานข้อมูลโดยตรงเป็นไปตามแนวทางการดูแลระบบและนโยบายการสนับสนุน SAP ขององค์กร
- เขตเวลา: ตรวจสอบเขตเวลาของฐานข้อมูลและแอปพลิเคชัน แล้วแปลง EventTime ให้เป็นรูปแบบเดียวกันก่อนอัปโหลดไปยัง ProcessMind
- การคุ้มครองข้อมูล: ปฏิบัติตามมาตรการขององค์กรสำหรับรหัสผู้ใช้ ข้อมูลวัสดุ ข้อมูลที่เกี่ยวข้องกับลูกค้า และข้อมูลรับรองฐานข้อมูล อย่าใส่ข้อมูลรับรองไว้ในข้อความ query.
ตัวอย่างคำค้น sql
WITH
params AS (
SELECT
TO_TIMESTAMP('[Start timestamp]') AS start_ts,
TO_TIMESTAMP('[End timestamp]') AS end_ts
FROM DUMMY
),
movement_map AS (
SELECT '101' AS movement_type, 'Goods Receipt Posted' AS activity_name FROM DUMMY
UNION ALL SELECT '105', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '107', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '109', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '321', 'Stock Posted to Quality Inspection' FROM DUMMY
UNION ALL SELECT '322', 'Quality Inspection Stock Released' FROM DUMMY
UNION ALL SELECT '343', 'Stock Status Changed to Unrestricted' FROM DUMMY
UNION ALL SELECT '344', 'Stock Status Changed to Blocked' FROM DUMMY
UNION ALL SELECT '311', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '301', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '311', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '701', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '702', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '703', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '704', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '705', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '706', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '601', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '602', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '261', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '262', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '651', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '653', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '654', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '551', 'Stock Scrapped' FROM DUMMY
UNION ALL SELECT '552', 'Stock Scrapped' FROM DUMMY
),
matdoc_events AS (
SELECT
m.MATNR AS MaterialNumber,
m.CHARG AS InventoryBatchLot,
COALESCE(m.BUDAT_MKPF, m.BUDAT) AS EventTime,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(m.BWART AS NVARCHAR(3)) AS MovementType,
m.WERKS AS Plant,
m.LGORT AS StorageLocation,
m.MENGE AS Quantity,
m.GRUND AS MovementReasonCode,
mm.activity_name AS ActivityName,
m.MBLNR AS MaterialDocumentNumber,
m.MJAHR AS MaterialDocumentYear,
m.ZEILE AS MaterialDocumentItem
FROM [Your SAP HANA schema].MATDOC m
INNER JOIN movement_map mm
ON CAST(m.BWART AS NVARCHAR(3)) = mm.movement_type
CROSS JOIN params p
WHERE m.CHARG IS NOT NULL
AND TRIM(m.CHARG) <> ''
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) >= p.start_ts
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) < p.end_ts
AND m.WERKS IN ([Configure based on your system])
),
batch_enriched_events AS (
SELECT
e.InventoryBatchLot,
e.ActivityName,
e.EventTime,
e.MaterialNumber,
e.UserName,
e.MovementType,
e.Plant,
e.StorageLocation,
e.Quantity,
e.MovementReasonCode,
e.MaterialDocumentNumber,
e.MaterialDocumentYear,
e.MaterialDocumentItem,
c.CUOBJ_BM AS BatchObjectNumber
FROM matdoc_events e
LEFT JOIN [Your SAP HANA schema].MCHA c
ON c.MATNR = e.MaterialNumber
AND c.CHARG = e.InventoryBatchLot
AND c.WERKS = e.Plant
),
verified_batch_status_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Batch Status Changed' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
verified_picking_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
all_events AS (
SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM batch_enriched_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_batch_status_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_picking_events
)
SELECT
InventoryBatchLot,
ActivityName,
EventTime,
MaterialNumber,
UserName,
MovementType,
Plant,
StorageLocation,
Quantity,
MovementReasonCode
FROM all_events
WHERE InventoryBatchLot IS NOT NULL
AND EventTime IS NOT NULL
ORDER BY InventoryBatchLot, EventTime, MaterialDocumentYear, MaterialDocumentNumber, MaterialDocumentItem, ActivityName; ขั้นตอน
- เปิด ABAP Editor: เข้าสู่ระบบ SAP S/4HANA ของคุณ แล้วเปิด ABAP Editor ด้วยรหัสธุรกรรม
SE38 - สร้างโปรแกรมใหม่: ป้อนชื่อโปรแกรมในช่อง 'Program' เช่น
Z_PM_INVENTORY_EXTRACTแล้วคลิกปุ่ม 'Create' ระบุชื่อเรื่องที่สื่อความหมาย ตั้งค่า 'Type' เป็น 'Executable Program' แล้วบันทึกลงในแพ็กเกจ - กำหนดพารามิเตอร์โปรแกรม: ในตัวแก้ไขโปรแกรม ให้กำหนดหน้าจอการเลือกซึ่งจะใช้เป็นส่วนติดต่อสำหรับดึงข้อมูล ผู้ใช้จะระบุพารามิเตอร์ เช่น ช่วงวันที่และโรงงานที่จะดึงข้อมูลได้
- เขียนตรรกะการดึงข้อมูล: คัดลอกโค้ด ABAP ทั้งหมดจากส่วน 'Query' แล้ววางใน ABAP Editor โค้ดนี้ออกแบบมาเพื่อเลือกข้อมูลของกิจกรรมสินค้าคงคลังทั้ง 14 รายการที่จำเป็นจากตาราง SAP ต่างๆ
- ทำความเข้าใจตรรกะหลัก: โปรแกรมจะเลือกข้อมูลของแต่ละกิจกรรมสินค้าคงคลังจากตารางต้นทาง เช่น
MKPFและMSEGสำหรับการเคลื่อนไหวของวัสดุ หรือCDHDRและCDPOSสำหรับการเปลี่ยนแปลงข้อมูลหลัก จากนั้นจะรวมผลการเลือกแต่ละรายการด้วยUNION ALLไว้ในตารางภายในเดียว ซึ่งใช้แทนบันทึกเหตุการณ์ - ตั้งค่าการส่งออกไฟล์: โค้ดส่วนท้ายจะเขียนข้อมูลที่รวมไว้จากตารางภายในลงในไฟล์ โดยใช้คำสั่ง
OPEN DATASETเพื่อสร้างไฟล์บนแอปพลิเคชันเซิร์ฟเวอร์ SAP คุณต้องระบุพาธเซิร์ฟเวอร์ที่ถูกต้อง ซึ่งผู้ใช้ระบบ SAP มีสิทธิ์เขียนไฟล์ - เรียกใช้โปรแกรม: บันทึกและเปิดใช้งานโปรแกรม ABAP (Ctrl+F3) จากนั้นกด F8 เพื่อเรียกใช้ ในหน้าจอการเลือก ให้ระบุช่วงวันที่และตัวกรองอื่นๆ ที่เกี่ยวข้อง เช่น โรงงานหรือรหัสบริษัท
- เรียกใช้เป็นงานเบื้องหลัง: หากมีข้อมูลจำนวนมาก ควรเรียกใช้โปรแกรมเป็นงานเบื้องหลังเพื่อป้องกันเซสชันหมดเวลา จากหน้าจอเรียกใช้ (F8) ไปที่เมนู
Program -> Execute in Backgroundแล้วกำหนดเวลาให้ทำงานนอกช่วงเวลาที่มีการใช้งานสูง - ดาวน์โหลดไฟล์ผลลัพธ์: เมื่องานเสร็จแล้ว ให้ค้นหาไฟล์ผลลัพธ์บนแอปพลิเคชันเซิร์ฟเวอร์ SAP ใช้รหัสธุรกรรม
AL11เพื่อเรียกดูไดเรกทอรีบนเซิร์ฟเวอร์และค้นหาไฟล์ จากนั้นใช้ธุรกรรมCG3Yเพื่อดาวน์โหลดไฟล์จากแอปพลิเคชันเซิร์ฟเวอร์มายังคอมพิวเตอร์ของคุณ - เตรียมอัปโหลด: เปิดไฟล์ที่ดาวน์โหลดด้วยโปรแกรมแก้ไขข้อความหรือโปรแกรมตารางคำนวณ ตรวจสอบว่าไฟล์อยู่ในรูปแบบ CSV มีแถวหัวตาราง ใช้เครื่องหมายจุลภาคคั่นข้อมูล และใช้เครื่องหมายอัญประกาศคู่ครอบข้อความ ตรวจสอบชื่อคอลัมน์ให้ตรงตามข้อกำหนดก่อนอัปโหลดไปยังเครื่องมือ process mining.
การกำหนดค่า
- ช่วงวันที่ลงรายการ: นี่คือพารามิเตอร์ที่สำคัญที่สุด แนะนำให้ดึงข้อมูลเป็นชุดที่จัดการได้ เช่น ครั้งละ 3-6 เดือน เพื่อให้ระบบทำงานได้ดีและหลีกเลี่ยงการหมดเวลาของระบบ
- ตัวกรองโรงงาน: ขอแนะนำอย่างยิ่งให้กรองตามโรงงาน (
WERKS) ที่ต้องการอย่างน้อยหนึ่งแห่ง การดึงข้อมูลจากทุกโรงงานพร้อมกันอาจใช้ทรัพยากรสูงมาก - ตัวกรองรหัสบริษัท: คุณสามารถเพิ่มตัวกรองรหัสบริษัท (
BUKRS) ได้ หากองค์กรของคุณใช้รหัสบริษัทหลายรหัสในระบบเดียวกัน เพื่อจำกัดขอบเขตข้อมูลให้แคบลง - พาธไฟล์บนแอปพลิเคชันเซิร์ฟเวอร์: โปรแกรม ABAP ต้องใช้พาธไดเรกทอรีที่กำหนดไว้ล่วงหน้าและถูกต้องบนแอปพลิเคชันเซิร์ฟเวอร์ SAP ตรวจสอบว่าผู้ใช้ระบบ SAP (
SY-UNAME) มีสิทธิ์ระดับระบบปฏิบัติการในการเขียนไฟล์ลงไดเรกทอรีนี้ - สิทธิ์การใช้งาน: ผู้ใช้ที่เรียกใช้การดึงข้อมูลนี้ต้องมีสิทธิ์ใช้ธุรกรรม
SE38(เพื่อสร้างและเรียกใช้โปรแกรม) สิทธิ์ดูตารางMKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKและLTAPรวมถึงสิทธิ์กำหนดเวลางานเบื้องหลัง (SM36/SM37).
ตัวอย่างคำค้น abap
REPORT Z_PM_INVENTORY_EXTRACT.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_budat FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: s_werks FOR mseg-werks.
PARAMETERS: p_fpath TYPE string DEFAULT '/usr/sap/trans/tmp/inventory_log.csv' OBLIGATORY.
" ====================================================================
" DATA STRUCTURES
" ====================================================================
TYPES: BEGIN OF ty_event_log,
InventoryBatchLot TYPE charg,
ActivityName TYPE string,
EventTime TYPE string,
MaterialNumber TYPE matnr,
UserName TYPE xubname,
MovementType TYPE bwart,
Plant TYPE werks_d,
StorageLocation TYPE lgort_d,
Quantity TYPE menge_d,
MovementReasonCode TYPE grund,
END OF ty_event_log.
DATA: lt_event_log TYPE TABLE OF ty_event_log.
" ====================================================================
" DATA SELECTION
" ====================================================================
START-OF-SELECTION.
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Receipt Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('101', '103', '105', '501', '521', '561')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~shkzg
WHEN 'H' THEN 'Stock Posted to Quality Inspection'
WHEN 'S' THEN 'Quality Inspection Stock Released'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '321' " For QI to Unrestricted
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Put-Away Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '311' AND mseg~shkzg = 'H' " Assume put-away is the credit side
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Internal Stock Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('301', '311', '313', '315')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~bwart
WHEN '343' THEN 'Stock Status Changed to Blocked'
WHEN '344' THEN 'Stock Status Changed to Unrestricted'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('343', '344')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Inventory Adjustment Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('701', '702', '711', '712')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Delivery Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '601'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Production Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '261'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Sales Return Received' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('651', '653')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Stock Scrapped' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '551'
UNION ALL
SELECT
ltap~charg AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CONCAT( ltak~bdatu, ltak~bzeit ) AS EventTime,
ltap~matnr AS MaterialNumber,
ltak~bname AS UserName,
ltak~bwart AS MovementType,
ltap~werks AS Plant,
ltap~lgort AS StorageLocation,
ltap~nista AS Quantity,
'' AS MovementReasonCode
FROM ltap
JOIN ltak ON ltak~tanum = ltap~tanum
WHERE ltak~bdatu IN s_budat
AND ltap~werks IN s_werks
AND ltap~charg IS NOT NULL AND ltap~charg <> ''
UNION ALL
SELECT
SUBSTRING( cdhdr~objectid, 5, 18 ) AS InventoryBatchLot, " Object ID for BATCH is MATNR+WERKS+CHARG
'Batch Status Changed' AS ActivityName,
CONCAT( cdhdr~udate, cdhdr~utime ) AS EventTime,
SUBSTRING( cdhdr~objectid, 1, 4 ) AS MaterialNumber,
cdhdr~username AS UserName,
'' AS MovementType,
'' AS Plant,
'' AS StorageLocation,
0 AS Quantity,
'' AS MovementReasonCode
FROM cdhdr
JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
AND cdpos~objectid = cdhdr~objectid
AND cdpos~changenr = cdhdr~changenr
WHERE cdhdr~udate IN s_budat
AND cdhdr~objectclas = 'BATCH'
AND cdpos~tabname = 'MCH1'
AND cdpos~fname = 'ZUSTD'
INTO TABLE @lt_event_log.
" ====================================================================
" WRITE OUTPUT FILE
" ====================================================================
DATA: lv_string TYPE string.
DATA: lo_conv TYPE REF TO cl_abap_conv_out_ce.
lo_conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'Error opening file.' TYPE 'E'.
RETURN.
ENDIF.
" Write Header
lv_string = 'InventoryBatchLot,ActivityName,EventTime,MaterialNumber,UserName,MovementType,Plant,StorageLocation,Quantity,MovementReasonCode'.
TRANSFER lv_string TO p_fpath.
" Write Data
LOOP AT lt_event_log ASSIGNING FIELD-SYMBOL(<fs_log>).
CONCATENATE
<fs_log>-InventoryBatchLot
<fs_log>-ActivityName
<fs_log>-EventTime
<fs_log>-MaterialNumber
<fs_log>-UserName
<fs_log>-MovementType
<fs_log>-Plant
<fs_log>-StorageLocation
<fs_log>-Quantity
<fs_log>-MovementReasonCode
INTO lv_string
SEPARATED BY ','.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
WRITE: 'Extraction complete. File written to:', p_fpath. พร้อมเริ่มต้นหรือยัง?
ใช้เทมเพลตนี้เตรียมข้อมูลได้อย่างมั่นใจ และค้นหาข้อมูลเชิงลึกที่เป็นประโยชน์เกี่ยวกับการปฏิบัติการด้านสินค้าคงคลัง เริ่มปรับปรุงประสิทธิภาพและลดต้นทุนได้ตั้งแต่วันนี้.
ปรับปรุงการจัดการสินค้าคงคลังใน SAP S/4HANA
ระบุจุดที่ไม่มีประสิทธิภาพ ลดระยะเวลาของกระบวนการลง 30% และประหยัดต้นทุน.
ไม่ต้องใช้บัตรเครดิต • ตั้งค่าได้ในไม่กี่นาที