เทมเพลตข้อมูลการวางแผนการผลิตของคุณ
เทมเพลตข้อมูลการวางแผนการผลิตของคุณ
- แอตทริบิวต์ที่แนะนำให้รวบรวม
- กิจกรรมสำคัญที่ควรติดตาม
- แนวทางนำข้อมูลออกมาใช้
แอตทริบิวต์การวางแผนการผลิต
| ชื่อ | คำอธิบาย | ||
|---|---|---|---|
| ชื่อกิจกรรม ActivityName | ชื่อเหตุการณ์ทางธุรกิจหรือเหตุการณ์ในระบบที่เกิดขึ้น ณ เวลาหนึ่งสำหรับใบสั่งผลิต. | ||
| คำอธิบาย ชื่อกิจกรรมระบุขั้นตอนหรือการเปลี่ยนสถานะในกระบวนการ Production Planning โดยดึงเหตุการณ์เหล่านี้จากบันทึกการเปลี่ยนแปลง การอัปเดตสถานะ และระเบียนธุรกรรมใน SAP ECC PP ซึ่งแสดงหมุดหมายสำคัญ เช่น 'สร้างใบสั่งผลิต' 'ตรวจสอบความพร้อมของวัสดุ' หรือ 'บันทึกรับสินค้าเข้าคลัง'. คุณสมบัตินี้เป็นแกนหลักของแผนผังกระบวนการ ช่วยให้นักวิเคราะห์เห็นลำดับเหตุการณ์ ค้นพบรูปแบบกระบวนการ และระบุคอขวดหรือการทำงานซ้ำ ชื่อกิจกรรมที่ชัดเจนและมีรายละเอียดเหมาะสมเป็นสิ่งสำคัญต่อการสร้างแบบจำลองกระบวนการที่แม่นยำและสะท้อนการปฏิบัติงานจริง. เหตุผลที่สำคัญ คุณสมบัตินี้กำหนดขั้นตอนในแผนผังกระบวนการ ทำให้เห็นภาพ วิเคราะห์ และทำความเข้าใจเวิร์กโฟลว์การผลิตได้. แหล่งข้อมูล สร้างจากแหล่งข้อมูลหลายประเภท รวมถึงการเปลี่ยนสถานะในตาราง JEST/JSTO บันทึกธุรกรรม และเอกสารการเปลี่ยนแปลงใน CDHDR/CDPOS. ตัวอย่าง ปล่อยใบสั่งผลิตบันทึกการเบิกสินค้าบันทึกการยืนยันครั้งสุดท้ายปิดใบสั่งทางเทคนิค | |||
| ใบสั่งผลิต ProductionOrder | รหัสเฉพาะของใบสั่งผลิต ซึ่งใช้เป็นรหัสกรณีหลักสำหรับกระบวนการวางแผนและดำเนินการผลิต. | ||
| คำอธิบาย หมายเลขใบสั่งผลิตเป็นรหัสตัวอักษรและตัวเลขที่ไม่ซ้ำกัน ซึ่งกำหนดให้กับใบสั่งผลิตแต่ละรายการใน SAP ECC PP โดยเป็นออบเจ็กต์หลักที่เชื่อมโยงกิจกรรมทั้งหมด ตั้งแต่การสร้างและวางแผน ไปจนถึงการดำเนินการและปิดบัญชีขั้นสุดท้าย. ใน process mining คุณสมบัตินี้จำเป็นต่อการจัดกลุ่มเหตุการณ์ทั้งหมดที่เป็นของรอบการผลิตเดียวกัน ทำให้วิเคราะห์วงจรชีวิตของใบสั่งผลิตได้ตั้งแต่ต้นจนจบ ทั้งการติดตามความคืบหน้า การวัดรอบเวลา และการค้นหาจุดที่เบี่ยงเบนจากกระบวนการมาตรฐาน การวิเคราะห์แยกตามใบสั่งผลิตช่วยให้เห็นชัดเจนว่าแต่ละคำขอผลิตได้รับการดำเนินการอย่างไร. เหตุผลที่สำคัญ นี่คือรหัสหลักที่เชื่อมโยงเหตุการณ์ทั้งหมดในกระบวนการเข้าด้วยกัน ทำให้สร้างลำดับและวิเคราะห์เส้นทางการผลิตแต่ละรายการได้ตั้งแต่ต้นจนจบ. แหล่งข้อมูล คุณสมบัตินี้อยู่ในตาราง SAP AUFK ฟิลด์ AUFNR. ตัวอย่าง 1000345100034610003471000348 | |||
| เวลาเกิดเหตุการณ์ EventTime | เวลาที่ระบุอย่างแม่นยำว่าเกิดกิจกรรมขึ้นเมื่อใด. | ||
| คำอธิบาย เวลาเกิดเหตุการณ์บันทึกวันที่และเวลาที่ดำเนินกิจกรรมหรือบันทึกสถานะในระบบ ข้อมูลเวลานี้เป็นพื้นฐานของการวิเคราะห์กระบวนการตามเวลา ทั้งการคำนวณรอบเวลา เวลารอ และระยะเวลากระบวนการโดยรวม. การประทับเวลาที่ถูกต้องช่วยจัดลำดับเหตุการณ์และวิเคราะห์ประสิทธิภาพได้แม่นยำ นักวิเคราะห์ใช้ข้อมูลนี้วัดระยะเวลาระหว่างกิจกรรม ค้นหาความล่าช้า และประเมินผลเทียบกับกำหนดการหรือข้อตกลงระดับการให้บริการ สำหรับการวางแผนการผลิต ข้อมูลนี้ช่วยให้เข้าใจว่าแต่ละขั้นตอนของการวางแผนและการดำเนินงานใช้เวลานานเท่าใด. เหตุผลที่สำคัญ คุณสมบัตินี้แสดงลำดับเหตุการณ์ตามเวลา ซึ่งจำเป็นต่อการคำนวณระยะเวลา วิเคราะห์ประสิทธิภาพ และค้นหาคอขวด. แหล่งข้อมูล ได้จากฟิลด์วันที่และเวลาหลายรายการที่เกี่ยวข้องกับธุรกรรมและการเปลี่ยนสถานะ เช่น BUDAT (วันที่ลงรายการ) จากเอกสารวัสดุ หรือเวลาที่เปลี่ยนแปลงจาก CDHDR. ตัวอย่าง 2023-04-15T10:05:30Z2023-04-15T14:22:00Z2023-04-18T08:59:11Z2023-04-20T16:45:00Z | |||
| ระบบต้นทาง SourceSystem | ระบุระบบที่ดึงข้อมูลออกมา. | ||
| คำอธิบาย คุณสมบัตินี้ระบุระบบต้นทางของระเบียน เช่น ชื่อหรือ ID ของอินสแตนซ์ SAP ECC ที่ใช้ ในองค์กรที่มีระบบ ERP หลายระบบ หรือใช้ทั้งแพลตฟอร์มเดิมและแพลตฟอร์มสมัยใหม่ ฟิลด์นี้จำเป็นต่อการติดตามที่มาของข้อมูลและทำความเข้าใจบริบท. การวิเคราะห์สามารถกรองกระบวนการตามระบบต้นทางได้ ซึ่งมีประโยชน์เมื่อต้องการเปรียบเทียบประสิทธิภาพระหว่างระบบ หรือแยกข้อมูลระหว่างโครงการรวมข้อมูลจากหลายระบบ. เหตุผลที่สำคัญ คุณสมบัตินี้ให้บริบทสำคัญเกี่ยวกับที่มาของข้อมูล โดยเฉพาะในสภาพแวดล้อมที่มี SAP หลายอินสแตนซ์หรือระบบที่เชื่อมต่อกัน. แหล่งข้อมูล โดยทั่วไปจะเพิ่มระหว่างการดึงข้อมูล และมักได้มาจาก ID ระบบ SAP (SY-SYSID). ตัวอย่าง ECC_PROD_100S4H_FIN_200ECC_DE | |||
| อัปเดตข้อมูลล่าสุด LastDataUpdate | เวลาที่รีเฟรชหรือดึงข้อมูลของเหตุการณ์นี้ครั้งล่าสุด. | ||
| คำอธิบาย คุณสมบัตินี้บันทึกวันที่และเวลาที่ดึงข้อมูลจากระบบต้นทางเข้าสู่เครื่องมือ process mining ไม่ใช่เหตุการณ์ทางธุรกิจ แต่เป็นเวลาทางเทคนิคที่ใช้จัดการข้อมูล. จุดประสงค์หลักคือยืนยันว่าข้อมูลเป็นปัจจุบัน และช่วยให้ผู้ดูแลระบบกับนักวิเคราะห์ทราบว่าข้อมูลที่กำลังวิเคราะห์เป็นข้อมูลล่าสุดเพียงใด ข้อมูลนี้จำเป็นต่อการตรวจสอบว่าการวิเคราะห์กระบวนการอ้างอิงข้อมูลที่เป็นปัจจุบัน โดยเฉพาะเมื่อติดตามการปฏิบัติงานที่กำลังดำเนินอยู่. เหตุผลที่สำคัญ คุณสมบัตินี้ยืนยันว่าข้อมูลเป็นปัจจุบัน เพื่อให้การวิเคราะห์อ้างอิงข้อมูลล่าสุดที่มี. แหล่งข้อมูล โดยทั่วไปเครื่องมือหรือสคริปต์ ETL จะสร้างและประทับค่านี้ระหว่างการนำเข้าข้อมูล. ตัวอย่าง 2023-10-27T02:00:00Z2023-10-28T02:00:00Z2023-10-29T02:00:00Z | |||
| ปริมาณที่วางแผนไว้ PlannedQuantity | ปริมาณผลิตภัณฑ์ทั้งหมดที่กำหนดให้ผลิตตามใบสั่ง. | ||
| คำอธิบาย ปริมาณที่วางแผนไว้คือผลผลิตเป้าหมายของใบสั่งผลิตที่กำหนดไว้ในขั้นตอนการวางแผน โดยใช้เป็นค่าพื้นฐานสำหรับเปรียบเทียบกับผลผลิตจริง. คุณสมบัตินี้เป็นพื้นฐานของ KPI ที่เกี่ยวกับประสิทธิภาพการผลิตและการทำตามกำหนดการ เช่น 'ส่วนต่างระหว่างปริมาณที่วางแผนไว้กับผลผลิตจริง' ช่วยประเมินความแม่นยำของการวางแผนการผลิตและค้นหาปัญหาเชิงระบบที่ทำให้ผลิตเกินหรือผลิตไม่ถึงเป้าหมาย การวิเคราะห์ค่านี้ช่วยให้เข้าใจว่าการดำเนินงานผลิตสอดคล้องกับแผนตั้งต้นมากน้อยเพียงใด. เหตุผลที่สำคัญ คุณสมบัตินี้เป็นค่าพื้นฐานสำหรับวัดส่วนต่างของผลผลิตและประเมินความแม่นยำในการวางแผน. แหล่งข้อมูล ค่านี้อยู่ในตาราง SAP AFKO ฟิลด์ GAMNG (ปริมาณรวมของใบสั่ง). ตัวอย่าง 1005000751250 | |||
| ปริมาณที่ส่งมอบแล้ว DeliveredQuantity | ปริมาณผลิตภัณฑ์ที่ผลิตจริงและรับเข้าคลังแล้ว. | ||
| คำอธิบาย ปริมาณที่ส่งมอบแล้ว หรือปริมาณรับสินค้าเข้าคลัง คือปริมาณรวมของสินค้าสำเร็จรูปที่ยืนยันว่าผลิตได้ตามใบสั่งผลิต ค่านี้จะอัปเดตเมื่อเกิดเหตุการณ์ 'บันทึกรับสินค้าเข้าคลัง'. คุณสมบัตินี้ใช้เปรียบเทียบกับ 'ปริมาณที่วางแผนไว้' และจำเป็นต่อการคำนวณ KPI 'ส่วนต่างระหว่างปริมาณที่วางแผนไว้กับผลผลิตจริง' เป็นค่าที่ใช้วัดผลผลิตจริงได้ชัดเจน ช่วยให้นักวิเคราะห์พบส่วนต่างที่อาจเกิดจากของเสีย การสูญเสียผลผลิต หรือปัญหาอื่นในการผลิต การเปรียบเทียบปริมาณที่ส่งมอบแล้วระหว่างโรงงาน ผลิตภัณฑ์ หรือช่วงเวลาต่างๆ ช่วยให้เห็นจุดที่มีปัญหาด้านประสิทธิภาพ. เหตุผลที่สำคัญ ใช้วัดผลผลิตจริงของกระบวนการผลิต และเปรียบเทียบกับเป้าหมายที่วางแผนไว้โดยตรงเพื่อประเมินประสิทธิภาพ. แหล่งข้อมูล อยู่ในตาราง SAP AFPO ฟิลด์ WEMNG (ปริมาณสินค้าที่รับแล้ว). ตัวอย่าง 984950751255 | |||
| รหัสผลิตภัณฑ์ ProductCode | รหัสเฉพาะของวัสดุหรือผลิตภัณฑ์ที่ผลิต. | ||
| คำอธิบาย รหัสผลิตภัณฑ์หรือหมายเลขวัสดุใช้ระบุรายการที่ต้องผลิตตามใบสั่งผลิต เป็นองค์ประกอบสำคัญของข้อมูลหลักที่เชื่อมโยงการวางแผนการผลิตกับการจัดการสินค้าคงคลัง การขาย และการคำนวณต้นทุน. ใน process mining การกรองหรือแบ่งกลุ่มตามรหัสผลิตภัณฑ์มีความสำคัญต่อการทำความเข้าใจกระบวนการผลิตของแต่ละผลิตภัณฑ์ ช่วยตอบคำถาม เช่น ผลิตภัณฑ์ใดใช้เวลาผลิตนานที่สุด หรือผลิตภัณฑ์บางรายการมีปัญหาด้านคุณภาพหรือวัสดุล่าช้าบ่อยกว่าหรือไม่ การวิเคราะห์นี้มีประโยชน์ต่อการจัดการกลุ่มผลิตภัณฑ์ และการหาโอกาสปรับมาตรฐานหรือปรับปรุงกระบวนการสำหรับวัสดุแต่ละประเภท. เหตุผลที่สำคัญ ช่วยวิเคราะห์กระบวนการแยกตามผลิตภัณฑ์ และแสดงว่าวัสดุใดเกี่ยวข้องกับความไม่มีประสิทธิภาพ ความล่าช้า หรือต้นทุนสูง. แหล่งข้อมูล ข้อมูลนี้อยู่ในตาราง SAP AFPO ฟิลด์ MATNR. ตัวอย่าง FG-123RM-45AHALB-7890CHEM-22 | |||
| โรงงานผลิต ProductionPlant | โรงงานหรือสถานที่ที่ดำเนินการผลิตตามใบสั่ง. | ||
| คำอธิบาย โรงงานผลิตเป็นหน่วยงานสำคัญใน SAP ที่ใช้แทนสถานที่ผลิต โดยกำหนดให้กับใบสั่งผลิตแต่ละรายการเพื่อระบุสถานที่ดำเนินกิจกรรมการผลิตจริง. การวิเคราะห์กระบวนการแยกตามโรงงานผลิตช่วยเปรียบเทียบประสิทธิภาพระหว่างสถานที่ต่างๆ ทำให้เห็นว่าโรงงานใดทำงานได้มีประสิทธิภาพกว่า โรงงานใดมีความล่าช้าหรือวัสดุขาดแคลน และสามารถแบ่งปันแนวทางปฏิบัติที่ดีจากที่ใดได้บ้าง นี่เป็นมิติสำคัญสำหรับวิเคราะห์สาเหตุในแดชบอร์ดที่เกี่ยวกับปริมาณงานและการใช้ทรัพยากร. เหตุผลที่สำคัญ ช่วยเปรียบเทียบประสิทธิภาพระหว่างสถานที่ผลิต และค้นหาปัญหาหรือแนวทางปฏิบัติที่ดีเฉพาะแต่ละแห่ง. แหล่งข้อมูล คุณสมบัตินี้จัดเก็บในตาราง SAP AUFK ฟิลด์ WERKS. ตัวอย่าง 100017102000DE01 | |||
| วันที่เริ่มต้นจริง ActualStartDate | เวลาของกิจกรรมการผลิตรายการแรกที่บันทึกไว้ ซึ่งระบุจุดเริ่มต้นของการดำเนินงานจริง. | ||
| คำอธิบาย วันที่เริ่มต้นจริงคือเวลาของเหตุการณ์แรกที่แสดงว่าเริ่มทำงานผลิตจริง โดยทั่วไปได้จากเหตุการณ์ยืนยันการผลิตครั้งแรก หรือการเบิกวัตถุดิบครั้งแรกให้กับใบสั่ง. คุณสมบัติที่ได้จากการคำนวณนี้จำเป็นต่อการวิเคราะห์การทำตามกำหนดการ โดยระบุจุดเริ่มต้นจริงเพื่อเปรียบเทียบกับ 'วันที่เริ่มต้นตามแผน' และคำนวณส่วนต่างของเวลาเริ่มต้นได้อย่างแม่นยำ การทำความเข้าใจช่องว่างระหว่างวันที่เริ่มต้นตามแผนกับวันที่เริ่มต้นจริงช่วยระบุความล่าช้าก่อนการผลิตที่เกี่ยวข้องกับการเตรียมวัสดุ การตั้งค่าเครื่องจักร หรือความพร้อมของทรัพยากร. เหตุผลที่สำคัญ ระบุจุดเริ่มต้นจริงของการดำเนินงานผลิต ทำให้คำนวณความล่าช้าในการเริ่มต้นและระยะเวลาการผลิตทั้งหมดได้อย่างแม่นยำ. แหล่งข้อมูล คำนวณจากบันทึกเหตุการณ์ โดยหาเวลาที่เร็วที่สุดของกิจกรรมการดำเนินงานเฉพาะ เช่น 'บันทึกการยืนยันครั้งแรก' หรือ 'บันทึกการเบิกสินค้า' สำหรับใบสั่งผลิตแต่ละรายการ. ตัวอย่าง 2023-05-11T08:30:00Z2023-06-22T14:00:00Z2023-07-02T09:15:00Z | |||
| วันที่สิ้นสุดจริง ActualEndDate | เวลาของกิจกรรมการผลิตรายการสุดท้าย ซึ่งระบุเวลาที่ใบสั่งเสร็จสมบูรณ์จริง. | ||
| คำอธิบาย วันที่สิ้นสุดจริงคือเวลาของเหตุการณ์ที่แสดงว่ากิจกรรมการผลิตทั้งหมดของใบสั่งเสร็จสมบูรณ์ โดยทั่วไปคำนวณจากเวลาของ 'บันทึกการยืนยันครั้งสุดท้าย' หรือเหตุการณ์ 'บันทึกรับสินค้าเข้าคลัง' รายการสุดท้าย. คุณสมบัตินี้จำเป็นต่อการวัดรอบเวลาการผลิตทั้งหมดและวิเคราะห์การทำตามกำหนดการ เมื่อนำวันที่สิ้นสุดจริงไปเปรียบเทียบกับวันที่สิ้นสุดตามแผน ก็จะทราบว่าใบสั่งเสร็จตรงเวลาหรือไม่ ส่วนระยะเวลาระหว่างวันที่เริ่มต้นจริงกับวันที่สิ้นสุดจริงแสดงเวลาที่ใช้ผลิตจริงตั้งแต่ต้นจนจบ. เหตุผลที่สำคัญ ระบุว่าการผลิตเสร็จสิ้นแล้ว ช่วยให้วัดประสิทธิภาพการส่งมอบตรงเวลาและเวลาการดำเนินงานทั้งหมดได้อย่างแม่นยำ. แหล่งข้อมูล ดึงข้อมูลจากบันทึกเหตุการณ์ โดยหาเวลาประทับล่าสุดของกิจกรรมสำคัญที่แสดงว่าดำเนินการเสร็จแล้ว เช่น 'บันทึกการยืนยันขั้นสุดท้าย' หรือ 'บันทึกรับสินค้าแล้ว'. ตัวอย่าง 2023-05-14T16:00:00Z2023-06-29T11:30:00Z2023-07-05T17:00:00Z | |||
| กลุ่มผู้วางแผน PlannerGroup | กลุ่มผู้ควบคุม MRP หรือผู้วางแผนการผลิตที่รับผิดชอบใบสั่ง. | ||
| คำอธิบาย กลุ่มผู้วางแผนเป็นหน่วยงานที่ประกอบด้วยบุคลากรผู้รับผิดชอบการวางแผนและจัดการวัสดุหรือใบสั่งผลิตที่กำหนด การมอบหมายใบสั่งให้กลุ่มผู้วางแผนช่วยกระจายภาระงานและระบุผู้รับผิดชอบได้ชัดเจน ใน process mining คุณสามารถใช้แอตทริบิวต์นี้วิเคราะห์ประสิทธิภาพแยกตามทีมวางแผนที่รับผิดชอบ เช่น กลุ่มผู้วางแผนใดมีการเปลี่ยนแปลงกำหนดการมากที่สุด หรือระยะเวลาของวงจรการทำงานแตกต่างกันหรือไม่ระหว่างใบสั่งที่แต่ละกลุ่มดูแล ข้อมูลนี้ช่วยปรับสมดุลภาระงานและระบุความต้องการด้านการฝึกอบรม. เหตุผลที่สำคัญ ช่วยแยกวิเคราะห์ประสิทธิภาพตามทีมที่รับผิดชอบ เพื่อให้เห็นความแตกต่างด้านประสิทธิผลการวางแผนและภาระงาน. แหล่งข้อมูล ข้อมูลนี้คือ MRP Controller ซึ่งอยู่ในตาราง SAP AFKO ฟิลด์ DISPO. ตัวอย่าง 001002P01P02 | |||
| ความพร้อมของวัสดุ MaterialAvailabilityStatus | ระบุว่าส่วนประกอบที่จำเป็นสำหรับใบสั่งผลิตมีพร้อมครบหรือไม่. | ||
| คำอธิบาย สถานะความพร้อมของวัสดุเป็นตัวชี้วัดสำคัญว่าการผลิตพร้อมเริ่มหรือไม่ ระบบจะตรวจสอบความพร้อมของวัสดุส่วนประกอบทั้งหมดที่ต้องใช้ในใบสั่ง สถานะ 'พร้อมใช้งาน' หมายถึงเริ่มผลิตได้โดยไม่ต้องรอวัสดุ ส่วนสถานะ 'ขาดแคลน' หมายถึงมีปัญหา แอตทริบิวต์นี้จำเป็นต่อแดชบอร์ด 'การวิเคราะห์ผลกระทบจากการขาดแคลนวัสดุ' การวิเคราะห์ระยะเวลาที่ใบสั่งต้องรอเพราะวัสดุขาดช่วยให้ธุรกิจประเมินผลกระทบของปัญหาห่วงโซ่อุปทานต่อกำหนดการผลิตได้ และช่วยระบุซัพพลายเออร์ที่ไม่น่าเชื่อถือหรือส่วนประกอบที่มักทำให้เกิดความล่าช้า. เหตุผลที่สำคัญ ช่วยชี้ให้เห็นความล่าช้าที่เกิดจากการขาดแคลนวัสดุ ซึ่งเป็นสาเหตุหลักที่พบได้บ่อยและส่งผลอย่างมากต่อการเปลี่ยนแปลงกำหนดการผลิต. แหล่งข้อมูล ข้อมูลนี้ไม่ได้จัดเก็บไว้ในฟิลด์เดียว แต่ได้จากการตรวจสอบความพร้อมใช้งาน (ATP check) โดยมักดูผลได้ในธุรกรรม CO02 หรือการตรวจสอบความพร้อมใช้งานแบบกลุ่ม COHV ระบบอาจบันทึกสถานะ เช่น MACM (จองวัสดุแล้ว) โปรดดูเอกสาร SAP ECC PP. ตัวอย่าง พร้อมใช้งานขาดแคลนพร้อมใช้งานบางส่วนยังไม่ได้ตรวจสอบ | |||
| ผลต่างของปริมาณ QuantityVariance | ผลต่างระหว่างปริมาณการผลิตตามแผนกับปริมาณที่ส่งมอบจริง. | ||
| คำอธิบาย ผลต่างของปริมาณเป็นตัวชี้วัดที่คำนวณขึ้นเพื่อวัดความแตกต่างระหว่างผลผลิตจริงกับแผนเริ่มต้น คำนวณจาก 'ปริมาณที่ส่งมอบ' ลบด้วย 'ปริมาณตามแผน' ค่าผลต่างเป็นบวกหมายถึงผลิตเกินแผน ส่วนค่าติดลบหมายถึงผลิตต่ำกว่าแผนหรือสูญเสียผลผลิต แอตทริบิวต์นี้จำเป็นต่อแดชบอร์ด 'ผลผลิตตามแผนเทียบกับผลผลิตจริง' และ KPI ที่เกี่ยวข้อง การวิเคราะห์ผลต่างช่วยระบุปัญหาด้านผลผลิต อัตราของเสีย หรือข้อผิดพลาดในการป้อนข้อมูล อีกทั้งยังแสดงให้เห็นโดยตรงว่ากระบวนการผลิตทำได้ตามเป้าหมายมากน้อยเพียงใด. เหตุผลที่สำคัญ ช่วยวัดความแม่นยำของผลผลิตเมื่อเทียบกับแผน และชี้ให้เห็นปัญหาที่อาจเกิดกับผลผลิต ของเสีย หรือการควบคุมกระบวนการ. แหล่งข้อมูล ฟิลด์คำนวณ: 'DeliveredQuantity' - 'PlannedQuantity'. ตัวอย่าง -2-5005 | |||
| ผู้ใช้ที่รับผิดชอบ ResponsibleUser | รหัสผู้ใช้ของผู้สร้างหรือผู้แก้ไขใบสั่งผลิตครั้งล่าสุด. | ||
| คำอธิบาย ผู้ใช้ที่รับผิดชอบระบุบัญชีผู้ใช้ SAP ที่เกี่ยวข้องกับเหตุการณ์สำคัญในวงจรการทำงานของใบสั่งผลิต เช่น การสร้างหรือการปล่อยใบสั่ง ข้อมูลนี้ช่วยระบุผู้รับผิดชอบและตรวจสอบย้อนหลังการดำเนินการในระบบได้ ใน process mining คุณสามารถใช้แอตทริบิวต์นี้วิเคราะห์ความแตกต่างของกระบวนการตามพฤติกรรมของผู้ใช้ และระบุผู้ใช้ที่อาจต้องได้รับการฝึกอบรมเพิ่มเติมหรือปฏิบัติตามขั้นตอนที่ไม่เป็นมาตรฐาน นอกจากนี้ยังช่วยวิเคราะห์ทรัพยากร โดยแสดงการกระจายงานระหว่างผู้ใช้แต่ละคน. เหตุผลที่สำคัญ เชื่อมโยงกิจกรรมในกระบวนการกับบุคคลที่เกี่ยวข้อง ช่วยวิเคราะห์ประสิทธิภาพรายผู้ใช้และส่งเสริมความรับผิดชอบ. แหล่งข้อมูล ผู้สร้างใบสั่งอยู่ใน AUFK-ERNAM ส่วนผู้แก้ไขใบสั่งครั้งล่าสุดอยู่ใน AUFK-AENAM เอกสารการเปลี่ยนแปลง (CDHDR-USERNAME) แสดงประวัติผู้ใช้ที่ดำเนินการเปลี่ยนแปลงแต่ละรายการ. ตัวอย่าง JSMITHPROD_PLANNER1BATCH_USERAMILLER | |||
| ลำดับความสำคัญในการผลิต ProductionPriority | การจัดประเภทที่บ่งบอกความเร่งด่วนหรือลำดับความสำคัญของใบสั่งผลิต. | ||
| คำอธิบาย ลำดับความสำคัญในการผลิตเป็นฟิลด์ที่ใช้ระบุความสำคัญของใบสั่งผลิต ช่วยให้ผู้จัดตารางการผลิตและพนักงานหน้างานจัดลำดับงาน เพื่อเร่งดำเนินการใบสั่งที่สำคัญ การวิเคราะห์แอตทริบิวต์นี้ช่วยประเมินว่าระบบจัดลำดับความสำคัญได้ผลหรือไม่ โดยเปรียบเทียบระยะเวลาของวงจรการทำงานระหว่างใบสั่งที่มีลำดับความสำคัญสูงกับต่ำ หากใบสั่งเร่งด่วนไม่ได้รับการดำเนินการเร็วขึ้น อาจสะท้อนปัญหาด้านการสื่อสาร การจัดสรรทรัพยากร หรือการดำเนินงานโดยรวม. เหตุผลที่สำคัญ ช่วยประเมินว่าการจัดการลำดับความสำคัญได้ผลหรือไม่ โดยตรวจสอบว่าใบสั่งเร่งด่วนเสร็จเร็วกว่างานปกติหรือไม่. แหล่งข้อมูล ฟิลด์นี้มักไม่มีมาให้เป็นมาตรฐานในส่วนหัวใบสั่งผลิต อาจเป็นฟิลด์ที่กำหนดเอง ค่าที่ได้จากลำดับความสำคัญของใบสั่งขาย หรือเป็นส่วนหนึ่งของระบบการจัดประเภท โปรดดูเอกสาร SAP ECC PP หรือการตั้งค่าระบบ. ตัวอย่าง สูงปานกลางต่ำเร่งด่วน | |||
| วันที่เริ่มต้นตามแผน PlannedStartDate | วันที่กำหนดไว้ให้เริ่มการผลิตตามใบสั่ง. | ||
| คำอธิบาย วันที่เริ่มต้นตามแผนเป็นพารามิเตอร์สำคัญในการจัดตาราง ซึ่งกำหนดในขั้นตอนวางแผนและจัดตารางการผลิต โดยระบุวันที่เป้าหมายสำหรับเริ่มกิจกรรมการผลิตตามใบสั่ง. คุณสมบัตินี้จำเป็นต่อการวัดว่าทำตามกำหนดการได้หรือไม่ เมื่อนำวันที่เริ่มต้นตามแผนไปเปรียบเทียบกับเวลาเริ่มผลิตจริง เช่น เวลาของกิจกรรม 'บันทึกการยืนยันครั้งแรก' องค์กรจะเห็นความล่าช้าในการเริ่มผลิต การวิเคราะห์สาเหตุของความล่าช้าเหล่านี้เป็นกรณีใช้งานหลักของ process mining ในด้านนี้. เหตุผลที่สำคัญ ใช้เป็นค่าพื้นฐานสำหรับวัดการทำตามกำหนดการและค้นหาความล่าช้าในการเริ่มดำเนินการผลิต. แหล่งข้อมูล นี่คือวันที่เริ่มต้นพื้นฐาน อยู่ในตาราง SAP AFKO ฟิลด์ GSTRP. ตัวอย่าง 2023-05-102023-06-222023-07-01 | |||
| วันที่สิ้นสุดตามแผน PlannedEndDate | วันที่กำหนดไว้ให้ผลิตตามใบสั่งเสร็จสิ้น. | ||
| คำอธิบาย วันที่สิ้นสุดตามแผนคือวันที่เป้าหมายสำหรับผลิตใบสั่งให้เสร็จ ซึ่งกำหนดไว้ระหว่างการจัดตาราง โดยระบุกรอบเวลาที่คาดว่าจะทำกิจกรรมการผลิตทั้งหมดเสร็จ รวมถึงการยืนยันครั้งสุดท้ายและการรับสินค้าเข้าคลัง. วันที่นี้จำเป็นต่อการคำนวณ KPI 'อัตราการทำตามกำหนดการ' เมื่อนำวันที่สิ้นสุดตามแผนไปเปรียบเทียบกับเวลาที่เสร็จจริง เช่น เวลาของกิจกรรม 'บันทึกรับสินค้าเข้าคลัง' หรือ 'บันทึกการยืนยันครั้งสุดท้าย' ก็จะเห็นว่าใบสั่งเสร็จตรงเวลาหรือไม่ การวิเคราะห์นี้ช่วยประเมินความน่าเชื่อถือของตารางการผลิตและค้นหาสาเหตุหลักของการส่งมอบล่าช้า. เหตุผลที่สำคัญ ใช้เป็นเกณฑ์ตัดสินว่าใบสั่งผลิตเสร็จตรงเวลาหรือไม่ ซึ่งส่งผลโดยตรงต่อความพึงพอใจของลูกค้าและความน่าเชื่อถือของการวางแผน. แหล่งข้อมูล นี่คือวันที่สิ้นสุดพื้นฐาน อยู่ในตาราง SAP AFKO ฟิลด์ GLTRP. ตัวอย่าง 2023-05-152023-06-282023-07-05 | |||
| สถานะการทำงานตามกำหนดการ ScheduleAdherenceStatus | ตัวบ่งชี้ว่าใบสั่งผลิตเสร็จภายในวันที่สิ้นสุดตามแผนหรือไม่. | ||
| คำอธิบาย สถานะการทำงานตามกำหนดการเป็นแอตทริบิวต์แบบบูลีนหรือแบบจัดหมวดหมู่ที่คำนวณขึ้น เพื่อให้เห็นภาพรวมผลการทำงานตรงเวลาได้อย่างรวดเร็ว โดยเปรียบเทียบ 'วันที่สิ้นสุดจริง' กับ 'วันที่สิ้นสุดตามแผน' หากวันที่สิ้นสุดจริงตรงกับหรือเร็วกว่าวันที่วางแผนไว้ สถานะจะเป็น 'ตรงเวลา' หากไม่ใช่ จะเป็น 'ล่าช้า' แอตทริบิวต์นี้ช่วยให้วิเคราะห์และแสดงผลบนแดชบอร์ดได้ง่ายขึ้น คุณสามารถกรองและรวมข้อมูลเพื่อคำนวณ KPI 'อัตราการทำงานตามกำหนดการ' และระบุสาเหตุหลักที่ทำให้ใบสั่งล่าช้า เช่น ผลิตภัณฑ์บางรายการ โรงงานบางแห่ง หรือการขาดแคลนวัสดุ. เหตุผลที่สำคัญ ช่วยให้วิเคราะห์ประสิทธิภาพได้ง่ายขึ้น โดยจัดประเภทใบสั่งเป็น 'ตรงเวลา' หรือ 'ล่าช้า' จึงวัดและรายงานความน่าเชื่อถือของกำหนดการได้สะดวก. แหล่งข้อมูล ฟิลด์คำนวณ: IF('ActualEndDate' <= 'PlannedEndDate', 'On-Time', 'Late'). ตัวอย่าง ตรงเวลาล่าช้า | |||
| สถานะใบสั่งผลิต ProductionOrderStatus | สถานะปัจจุบันของใบสั่งผลิต เช่น สร้างแล้ว ปล่อยแล้ว หรือเสร็จสมบูรณ์ทางเทคนิค. | ||
| คำอธิบาย สถานะใบสั่งผลิตแสดงขั้นตอนปัจจุบันของใบสั่งในวงจรการทำงาน SAP ใช้รหัสสถานะเพื่อจัดการความคืบหน้าของใบสั่ง เช่น CRTD (สร้างแล้ว), REL (ปล่อยแล้ว), CNF (ยืนยันแล้ว), DLV (ส่งมอบแล้ว) และ TECO (เสร็จสมบูรณ์ทางเทคนิค) การวิเคราะห์ระยะเวลาที่ใบสั่งอยู่ในแต่ละสถานะเป็นส่วนสำคัญของ process mining ในการผลิต ช่วยให้เห็นว่าใบสั่งรอการปล่อยนานเท่าใดหลังสร้าง หรือค้างอยู่ในสถานะส่งมอบบางส่วนเป็นเวลานานเพียงใด การติดตามการเปลี่ยนสถานะเป็นกิจกรรมช่วยให้เห็นภาพรวมของลำดับงาน. เหตุผลที่สำคัญ ข้อมูลนี้แสดงความคืบหน้าของใบสั่ง ณ ช่วงเวลาหนึ่ง และช่วยระบุคอขวดที่ทำให้ใบสั่งค้างเป็นเวลานาน. แหล่งข้อมูล ข้อมูลสถานะจัดเก็บในตาราง JEST และ JSTO ซึ่งเชื่อมโยงกับหมายเลขออบเจ็กต์ของใบสั่ง (AUFK-OBJNR) ส่วนข้อความสถานะอยู่ใน TJ02T โดยมักอ่านสถานะผ่าน function module เช่น STATUS_TEXT_EDIT. ตัวอย่าง CRTD (สร้างแล้ว)REL (ปล่อยแล้ว)DLV (ส่งมอบแล้ว)TECO (เสร็จสมบูรณ์ทางเทคนิคแล้ว) | |||
กิจกรรมในการวางแผนการผลิต
| กิจกรรม | คำอธิบาย | ||
|---|---|---|---|
| บันทึกการยืนยันครั้งแรก | เหตุการณ์นี้หมายถึงการเริ่มทำงานผลิตจริงตามใบสั่ง ระบบจะบันทึกเมื่อมีการกรอกการยืนยันเวลาเป็นครั้งแรกสำหรับการปฏิบัติงานใดๆ ในใบสั่งผลิต. | ||
| เหตุผลที่สำคัญ กิจกรรมนี้ระบุเวลาเริ่มผลิตจริง ซึ่งจำเป็นต่อการวัดว่าทำตามกำหนดการได้หรือไม่ และค้นหาความล่าช้าระหว่างการจัดสรรทรัพยากรกับการเริ่มงาน. แหล่งข้อมูล อนุมานโดยค้นหาวันที่ลงรายการที่เร็วที่สุด (AFRU-BUDAT) จากการยืนยันทั้งหมดของใบสั่งในตาราง AFRU รายการแรกแสดงจุดเริ่มต้นของการผลิตจริง. บันทึก ระเบียนการยืนยันรายการแรกของใบสั่ง โดยอ้างอิงวันที่ลงรายการในตาราง AFRU. ประเภทเหตุการณ์ inferred | |||
| บันทึกการยืนยันครั้งสุดท้าย | กิจกรรมนี้แสดงว่าการปฏิบัติงานทั้งหมดในใบสั่งผลิตเสร็จสิ้นแล้วในมุมมองของหน้างาน โดยระบุจากรายการยืนยันครั้งสุดท้ายของการปฏิบัติงานขั้นสุดท้าย. | ||
| เหตุผลที่สำคัญ หมุดหมายนี้แสดงจุดสิ้นสุดของกิจกรรมการผลิตจริง ระยะเวลาตั้งแต่การยืนยันครั้งแรกจนถึงครั้งสุดท้ายคือเวลาที่ใช้ดำเนินการผลิตจริง. แหล่งข้อมูล บันทึกเหตุการณ์นี้เมื่อกำหนดสถานะระบบ 'CNF' (I0009, Confirmed) โดยทั่วไปจะเกิดจากการบันทึกการยืนยันครั้งสุดท้ายในตาราง AFRU (AFRU-AUERU = 'X') และบันทึกการเปลี่ยนสถานะไว้ใน JCDS. บันทึก ระบุเวลาที่กำหนดสถานะ 'CNF' หรือค้นหาระเบียนการยืนยันรายการสุดท้ายใน AFRU. ประเภทเหตุการณ์ explicit | |||
| บันทึกรับสินค้าเข้าคลัง | เหตุการณ์นี้บันทึกการรับสินค้าสำเร็จรูปจากใบสั่งผลิตเข้าคลัง แสดงว่าสินค้าที่ผลิตเสร็จพร้อมจัดส่งหรือดำเนินการต่อแล้ว. | ||
| เหตุผลที่สำคัญ นี่คือหมุดหมายสำคัญที่แสดงผลผลิตขั้นสุดท้ายของกระบวนการผลิต เวลาตั้งแต่ปล่อยใบสั่งจนถึงรับสินค้าเข้าคลังคือระยะเวลาการผลิตทั้งหมด. แหล่งข้อมูล บันทึกเป็นเอกสารวัสดุในตาราง MKPF/MSEG พร้อมประเภทการเคลื่อนย้าย ซึ่งโดยทั่วไปคือ '101' และอ้างอิงใบสั่งผลิต นอกจากนี้ยังกำหนดสถานะระบบ 'DLV' (I0012, Delivered) ให้กับใบสั่งด้วย. บันทึก บันทึกวันที่ลงรายการของเอกสารวัสดุประเภทการเคลื่อนย้าย '101' หรือเวลาที่สถานะ 'DLV' เปลี่ยนแปลง. ประเภทเหตุการณ์ explicit | |||
| ปล่อยใบสั่งผลิต | กิจกรรมนี้หมายถึงการอนุมัติและปล่อยใบสั่งผลิตอย่างเป็นทางการเพื่อเริ่มดำเนินการ เมื่อปล่อยใบสั่งแล้ว การจองวัสดุจะมีผล และเริ่มกิจกรรมการผลิต เช่น การเบิกสินค้าและการบันทึกผลยืนยันได้. | ||
| เหตุผลที่สำคัญ นี่คือหมุดหมายสำคัญที่แสดงการส่งต่องานจากการวางแผนไปสู่การดำเนินการ เวลาตั้งแต่สร้างใบสั่งจนถึงปล่อยใบสั่งเป็นตัวชี้วัดสำคัญของประสิทธิภาพการวางแผน. แหล่งข้อมูล บันทึกเหตุการณ์นี้โดยตรงเมื่อกำหนดสถานะระบบ 'REL' (I0002) ให้กับใบสั่งผลิต การเปลี่ยนแปลงพร้อมเวลาจะถูกบันทึกในตาราง JCDS ซึ่งเชื่อมกับหมายเลขออบเจ็กต์ของใบสั่ง (AUFK-OBJNR). บันทึก ระบุเวลาที่สถานะ 'REL' เริ่มมีผลกับใบสั่ง. ประเภทเหตุการณ์ explicit | |||
| ปิดใบสั่งทางเทคนิค | ขั้นตอนปิดงานด้านธุรการนี้เป็นการปิดใบสั่งผลิตในมุมมองด้านโลจิสติกส์ โดยป้องกันการเคลื่อนย้ายวัสดุหรือการยืนยันเพิ่มเติม และเปิดให้ดำเนินการปิดบัญชีทางการเงินได้. | ||
| เหตุผลที่สำคัญ นี่คือจุดสิ้นสุดที่ชัดเจนของวงจรชีวิตใบสั่งในด้านโลจิสติกส์ การวิเคราะห์เหตุการณ์นี้ช่วยให้เข้าใจระยะเวลากระบวนการทั้งหมด รวมถึงงานธุรการหลังการผลิต. แหล่งข้อมูล บันทึกเหตุการณ์นี้โดยตรงเมื่อกำหนดสถานะระบบ 'TECO' (I0045, Technically Completed) ให้กับใบสั่ง โดยบันทึกการเปลี่ยนแปลงพร้อมเวลาไว้ในตาราง JCDS. บันทึก ระบุเวลาที่สถานะ 'TECO' เริ่มมีผลกับใบสั่งใน JCDS. ประเภทเหตุการณ์ explicit | |||
| สร้างใบสั่งผลิต | เหตุการณ์นี้บันทึกการสร้างใบสั่งผลิตใหม่ ซึ่งโดยทั่วไปเริ่มจากการประมวลผลแผนหรือการกรอกข้อมูลด้วยตนเอง ระบบจะบันทึกเหตุการณ์เมื่อบันทึกระเบียนใบสั่งใหม่และกำหนดสถานะ 'CRTD' (Created). | ||
| เหตุผลที่สำคัญ นี่คือจุดเริ่มต้นของกรณีใบสั่งผลิตทุกกรณี การวิเคราะห์เวลาตั้งแต่เหตุการณ์นี้จนถึงการปล่อยใบสั่งช่วยให้พบความล่าช้าในการวางแผนก่อนการผลิตและการเตรียมงานธุรการ. แหล่งข้อมูล บันทึกเหตุการณ์นี้จากวันที่สร้างใบสั่งผลิต (AUFK-ERDAT) และเวลา (AUFK-ERZET) ระบบกำหนดสถานะ 'CRTD' (I0001) และบันทึกไว้ในตาราง JEST และ JCDS ซึ่งเชื่อมกับหมายเลขออบเจ็กต์ของใบสั่ง (AUFK-OBJNR). บันทึก ติดตามเวลาที่สร้างใบสั่งและการกำหนดสถานะ 'CRTD'. ประเภทเหตุการณ์ explicit | |||
| กำหนดยกเลิกใบสั่ง | เหตุการณ์นี้แสดงว่าใบสั่งผลิตถูกยกเลิกก่อนเสร็จสิ้น โดยทั่วไปทำได้ด้วยการกำหนดสถานะเฉพาะหรือตั้งค่าสถานะลบ ซึ่งจะป้องกันไม่ให้ดำเนินการต่อ. | ||
| เหตุผลที่สำคัญ นี่คือผลลัพธ์ที่ไม่พึงประสงค์และควรติดตาม การวิเคราะห์ใบสั่งที่ถูกยกเลิกอาจเผยให้เห็นปัญหาในการพยากรณ์ความต้องการ ความแม่นยำของการวางแผน หรือการจัดการข้อมูลหลัก. แหล่งข้อมูล อนุมานได้จากการกำหนดสถานะ 'DLFL' (I0076, Deletion flag) หรือสถานะ 'Canceled' เฉพาะที่ตั้งค่าไว้ โดยบันทึกการเปลี่ยนแปลงพร้อมเวลาไว้ในตาราง JCDS. บันทึก ระบุเวลาที่กำหนดสถานะลบ ('DLFL') หรือสถานะยกเลิกให้กับใบสั่ง. ประเภทเหตุการณ์ inferred | |||
| ดำเนินการปิดบัญชีใบสั่ง | หมายถึงการปิดบัญชีทางการเงินของใบสั่งผลิต โดยจัดสรรค่าใช้จ่ายที่สะสมไว้ไปยังออบเจ็กต์ต้นทุนที่เหมาะสม นี่คือขั้นตอนสุดท้ายของวงจรชีวิตใบสั่งในมุมมองการควบคุมต้นทุน. | ||
| เหตุผลที่สำคัญ แม้จะเป็นกิจกรรมทางการเงิน แต่ความล่าช้าในการปิดบัญชีอาจบ่งชี้ถึงปัญหาในการรายงานต้นทุนหรือความถูกต้องของข้อมูลใบสั่ง และเป็นจุดปิดบัญชีทางการเงินที่แท้จริงของกระบวนการผลิต. แหล่งข้อมูล อนุมานได้เมื่อยอดคงเหลือของใบสั่งเป็นศูนย์ หรือเมื่อสถานะระบบ 'SETC' (I0076, Settlement rule created) ตามด้วยบันทึกการปิดบัญชี การปิดบัญชีจริงจะบันทึกไว้ในตารางควบคุมต้นทุน เช่น COSP และ COSS. บันทึก อนุมานจากเอกสารปิดบัญชีที่เชื่อมกับใบสั่งในตาราง CO หรือจากการเปิดใช้งานสถานะ 'SETC'. ประเภทเหตุการณ์ inferred | |||
| ตรวจสอบความพร้อมของวัสดุ | หมายถึงการตรวจสอบว่ามีส่วนประกอบที่จำเป็นสำหรับใบสั่งผลิตครบหรือไม่ การตรวจสอบนี้อาจทำโดยอัตโนมัติเมื่อสร้างหรือปล่อยใบสั่ง หรือเริ่มดำเนินการด้วยตนเอง. | ||
| เหตุผลที่สำคัญ กิจกรรมนี้สำคัญต่อการทำความเข้าใจความล่าช้าที่เกิดจากวัสดุขาดแคลน การตรวจสอบบ่อยครั้งหรือการรอนานกว่าวัสดุจะพร้อมใช้อาจบ่งชี้ถึงปัญหาในห่วงโซ่อุปทานหรือการจัดการสินค้าคงคลัง. แหล่งข้อมูล ระบบกำหนดสถานะ เช่น 'MACM' (material committed) หรือ 'MSPT' (material shortage) โดยอนุมานเวลาที่ดำเนินการได้จากเวลาที่สถานะเปลี่ยนในตาราง JEST/JCDS ผลการตรวจสอบจะแสดงในส่วนหัวใบสั่ง. บันทึก อนุมานจากเวลาที่สถานะเกี่ยวกับความพร้อมของวัสดุเปลี่ยน เช่น 'MACM' หรือ 'MSPT'. ประเภทเหตุการณ์ inferred | |||
| บันทึกการเบิกสินค้า | กิจกรรมนี้หมายถึงการเบิกวัสดุส่วนประกอบจากสินค้าคงคลังเพื่อนำไปใช้กับใบสั่งผลิต เป็นการยืนยันว่าวัตถุดิบหรือสินค้ากึ่งสำเร็จรูปที่จำเป็นพร้อมสำหรับการผลิตแล้ว. | ||
| เหตุผลที่สำคัญ เหตุการณ์นี้เป็นจุดเริ่มต้นของการใช้วัสดุ ความล่าช้าระหว่างการปล่อยใบสั่งกับการเบิกสินค้าอาจบ่งชี้ถึงปัญหาด้านการขนส่งในคลัง การเตรียมวัสดุ หรือความถูกต้องของสินค้าคงคลัง. แหล่งข้อมูล บันทึกเป็นเอกสารวัสดุในตาราง MKPF (ส่วนหัว) และ MSEG (รายการ) พร้อมประเภทการเคลื่อนย้าย ซึ่งโดยทั่วไปคือ '261' และอ้างอิงหมายเลขใบสั่งผลิต (MSEG-AUFNR). บันทึก บันทึกวันที่ลงรายการ (MKPF-BUDAT) ของเอกสารวัสดุประเภทการเคลื่อนย้าย '261' ที่เชื่อมกับใบสั่ง. ประเภทเหตุการณ์ explicit | |||
| บันทึกการยืนยันระหว่างดำเนินงาน | หมายถึงการรายงานความคืบหน้าของใบสั่งผลิตด้วยการยืนยันการปฏิบัติงานบางส่วน ซึ่งมักใช้กับใบสั่งที่ใช้เวลานานและจำเป็นต้องติดตามความคืบหน้าก่อนเสร็จสิ้น. | ||
| เหตุผลที่สำคัญ การวิเคราะห์การยืนยันระหว่างดำเนินงานช่วยติดตามความคืบหน้าของรอบการผลิตที่ยาวนาน และค้นหาคอขวดภายในกระบวนการผลิต ไม่ใช่เฉพาะช่วงเริ่มต้นหรือสิ้นสุด. แหล่งข้อมูล บันทึกจากระเบียนการยืนยันในตาราง AFRU ที่ไม่ได้ระบุว่าเป็นการยืนยันครั้งสุดท้าย แต่ละรายการมีวันที่ลงรายการ (AFRU-BUDAT) และเวลา. บันทึก ดึงระเบียนการยืนยันทั้งหมดจาก AFRU ที่ไม่ได้ระบุว่าเป็นการยืนยันครั้งสุดท้ายของการปฏิบัติงาน. ประเภทเหตุการณ์ explicit | |||
| เปลี่ยนแปลงข้อมูลใบสั่ง | เหตุการณ์นี้บันทึกการแก้ไขข้อมูลสำคัญของใบสั่งผลิตหลังจากสร้างครั้งแรก เช่น ปริมาณที่วางแผนไว้ วันที่ หรือ BOM ระบบบันทึกการเปลี่ยนแปลงเหล่านี้ไว้เพื่อการตรวจสอบย้อนหลัง. | ||
| เหตุผลที่สำคัญ การติดตามการเปลี่ยนแปลงช่วยให้พบความไม่เสถียรของกระบวนการและการวางแผนใหม่บ่อยครั้ง หากมีการเปลี่ยนแปลงบ่อย อาจเกิดจากการวางแผนครั้งแรกไม่แม่นยำ ความต้องการผันผวน หรือข้อมูลไม่ถูกต้อง. แหล่งข้อมูล ระบบบันทึกการเปลี่ยนแปลงฟิลด์สำคัญในตาราง เช่น AFKO (ส่วนหัวใบสั่ง) และ AFPO (รายการใบสั่ง) ไว้ในตารางเอกสารการเปลี่ยนแปลง CDHDR (ส่วนหัว) และ CDPOS (รายการ) โดยดึงการเปลี่ยนแปลงที่เกี่ยวข้องแต่ละรายการมาเป็นกิจกรรมได้. บันทึก ดึงรายการบันทึกการเปลี่ยนแปลงจากตาราง CDHDR และ CDPOS สำหรับคลาสออบเจ็กต์ใบสั่งผลิต. ประเภทเหตุการณ์ explicit | |||
คู่มือการนำข้อมูลออกมาใช้
ขั้นตอน
- สร้าง InfoSet ใน SAP Query: ใช้รหัสธุรกรรม
SQ02เพื่อสร้าง InfoSet ใหม่ เช่นZPP_EVENTLOGเลือกตัวเลือกแหล่งข้อมูล 'Table join using basis table' และใช้AUFK(ข้อมูลหลักของใบสั่ง) เป็นตารางฐานเริ่มต้น - เชื่อมตารางที่จำเป็น: เพิ่มตารางต่อไปนี้ในการเชื่อมตารางของ InfoSet ระบบอาจเสนอการเชื่อมตารางให้ แต่ควรตรวจสอบว่าถูกต้อง:
AUFKกับAFKO(ข้อมูลส่วนหัวของใบสั่งผลิต PP):AUFK-AUFNR = AFKO-AUFNRAUFKกับJEST(สถานะของออบเจ็กต์แต่ละรายการ):AUFK-OBJNR = JEST-OBJNRJESTกับJCDS(เอกสารการเปลี่ยนแปลงสถานะระบบและสถานะผู้ใช้):JEST-OBJNR = JCDS-OBJNRANDJEST-STAT = JCDS-STATหมายเหตุ: การเชื่อมตารางนี้ใช้สำหรับอ่านประวัติการเปลี่ยนแปลงสถานะAUFKกับAFRU(การยืนยันการเสร็จสิ้นใบสั่ง):AUFK-AUFNR = AFRU-AUFNRAUFKกับMSEG(รายการเอกสาร: วัสดุ):AUFK-AUFNR = MSEG-AUFNRMSEGกับMKPF(ส่วนหัว: เอกสารวัสดุ):MSEG-MBLNR = MKPF-MBLNRANDMSEG-MJAHR = MKPF-MJAHR
- กำหนดกลุ่มฟิลด์: ลากฟิลด์ที่ต้องใช้จากตารางต้นทางไปยังกลุ่มฟิลด์ ตรวจสอบว่ามีฟิลด์ที่จำเป็นสำหรับคิวรีสุดท้ายครบถ้วน เช่น
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATE,MKPF-BUDAT - เพิ่มฟิลด์และโค้ดที่กำหนดเอง: ใน InfoSet ให้ไปที่แท็บ 'Extras' คุณต้องกำหนดฟิลด์ที่กำหนดเองสำหรับ
ActivityName,EventTime,SourceSystemและLastDataUpdateพร้อมเขียนโค้ด ABAP เพื่อใส่ค่าตามตรรกะที่กำหนดไว้ในส่วนคิวรี ตรรกะนี้จะวนอ่านการเปลี่ยนแปลงสถานะ การยืนยัน และเอกสารวัสดุ เพื่อสร้างระเบียนแยกสำหรับแต่ละเหตุการณ์ทางธุรกิจ ขั้นตอนนี้ซับซ้อนที่สุด เพราะต้องแปลงข้อมูลแบบตารางให้เป็นรูปแบบบันทึกเหตุการณ์ภายในส่วนโค้ดของ InfoSet - สร้างและบันทึก InfoSet: เมื่อกำหนดการเชื่อมตาราง ฟิลด์ และโค้ดที่กำหนดเองครบแล้ว ให้บันทึกและสร้าง InfoSet
- สร้าง SAP Query: ใช้รหัสธุรกรรม
SQ01เพื่อสร้างคิวรีใหม่ เช่นZPP_EVENTSโดยอิงจาก InfoSet ที่สร้างไว้ในขั้นตอนก่อนหน้า - ออกแบบเค้าโครงคิวรี: ในเครื่องมือออกแบบคิวรี ให้กำหนดฟิลด์ในหน้าจอเลือกข้อมูล ตัวเลือกที่เหมาะสม ได้แก่ ใบสั่งผลิต
AUFNR, โรงงานWERKS, ประเภทใบสั่งAUARTและช่วงวันที่สร้างใบสั่งAUFK-ERDAT - กำหนดรายการผลลัพธ์: เลือกฟิลด์ที่จะแสดงในรายงาน รายการนี้ควรตรงกับคอลัมน์ที่จำเป็นสำหรับบันทึกเหตุการณ์ทุกประการ รวมถึงฟิลด์ที่กำหนดเอง เช่น
ActivityNameและEventTime - เรียกใช้คิวรี: เรียกใช้คิวรีโดยระบุเงื่อนไขที่ต้องการ เช่น ใบสั่งผลิตในช่วง 3 ถึง 6 เดือนที่ผ่านมา
- ส่งออกข้อมูล: เมื่อคิวรีแสดงผลแล้ว ให้ส่งออกรายการ รูปแบบที่ใช้กันทั่วไปและเชื่อถือได้คือ 'Spreadsheet' หรือ 'Local File' โดยเลือกไฟล์แบบคั่นด้วยแท็บหรือ CSV
- จัดรูปแบบสำหรับ ProcessMind: เปิดไฟล์ที่ส่งออกด้วยโปรแกรมสเปรดชีต ตรวจสอบว่าส่วนหัวคอลัมน์ตรงกับแอตทริบิวต์ที่จำเป็น (
ProductionOrder,ActivityName,EventTimeเป็นต้น) และรูปแบบวันที่และเวลาของEventTimeสม่ำเสมอและตรงตามมาตรฐานที่กำหนด เช่น YYYY-MM-DD HH:MI:SS จากนั้นบันทึกเป็นไฟล์ CSV เพื่ออัปโหลด.
การกำหนดค่า
- การเชื่อม InfoSet: วิธีนี้อาศัย InfoSet ที่เชื่อมตารางส่วนหัว สถานะ การยืนยัน และการเคลื่อนไหวของวัสดุเข้าด้วยกัน การเชื่อมหลักคือ
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRUและAUFK->MSEG->MKPFหากเชื่อมตารางไม่ถูกต้องหรือไม่มีประสิทธิภาพ อาจทำให้ระบบทำงานช้าหรือได้ข้อมูลไม่ถูกต้อง - เงื่อนไขการเลือกข้อมูล: ควรกำหนดช่วงข้อมูลให้เหมาะสม เพื่อป้องกันปัญหาด้านประสิทธิภาพของระบบ ฟิลด์สำคัญที่ควรมีในหน้าจอเริ่มต้นของคิวรี ได้แก่:
- โรงงานผลิต (
AUFK-WERKS) - ประเภทใบสั่งผลิต (
AUFK-AUART) - วันที่สร้างใบสั่ง (
AUFK-ERDAT): แนะนำให้ดึงข้อมูลย้อนหลังต่อเนื่อง 3-6 เดือน เพื่อควบคุมขนาดชุดข้อมูล
- โรงงานผลิต (
- สถานะระบบ: การระบุเหตุการณ์ เช่น 'สร้างแล้ว', 'ปล่อยแล้ว', 'เสร็จสมบูรณ์ทางเทคนิคแล้ว' และ 'ยกเลิกแล้ว' ขึ้นอยู่กับรหัสสถานะระบบที่กำหนด เช่น I0001, I0002, I0045 และ I0047 โดยทั่วไปเป็นรหัสมาตรฐานของ SAP แต่ควรตรวจสอบกับระบบของคุณ
- ประเภทการเคลื่อนไหว: ระบุเหตุการณ์ เช่น 'เบิกสินค้า' และ 'รับสินค้า' ด้วยประเภทการเคลื่อนไหว (
MSEG-BWART) ซึ่งโดยทั่วไปคือ '261' และ '101' ตามลำดับ โปรดตรวจสอบว่าค่าตรงกับการตั้งค่าขององค์กร - สิทธิ์การใช้งาน: ผู้เรียกใช้คิวรีต้องมีสิทธิ์เข้าถึงธุรกรรม
SQ01,SQ02และSQ03รวมถึงสิทธิ์แสดงข้อมูลจากตารางต้นทางทั้งหมด (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF).
ตัวอย่างคำค้น abap
/*
The following ABAP-style SQL script represents the complete logic required to build the event log.
This logic must be implemented within the code sections of the SQ02 InfoSet, as a direct SQL query of this nature is not run.
Each SELECT block corresponds to a specific business activity.
*/
-- 1. Production Order Created
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Created' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0001' AND JCDS.INACT = ''
UNION ALL
-- 2. Material Availability Checked (using 'Material shortage' status as an indicator)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Material Availability Checked' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0033' AND JCDS.INACT = '' -- I0033 is MSPT (Material Shortage)
UNION ALL
-- 3. Production Order Released
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Released' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0002' AND JCDS.INACT = ''
UNION ALL
-- 4. Order Data Changed (using last change date as a proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Data Changed' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime, -- Time is not available in AUFK
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.AEDAT IS NOT NULL AND AUFK.AEDAT > AUFK.ERDAT
UNION ALL
-- 5. Goods Issue Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Issue Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
CONF.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
CONF.EventTime,
CONF.ProductionPlant,
CONF.ProductCode,
CONF.PlannedQuantity,
CONF.DeliveredQuantity,
CONF.ActualStartDate,
CONF.ActualEndDate,
CONF.SourceSystem,
CONF.LastDataUpdate
FROM (
SELECT
AUFK.AUFNR AS ProductionOrder,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
ROW_NUMBER() OVER(PARTITION BY AUFK.AUFNR ORDER BY AFRU.BUDAT, AFRU.ERFZEIT) as rn
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
) AS CONF
WHERE CONF.rn = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'T' -- T = Partial Confirmation
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'E' -- E = Final Confirmation
UNION ALL
-- 9. Goods Receipt Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Technically Completed' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0045' AND JCDS.INACT = ''
UNION ALL
-- 11. Order Settlement Ran (using 'Closed' status as proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Settlement Ran' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0046' AND JCDS.INACT = '' -- I0046 is CLSD (Closed)
UNION ALL
-- 12. Order Cancellation Set
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0047' AND JCDS.INACT = '' -- I0047 is CNF (Confirmed), use I0076 for Canceled. Recorrecting. Use Deletion Flag instead.
-- Corrected Logic for Cancellation:
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.LOEKZ = 'X'; ขั้นตอน
- เตรียมสิทธิ์เข้าถึงฐานข้อมูล: ขอข้อมูลรับรองแบบอ่านอย่างเดียวสำหรับฐานข้อมูล SAP ECC ที่เกี่ยวข้อง คุณต้องมีที่อยู่เซิร์ฟเวอร์ พอร์ต ชื่อฐานข้อมูล ชื่อผู้ใช้ และรหัสผ่าน การเข้าถึงนี้จำเป็น และต้องประสานงานกับทีม SAP Basis และทีมดูแลฐานข้อมูล
- ระบุสคีมา SAP: ตรวจสอบสคีมาฐานข้อมูลที่จัดเก็บตาราง SAP โดยมักใช้ชื่อ
SAPSR3หรือชื่อเฉพาะของระบบที่คล้ายกัน จากนั้นแทนที่[Your SAP Schema]ในคิวรีด้วยค่านี้ - เตรียมคิวรี SQL: คัดลอกคิวรี SQL ฉบับเต็มจากส่วน
queryคิวรีนี้ออกแบบมาเพื่อดึงกิจกรรมที่ระบุทั้งหมดให้อยู่ในรูปแบบบันทึกเหตุการณ์เดียว - กำหนดพารามิเตอร์คิวรี: ก่อนเรียกใช้ ให้แก้ค่าตัวแทนในคิวรี กำหนด
[Start Date]และ[End Date]เพื่อระบุช่วงเวลาที่ต้องการดึงข้อมูล นอกจากนี้ แนะนำให้กรองตามโรงงานผลิต (WERKS) หรือประเภทใบสั่ง (AUART) เพื่อลดปริมาณข้อมูล - เชื่อมต่อและเรียกใช้: ใช้ไคลเอนต์ SQL ทั่วไป เช่น DBeaver, SAP HANA Studio หรือสคริปต์ที่เขียนขึ้นเองด้วย Python หรือ Java เพื่อเชื่อมต่อฐานข้อมูล SAP โดยใช้ข้อมูลรับรองจากขั้นตอนที่ 1
- เรียกใช้คิวรี: วางคิวรี SQL ที่กำหนดค่าแล้วลงในไคลเอนต์และเรียกใช้ ระยะเวลาประมวลผลอาจหลายนาที ขึ้นอยู่กับช่วงวันที่และขนาดระบบ
- ตรวจสอบผลลัพธ์เบื้องต้น: เมื่อคิวรีทำงานเสร็จ ให้ตรวจสอบข้อมูลสองสามร้อยแถวแรกอย่างคร่าว ๆ เพื่อดูว่าคอลัมน์ เช่น
ProductionOrder,ActivityNameและEventTimeมีค่าถูกต้องและสมเหตุสมผล - ส่งออกเป็น CSV: ส่งออกผลลัพธ์ทั้งหมดจากไคลเอนต์ SQL เป็นไฟล์ CSV และตรวจสอบว่าไฟล์ใช้การเข้ารหัส UTF-8 เพื่อป้องกันปัญหาอักขระ
- เตรียมไฟล์ CSV สำหรับอัปโหลด: เปิดไฟล์ CSV และตรวจสอบว่าส่วนหัวคอลัมน์ตรงกับแอตทริบิวต์ที่จำเป็น (
ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdateเป็นต้น) ตรวจสอบว่าคอลัมน์EventTimeใช้รูปแบบสม่ำเสมอ เช่นYYYY-MM-DD HH:MI:SS - อัปโหลดไปยัง ProcessMind: ไฟล์ CSV ที่เตรียมไว้พร้อมอัปโหลดไปยังแพลตฟอร์ม ProcessMind เพื่อวิเคราะห์แล้ว.
การกำหนดค่า
- สคีมาฐานข้อมูล: ระบุสคีมา SAP ที่จัดเก็บตารางวางแผนการผลิตของคุณ แทนที่
[Your SAP Schema]ในคิวรีด้วยชื่อที่ถูกต้องสำหรับสภาพแวดล้อมของคุณ เช่นSAPSR3 - ช่วงวันที่: การกรองตามช่วงวันที่ที่กำหนดมีความสำคัญต่อประสิทธิภาพ คิวรีจะกรองตามวันที่สร้างใบสั่ง (
AUFK.ERDAT) แนะนำให้เริ่มจากช่วง 3 ถึง 6 เดือนล่าสุด เพื่อให้ปริมาณข้อมูลอยู่ในระดับที่จัดการได้ - ประเภทใบสั่งผลิต: กรองคิวรีตามฟิลด์ประเภทใบสั่งผลิต (
AUFK.AUART) เพื่อกำหนดขอบเขตการวิเคราะห์ วิธีนี้ช่วยให้เลือกหรือไม่เลือกประเภทที่ต้องการได้ เช่น ใบสั่งผลิตมาตรฐาน ใบสั่งผลิตตามกระบวนการ หรือใบสั่งแก้งาน - โรงงานผลิต: แนะนำอย่างยิ่งให้กรองตามโรงงานผลิตหนึ่งแห่งหรือหลายแห่ง (
AFKO.WERKS) การดึงข้อมูลจากทุกโรงงานพร้อมกันอาจใช้ทรัพยากรจำนวนมาก - การเข้าถึงฐานข้อมูล: วิธีนี้ต้องใช้ผู้ใช้ฐานข้อมูลที่มีสิทธิ์อ่านตารางอย่างน้อยดังต่อไปนี้:
AUFK,AFKO,JCDS,JEST,AFRU,MSEG,MKPFผู้ใช้ SAP บางรายอาจไม่มีสิทธิ์เข้าถึงฐานข้อมูลโดยตรงเป็นค่าเริ่มต้น จึงต้องขออนุญาตเป็นกรณีพิเศษ.
ตัวอย่างคำค้น sql
WITH Orders AS (
SELECT
aufk.AUFNR AS ProductionOrder,
afko.WERKS AS ProductionPlant,
afko.PLNBEZ AS ProductCode,
afko.GAMNG AS PlannedQuantity,
afko.GMEIN AS PlannedUnit,
afko.GEMNG AS DeliveredQuantity,
CASE
WHEN afko.GSTRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GSTRI || afko.GSUZI, 'YYYYMMDDHH24MISS')
END AS ActualStartDate,
CASE
WHEN afko.GETRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GETRI || afko.GEUZI, 'YYYYMMDDHH24MISS')
END AS ActualEndDate,
aufk.OBJNR,
aufk.ERDAT AS CreationDate,
aufk.ERFAS AS CreationTime
FROM
"[Your SAP Schema]".AUFK aufk
JOIN
"[Your SAP Schema]".AFKO afko ON aufk.AUFNR = afko.AUFNR
WHERE
aufk.AUTYP = '10' -- Filter for Production Orders
AND aufk.ERDAT BETWEEN '[Start Date]' AND '[End Date]'
-- AND afko.WERKS IN ('[Your Plant]', '[Another Plant]') -- Optional: Filter by Plant
-- AND aufk.AUART IN ('[Your Order Type]') -- Optional: Filter by Order Type
),
Confirmations AS (
SELECT
o.ProductionOrder,
a.RUECK AS ConfirmationNumber,
a.RMZHL AS ConfirmationCounter,
TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
a.AUERU AS IsFinalConfirmation,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') ASC) as rn_asc,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') DESC) as rn_desc
FROM
Orders o
JOIN
"[Your SAP Schema]".AFRU a ON o.ProductionOrder = a.AUFNR
)
-- 1. Production Order Created
SELECT
o.ProductionOrder,
'Production Order Created' AS ActivityName,
TO_TIMESTAMP(o.CreationDate || o.CreationTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
UNION ALL
-- 2. Material Availability Checked (using 'Material Committed' status as proxy)
SELECT
o.ProductionOrder,
'Material Availability Checked' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0006' AND jcds.INACT != 'X'
UNION ALL
-- 3. Production Order Released
SELECT
o.ProductionOrder,
'Production Order Released' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0002' AND jcds.INACT != 'X'
UNION ALL
-- 4. Order Data Changed
SELECT
o.ProductionOrder,
'Order Data Changed' AS ActivityName,
TO_TIMESTAMP(aufk.AEDAT || aufk.AEZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".AUFK aufk ON o.ProductionOrder = aufk.AUFNR
WHERE aufk.AEDAT > o.CreationDate
UNION ALL
-- 5. Goods Issue Posted
SELECT
o.ProductionOrder,
'Goods Issue Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
c.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
c.ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc > 1 AND c.IsFinalConfirmation IS NULL
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
c.ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.IsFinalConfirmation = 'X'
UNION ALL
-- 9. Goods Receipt Posted
SELECT
o.ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
o.ProductionOrder,
'Order Technically Completed' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0045' AND jcds.INACT != 'X'
UNION ALL
-- 11. Order Settlement Ran
SELECT
o.ProductionOrder,
'Order Settlement Ran' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0046' AND jcds.INACT != 'X'
UNION ALL
-- 12. Order Cancellation Set
SELECT
o.ProductionOrder,
'Order Cancellation Set' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0076' AND jcds.INACT != 'X'; ขั้นตอน
- ยืนยันว่ามีข้อมูล SAP ECC PP สำหรับการประมวลผลใบสั่งผลิต การยืนยัน การจัดการสินค้าคงคลัง และการควบคุมต้นทุน พร้อมตรวจสอบว่าผู้ใช้ที่ใช้ดึงข้อมูลได้รับอนุญาตให้อ่านตารางแอปพลิเคชันที่จำเป็นและเรียกใช้รายงาน ABAP ที่กำหนดเอง
- ใน ABAP Workbench เช่น ธุรกรรม SE38 หรือ SE80 ให้สร้างรายงานที่เรียกใช้ได้สำหรับงานนี้โดยเฉพาะ เช่น [Your custom report name] ใช้หน้าจอเลือกข้อมูลที่มีพารามิเตอร์วันที่บังคับ เช่น [Start date] และ [End date] พร้อมตัวกรองเสริมสำหรับ [Company Code], [Production Plant], [Order Type], [Material] และ [Production Order]
- อ่านข้อมูลส่วนหัวและข้อมูลหลักของใบสั่งผลิตจาก AUFK และตารางใบสั่งผลิตที่กำหนดค่าไว้ในระบบ SAP ECC ใช้ JCDS และการกำหนดค่าสถานะที่เกี่ยวข้องเพื่อระบุการเปลี่ยนแปลงสถานะที่เกิดขึ้นจริง รวมถึง CRTD สถานะปล่อยใบสั่ง สถานะเสร็จสมบูรณ์ทางเทคนิค และสถานะที่เกี่ยวข้องกับการยกเลิก อย่าสันนิษฐานว่ารหัสสถานะหมายถึงเหตุการณ์ เว้นแต่ประวัติสถานะจะมีการเปลี่ยนแปลงพร้อมเวลาประทับ
- อ่านผลการตรวจสอบความพร้อมใช้งานของวัสดุจากข้อมูลการตรวจสอบความพร้อมใช้งานของใบสั่งผลิตที่กำหนดค่าไว้ในระบบ หากไม่มีการบันทึกผลตรวจสอบไว้ในตารางที่เชื่อมโยงกับใบสั่งและเวลาประทับได้อย่างน่าเชื่อถือ ให้ใช้ SAP enhancement, บันทึกแอปพลิเคชัน หรือแหล่งข้อมูลตรวจสอบย้อนหลังที่ทีม SAP อนุมัติ อย่าสรุปว่ามีการตรวจสอบจากการสร้างหรือปล่อยใบสั่งเพียงอย่างเดียว
- อ่านประวัติการเปลี่ยนแปลงใบสั่งจากออบเจ็กต์เอกสารการเปลี่ยนแปลงใบสั่งผลิตที่กำหนดค่าไว้และตารางเอกสารการเปลี่ยนแปลงที่เกี่ยวข้อง ดึงเฉพาะการเปลี่ยนแปลงสำคัญ เช่น ปริมาณตามแผน วันที่ BOM เส้นทางการผลิต หรือฟิลด์อื่นที่เจ้าของกระบวนการอนุมัติ ใช้เวลาประทับของเอกสารการเปลี่ยนแปลงเป็น EventTime
- อ่านรายการเบิกสินค้าและรับสินค้าจากข้อมูลเอกสารวัสดุในระบบสินค้าคงคลังที่กำหนดค่าไว้ เชื่อมรายการกับใบสั่งผลิตโดยใช้ข้อมูลอ้างอิงใบสั่งที่มีอยู่ในข้อมูลเอกสารวัสดุ จัดประเภทการเบิกชิ้นส่วนเป็น Goods Issue Posted และการรับสินค้าสำเร็จรูปเป็น Goods Receipt Posted ใช้วันที่และเวลาที่บันทึกรายการ หากมี
- อ่านข้อมูลการยืนยันจากแหล่งข้อมูลการยืนยันการผลิตที่กำหนดค่าไว้ เรียงการยืนยันตามใบสั่งผลิตและเวลาประทับการยืนยัน สร้าง First Confirmation Recorded สำหรับการยืนยันครั้งแรก, Intermediate Confirmation Recorded สำหรับการยืนยันระหว่างทางที่เข้าเงื่อนไข และ Final Confirmation Recorded สำหรับการยืนยันที่ระบุชัดเจนว่าเป็นรายการสุดท้าย หรือระบุได้จากตรรกะการเสร็จสิ้นการยืนยันที่กำหนดค่าไว้ อย่าสรุปว่าเป็นรายการสุดท้ายจากแถวสุดท้ายที่คิวรีใด ๆ ส่งกลับมา
- อ่านข้อมูลการดำเนินการปิดบัญชีจากแหล่งข้อมูลการปิดบัญชีที่กำหนดค่าไว้ในการควบคุมต้นทุน สร้าง Order Settlement Ran เฉพาะเมื่อมีระเบียนการดำเนินการปิดบัญชี เอกสารปิดบัญชี หรือประวัติสถานะการปิดบัญชีที่อนุมัติ ซึ่งระบุเวลาประทับที่เชื่อมโยงกับใบสั่งผลิตอย่างชัดเจน
- สร้างแถวเหตุการณ์ภายในหนึ่งแถวสำหรับทุกกิจกรรมที่ดึงมา กำหนดค่า ProductionOrder, ActivityName, EventTime, SourceSystem, LastDataUpdate, ProductionPlant, ProductCode, PlannedQuantity, DeliveredQuantity, ActualStartDate และ ActualEndDate ใช้การแปลงเวลาประทับแบบคงที่และคงเขตเวลาของระบบต้นทางไว้ กำหนด ActualStartDate เป็นเวลาประทับของการยืนยันครั้งแรก และ ActualEndDate เป็นเวลาประทับของการยืนยันครั้งสุดท้ายเมื่อมีเหตุการณ์เหล่านี้
- เรียงแถวเหตุการณ์ตาม ProductionOrder และ EventTime พร้อมใช้ลำดับรองที่แน่นอนเมื่อเวลาประทับตรงกัน ลบเฉพาะระเบียนต้นทางที่ซ้ำกันทุกประการ ไม่ลบเหตุการณ์ซ้ำที่เกิดขึ้นจริง ตรวจสอบว่าชื่อกิจกรรมที่จำเป็นทั้ง 12 รายการอยู่ในสคีมาผลลัพธ์ และแต่ละแถวที่สร้างมีรหัสเคส ชื่อกิจกรรม และเวลาประทับเหตุการณ์
- เขียนผลลัพธ์ลงไฟล์บน application server โดยใช้อินเทอร์เฟซไฟล์ ABAP ที่ได้รับอนุมัติและพาธไฟล์เชิงตรรกะที่กำหนดค่าไว้ ใช้ตัวคั่นและการเข้ารหัสข้อความที่ตกลงกับการตั้งค่าการนำเข้าข้อมูลของ ProcessMind ใส่แถวส่วนหัว ครอบค่าที่มีตัวคั่นอยู่ภายในด้วยเครื่องหมายคำพูด และจัดรูปแบบเวลาประทับให้สม่ำเสมอ โดยแนะนำให้ใช้ YYYY-MM-DDThh:mm:ss
- ดาวน์โหลดไฟล์ตามขั้นตอนถ่ายโอนไฟล์ SAP ที่ได้รับอนุมัติ ตรวจสอบไฟล์แยกต่างหาก แล้วอัปโหลดไปยัง ProcessMind เป็นบันทึกเหตุการณ์ โดยกำหนด ProductionOrder เป็นรหัสเคส, ActivityName เป็นกิจกรรม และ EventTime เป็นเวลาประทับเหตุการณ์ ยืนยันว่า ProcessMind อ่านแถวตามข้อมูลที่มีอยู่ โดยไม่คาดหวังให้อนุมานกิจกรรมที่ขาดหายไป.
การกำหนดค่า
- ช่วงวันที่: สำหรับการวิเคราะห์ครั้งแรก ให้ดึงข้อมูลย้อนหลังแบบต่อเนื่องในช่วงสามถึงหกเดือน ขยายช่วงเมื่อประเมินประสิทธิภาพและปริมาณข้อมูลแล้วเท่านั้น รวมช่วงย้อนหลังสำหรับใบสั่งที่สร้างก่อนวันเริ่มต้นที่เลือก แต่ยังดำเนินการอยู่ในช่วงวิเคราะห์
- ตัวกรองการเลือกข้อมูล: รองรับตัวกรอง [Company Code], [Production Plant], [Order Type], [Material], [Production Order], สถานะใบสั่ง และวันที่สร้างหรือวันที่เปลี่ยนแปลง กำหนดฟิลด์ให้ตรงกับการติดตั้ง SAP ECC เนื่องจากฟิลด์ของใบสั่งผลิตอาจแตกต่างกันตามรุ่นและการปรับแต่งระบบ
- ขอบเขตเหตุการณ์: ดึงกิจกรรมที่จำเป็นทั้ง 12 รายการเป็นแถวเหตุการณ์อย่างชัดเจน ได้แก่ Production Order Created, Material Availability Checked, Production Order Released, Order Data Changed, Goods Issue Posted, First Confirmation Recorded, Intermediate Confirmation Recorded, Final Confirmation Recorded, Goods Receipt Posted, Order Technically Completed, Order Settlement Ran และ Order Cancellation Set
- แนวทางกำหนดเวลาประทับ: ให้ใช้วันที่และเวลาของเหตุการณ์จากระบบต้นทาง หากมีเฉพาะวันที่ ให้ระบุว่าความละเอียดของเวลาลดลง และใช้เวลาที่กำหนดไว้อย่างสม่ำเสมอ แทนการระบุเวลาที่ไม่มีอยู่จริง แปลงเวลาประทับทั้งหมดเป็นเขตเวลาที่ ProcessMind กำหนด
- การจัดการสถานะ: ใช้ประวัติสถานะที่มีเวลาประทับสำหรับกิจกรรมที่เกี่ยวข้องกับสถานะ กำหนดการจับคู่ค่าภายในของสถานะกับกิจกรรมทางธุรกิจตามการตั้งค่าสถานะระบบและการอนุมัติจากเจ้าของกระบวนการ
- การตรวจสอบความพร้อมใช้งาน: กำหนดแหล่งข้อมูลที่ได้รับอนุมัติสำหรับการดำเนินการตรวจสอบความพร้อมใช้งาน อย่าสร้างแถว Material Availability Checked จากการสร้างใบสั่ง การปล่อยใบสั่ง การจองวัสดุ หรือการเบิกสินค้าที่สำเร็จ เว้นแต่แหล่งข้อมูลที่ธุรกิจอนุมัติจะบันทึกการตรวจสอบนั้นไว้อย่างชัดเจน
- การจัดการการยืนยัน: กำหนดกฎแยกการยืนยันครั้งแรก ระหว่างทาง และครั้งสุดท้าย การยืนยันจะเป็นรายการสุดท้ายได้ก็ต่อเมื่อแหล่งข้อมูลระบุชัดเจนว่าเป็นรายการสุดท้าย หรือตรรกะการยืนยัน SAP ที่กำหนดค่าไว้ยืนยันว่ากระบวนการเสร็จสิ้น
- ปริมาณ: คงหน่วยวัดจากแหล่งข้อมูลไว้เมื่อทำได้ หากรวมปริมาณ ให้ระบุว่ารวมตามใบสั่ง วัสดุ การเคลื่อนไหว การยืนยัน หรือเหตุการณ์ DeliveredQuantity ควรหมายถึงปริมาณสินค้าสำเร็จรูปที่บันทึกรับแล้ว ไม่ใช่เพียงผลผลิตที่ยืนยัน เว้นแต่เจ้าของกระบวนการจะอนุมัติให้ใช้ความหมายดังกล่าว
- LastDataUpdate: กำหนดฟิลด์นี้เป็นเวลาประทับของการดึงข้อมูล หรือเวลาประทับการรีเฟรชจากระบบต้นทาง และใช้แนวทางเดียวกันกับทุกแถวในการดึงข้อมูลแต่ละครั้ง
- ประสิทธิภาพ: จำกัดช่วงการเลือกข้อมูล เลือกเฉพาะฟิลด์ที่จำเป็น ประมวลผลข้อมูลเป็นชุด ใช้การกรองที่ฐานข้อมูล หลีกเลี่ยงการอ่านฐานข้อมูลซ้ำภายในลูปขนาดใหญ่ และสร้างหรือใช้ดัชนีที่ได้รับอนุมัติผ่านกระบวนการดูแลฐานข้อมูล SAP เท่านั้น หากกังวลเรื่องการใช้หน่วยความจำ ให้เขียนผลลัพธ์ทีละส่วน
- ไฟล์ผลลัพธ์: กำหนดไดเรกทอรี application server ชื่อไฟล์เชิงตรรกะ ตัวคั่น การเข้ารหัส รูปแบบทศนิยม รูปแบบเวลาประทับ และการจัดการแถวส่วนหัวให้ตรงตามข้อกำหนดการอัปโหลดของ ProcessMind อย่าเปิดเผยข้อมูลรับรองในรายงานหรือไฟล์ผลลัพธ์
- ข้อกำหนดเบื้องต้น: ยืนยันว่า SAP ECC PP การจัดการสินค้าคงคลัง การยืนยัน การจัดการสถานะใบสั่งผลิต และข้อมูลการปิดบัญชีในการควบคุมต้นทุนเปิดใช้งานตามที่เกี่ยวข้อง ต้องอนุมัติสิทธิ์ที่จำเป็น การพัฒนาที่กำหนดเอง การขนส่งการเปลี่ยนแปลง การเข้าถึงไฟล์บน application server และสิทธิ์นำเข้าข้อมูล ProcessMind ก่อนเรียกใช้
- การกำหนดค่าเฉพาะระบบ: ต้องยืนยันชื่อตาราง ฟิลด์ รหัสสถานะ ออบเจ็กต์เอกสารการเปลี่ยนแปลง แหล่งข้อมูลการยืนยัน แหล่งข้อมูลการตรวจสอบความพร้อมใช้งาน และแหล่งข้อมูลการปิดบัญชีในระบบ SAP ECC เป้าหมาย หากการติดตั้งไม่มีแหล่งข้อมูลมาตรฐานที่เชื่อถือได้ ให้ใช้ [Configure based on your system].
ตัวอย่างคำค้น abap
REPORT [Your custom report name].
* This executable ABAP report is a complete extraction framework for the twelve required activities.
* Replace only the marked system-specific source sections, selection parameters, and file configuration.
* Confirm every table and field against the target SAP ECC system before activation.
PARAMETERS p_from TYPE sydatum OBLIGATORY.
PARAMETERS p_to TYPE sydatum OBLIGATORY.
PARAMETERS p_file TYPE string OBLIGATORY DEFAULT '[Application server file path]'.
PARAMETERS p_src TYPE string OBLIGATORY DEFAULT '[SAP ECC system identifier]'.
SELECT-OPTIONS s_werks FOR [Production plant field].
SELECT-OPTIONS s_aufnr FOR [Production order field].
SELECT-OPTIONS s_auart FOR [Production order type field].
SELECT-OPTIONS s_bukrs FOR [Company code field].
TYPES: BEGIN OF ty_event,
productionorder TYPE string,
activityname TYPE string,
eventtime TYPE string,
sourcesystem TYPE string,
lastdataupdate TYPE string,
productionplant TYPE string,
productcode TYPE string,
plannedquantity TYPE string,
deliveredquantity TYPE string,
actualstartdate TYPE string,
actualenddate TYPE string,
END OF ty_event.
DATA gt_events TYPE STANDARD TABLE OF ty_event WITH EMPTY KEY.
DATA gs_event TYPE ty_event.
DATA gv_update_timestamp TYPE string.
DATA gv_line TYPE string.
GET TIME STAMP FIELD DATA(gv_update_ts).
gv_update_timestamp = |{ gv_update_ts TIMESTAMP = ISO }|.
* Production Order Created
SELECT [Production order field], [Production plant field], [Product field], [Planned quantity field], [Creation date field], [Creation time field]
FROM [Production order header table]
INTO TABLE @DATA(lt_created)
WHERE [Creation date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks
AND [Production order type field] IN @s_auart
AND [Company code field] IN @s_bukrs.
LOOP AT lt_created ASSIGNING FIELD-SYMBOL(<created>).
CLEAR gs_event.
gs_event-productionorder = |{ <created>-[Production order field] }|.
gs_event-activityname = 'Production Order Created'.
gs_event-eventtime = |{ <created>-[Creation date field] } { <created>-[Creation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <created>-[Production plant field] }|.
gs_event-productcode = |{ <created>-[Product field] }|.
gs_event-plannedquantity = |{ <created>-[Planned quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Material Availability Checked
SELECT [Production order field], [Production plant field], [Product field], [Availability check date field], [Availability check time field]
FROM [Availability check source table]
INTO TABLE @DATA(lt_availability)
WHERE [Availability check date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_availability ASSIGNING FIELD-SYMBOL(<availability>).
CLEAR gs_event.
gs_event-productionorder = |{ <availability>-[Production order field] }|.
gs_event-activityname = 'Material Availability Checked'.
gs_event-eventtime = |{ <availability>-[Availability check date field] } { <availability>-[Availability check time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <availability>-[Production plant field] }|.
gs_event-productcode = |{ <availability>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Production Order Released
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field], [Planned quantity field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_released)
WHERE [Status field] = '[Released status code]'
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_released ASSIGNING FIELD-SYMBOL(<released>).
CLEAR gs_event.
gs_event-productionorder = |{ <released>-[Production order field] }|.
gs_event-activityname = 'Production Order Released'.
gs_event-eventtime = |{ <released>-[Status change date field] } { <released>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <released>-[Production plant field] }|.
gs_event-productcode = |{ <released>-[Product field] }|.
gs_event-plannedquantity = |{ <released>-[Planned quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Data Changed
SELECT [Production order field], [Change date field], [Change time field], [Production plant field], [Product field], [Changed field name]
FROM [Production order change document source table]
INTO TABLE @DATA(lt_changed)
WHERE [Change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Changed field name] IN ('[Planned quantity field]', '[Basic start date field]', '[Basic finish date field]', '[BOM field]', '[Routing field]').
LOOP AT lt_changed ASSIGNING FIELD-SYMBOL(<changed>).
CLEAR gs_event.
gs_event-productionorder = |{ <changed>-[Production order field] }|.
gs_event-activityname = 'Order Data Changed'.
gs_event-eventtime = |{ <changed>-[Change date field] } { <changed>-[Change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <changed>-[Production plant field] }|.
gs_event-productcode = |{ <changed>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Goods Issue Posted
SELECT [Production order field], [Posting date field], [Posting time field], [Production plant field], [Product field], [Quantity field]
FROM [Material document item source table]
INTO TABLE @DATA(lt_gi)
WHERE [Movement type field] IN ('[Goods issue movement type 1]', '[Goods issue movement type 2]')
AND [Posting date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_gi ASSIGNING FIELD-SYMBOL(<gi>).
CLEAR gs_event.
gs_event-productionorder = |{ <gi>-[Production order field] }|.
gs_event-activityname = 'Goods Issue Posted'.
gs_event-eventtime = |{ <gi>-[Posting date field] } { <gi>-[Posting time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <gi>-[Production plant field] }|.
gs_event-productcode = |{ <gi>-[Product field] }|.
gs_event-deliveredquantity = |{ <gi>-[Quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* First Confirmation Recorded
SELECT [Production order field], [Confirmation date field], [Confirmation time field], [Production plant field], [Product field], [Confirmed quantity field]
FROM [Production confirmation source table]
INTO TABLE @DATA(lt_confirmations)
WHERE [Confirmation date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
SORT lt_confirmations BY [Production order field] [Confirmation date field] [Confirmation time field].
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<confirmation>) GROUP BY <confirmation>-[Production order field] ASSIGNING FIELD-SYMBOL(<confirmation_group>).
LOOP AT GROUP <confirmation_group> ASSIGNING FIELD-SYMBOL(<first_confirmation>).
CLEAR gs_event.
gs_event-productionorder = |{ <first_confirmation>-[Production order field] }|.
gs_event-activityname = 'First Confirmation Recorded'.
gs_event-eventtime = |{ <first_confirmation>-[Confirmation date field] } { <first_confirmation>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <first_confirmation>-[Production plant field] }|.
gs_event-productcode = |{ <first_confirmation>-[Product field] }|.
gs_event-actualstartdate = gs_event-eventtime.
APPEND gs_event TO gt_events.
EXIT.
ENDLOOP.
ENDLOOP.
* Intermediate Confirmation Recorded
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<intermediate>) GROUP BY <intermediate>-[Production order field] ASSIGNING FIELD-SYMBOL(<intermediate_group>).
DATA(lv_intermediate_index) = 0.
DATA(lv_intermediate_count) = GROUP SIZE.
LOOP AT GROUP <intermediate_group> ASSIGNING FIELD-SYMBOL(<intermediate_row>).
lv_intermediate_index = lv_intermediate_index + 1.
IF lv_intermediate_index < lv_intermediate_count AND <intermediate_row>-[Final confirmation indicator field] <> '[Final confirmation value]'.
CLEAR gs_event.
gs_event-productionorder = |{ <intermediate_row>-[Production order field] }|.
gs_event-activityname = 'Intermediate Confirmation Recorded'.
gs_event-eventtime = |{ <intermediate_row>-[Confirmation date field] } { <intermediate_row>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <intermediate_row>-[Production plant field] }|.
gs_event-productcode = |{ <intermediate_row>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDIF.
ENDLOOP.
ENDLOOP.
* Final Confirmation Recorded
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<final>) WHERE [Final confirmation indicator field] = '[Final confirmation value]'.
CLEAR gs_event.
gs_event-productionorder = |{ <final>-[Production order field] }|.
gs_event-activityname = 'Final Confirmation Recorded'.
gs_event-eventtime = |{ <final>-[Confirmation date field] } { <final>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <final>-[Production plant field] }|.
gs_event-productcode = |{ <final>-[Product field] }|.
gs_event-actualenddate = gs_event-eventtime.
APPEND gs_event TO gt_events.
ENDLOOP.
* Goods Receipt Posted
SELECT [Production order field], [Posting date field], [Posting time field], [Production plant field], [Product field], [Quantity field]
FROM [Material document item source table]
INTO TABLE @DATA(lt_gr)
WHERE [Movement type field] IN ('[Goods receipt movement type 1]', '[Goods receipt movement type 2]')
AND [Posting date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_gr ASSIGNING FIELD-SYMBOL(<gr>).
CLEAR gs_event.
gs_event-productionorder = |{ <gr>-[Production order field] }|.
gs_event-activityname = 'Goods Receipt Posted'.
gs_event-eventtime = |{ <gr>-[Posting date field] } { <gr>-[Posting time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <gr>-[Production plant field] }|.
gs_event-productcode = |{ <gr>-[Product field] }|.
gs_event-deliveredquantity = |{ <gr>-[Quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Technically Completed
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_teco)
WHERE [Status field] = '[Technically completed status code]'
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_teco ASSIGNING FIELD-SYMBOL(<teco>).
CLEAR gs_event.
gs_event-productionorder = |{ <teco>-[Production order field] }|.
gs_event-activityname = 'Order Technically Completed'.
gs_event-eventtime = |{ <teco>-[Status change date field] } { <teco>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <teco>-[Production plant field] }|.
gs_event-productcode = |{ <teco>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Settlement Ran
SELECT [Production order field], [Settlement date field], [Settlement time field], [Production plant field], [Product field]
FROM [Order settlement source table]
INTO TABLE @DATA(lt_settlement)
WHERE [Settlement date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_settlement ASSIGNING FIELD-SYMBOL(<settlement>).
CLEAR gs_event.
gs_event-productionorder = |{ <settlement>-[Production order field] }|.
gs_event-activityname = 'Order Settlement Ran'.
gs_event-eventtime = |{ <settlement>-[Settlement date field] } { <settlement>-[Settlement time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <settlement>-[Production plant field] }|.
gs_event-productcode = |{ <settlement>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Cancellation Set
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_cancelled)
WHERE [Status field] IN ('[Cancellation status code]', '[Deletion status code]')
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_cancelled ASSIGNING FIELD-SYMBOL(<cancelled>).
CLEAR gs_event.
gs_event-productionorder = |{ <cancelled>-[Production order field] }|.
gs_event-activityname = 'Order Cancellation Set'.
gs_event-eventtime = |{ <cancelled>-[Status change date field] } { <cancelled>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <cancelled>-[Production plant field] }|.
gs_event-productcode = |{ <cancelled>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
SORT gt_events BY productionorder eventtime activityname.
DELETE ADJACENT DUPLICATES FROM gt_events COMPARING productionorder activityname eventtime productionplant productcode.
OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'The application server output file could not be opened' TYPE 'E'.
ENDIF.
TRANSFER 'ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdate,ProductionPlant,ProductCode,PlannedQuantity,DeliveredQuantity,ActualStartDate,ActualEndDate' TO p_file.
LOOP AT gt_events INTO gs_event.
gv_line = |{ gs_event-productionorder },{ gs_event-activityname },{ gs_event-eventtime },{ gs_event-sourcesystem },{ gs_event-lastdataupdate },{ gs_event-productionplant },{ gs_event-productcode },{ gs_event-plannedquantity },{ gs_event-deliveredquantity },{ gs_event-actualstartdate },{ gs_event-actualenddate }|.
TRANSFER gv_line TO p_file.
ENDLOOP.
CLOSE DATASET p_file.
MESSAGE |Event log written to { p_file }| TYPE 'S'. พร้อมเริ่มต้นหรือยัง?
ใช้เทมเพลตนี้เตรียมข้อมูลและเริ่มปรับปรุงกระบวนการวางแผนการผลิตของคุณ ดูข้อมูลเชิงลึกและปรับการปฏิบัติการให้คล่องตัวขึ้นได้ตั้งแต่วันนี้.
ปรับปรุงการวางแผนการผลิตเพื่อเพิ่มประสิทธิภาพ
ค้นหาจุดที่ทำงานไม่มีประสิทธิภาพ ลดระยะเวลาของวงจรการทำงาน 30% และทำงานให้ได้ตามเป้าหมาย.
ไม่ต้องใช้บัตรเครดิต เริ่มปรับปรุงกระบวนการได้วันนี้.