เมื่อ MES ยกเลิกการออกจากสถานี จะเรียก API นี้เพื่อแจ้ง ERP ให้ยกเลิกใบรายงานผลผลิตที่เกี่ยวข้อง และคืนค่าข้อมูลการรายงานผลผลิต ERP เมื่อได้รับจะยกเลิกหรือคืนค่าข้อมูลการรายงานผลผลิตนั้น
PRODUCTION_REPORTID มีค่าเท่านั้น
หากเมื่อออกจากสถานี ERP ยังไม่ได้ส่งเลขที่ใบรายงานกลับมา (TIMEOUT หรือล้มเหลว) การยกเลิกจะไม่สามารถแจ้ง ERP ให้คืนค่าได้
ผู้ใช้คลิก "ยกเลิกออกจากสถานี" ใน MES ระบบจะค้นหาเลขที่ใบรายงานแล้วเรียก ERP เพื่อยกเลิกใบรายงานนั้น
เมื่อยกเลิกหลายรายการออกจากสถานีพร้อมกัน ระบบจะเรียก ERP เพื่อยกเลิกใบรายงานที่เกี่ยวข้องทีละรายการ
เมื่อยกเลิกออกจากสถานีที่สถานีทำซ้ำ จะทริกเกอร์กระบวนการยกเลิกใบรายงานเช่นกัน
| ฟิลด์ | ชื่อฟิลด์ ERP | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|---|
| รหัสบริษัท | enterprise_no |
String | จำเป็น | รหัสองค์กร |
| รหัสโรงงาน | site_no |
String | จำเป็น | รหัสโรงงาน/สาขา |
| เลขที่ใบรายงาน | report_no |
String | จำเป็น | เลขที่ใบรายงานที่ต้องการยกเลิก (ประเภท-เลขที่) |
PDTYPE-PDNO เช่น: 10-20260319001
ค่านี้มาจาก SFT_OP_REALRUN.PRODUCTION_REPORTID หรือ SFT_WS_RUN.WR024
{
"enterprise_no": "COMP01",
"site_no": "SITE01",
"report_no": "10-20260319001"
}
<parameters> <parameter key="enterprise_no" type="string">COMP01</parameter> <parameter key="site_no" type="string">SITE01</parameter> <parameter key="report_no" type="string">10-20260319001</parameter> </parameters>
{
"code": 200,
"msg": "ยกเลิกใบรายงานสำเร็จ",
"ERPMessage": {
"description": "ดำเนินการสำเร็จ",
"report_no": "10-20260319001"
}
}
{
"code": 500,
"msg": "ยกเลิกใบรายงานล้มเหลว",
"ERPMessage": {
"description": "ใบรายงานได้รับการยืนยันแล้ว ไม่สามารถยกเลิกได้"
}
}
| ฟิลด์ | ประเภท | คำอธิบาย |
|---|---|---|
code |
Integer | 200=สำเร็จ, 500=ล้มเหลว |
msg |
String | ข้อความการดำเนินการ |
ERPMessage.description |
String | ข้อความรายละเอียดที่ ERP ส่งกลับมา |
หลังจากยกเลิกใบรายงานสำเร็จ MES จะล้างเลขที่ใบรายงานในบันทึกที่เกี่ยวข้อง:
-- ล้างเลขที่ใบรายงานใน SFT_OP_REALRUN
UPDATE SFT_OP_REALRUN
SET PRODUCTION_REPORTID = '',
PRODUCTION_REPORTSN = ''
WHERE ID = :KEYID
AND ERP_OPSEQ = :ERP_OPSEQ
AND SEQUENCE = :SEQUENCE
-- ล้างเลขที่ใบรายงานใน SFT_WS_RUN
UPDATE SFT_WS_RUN
SET WR024 = '',
WR025 = ''
WHERE (เงื่อนไขบันทึกเข้า-ออกสถานีที่เกี่ยวข้อง)
-- ลบส่วนหัวและรายละเอียดใบรายงาน (ขึ้นอยู่กับการตั้งค่าระบบ)
DELETE FROM SFT_SFCTE WHERE TE001 = :PDTYPE AND TE002 = :PDNO
DELETE FROM SFT_SFCTD WHERE TD001 = :PDTYPE AND TD002 = :PDNO
| ชื่อ API | ชื่องาน | สถานการณ์ที่ใช้ | ประเภทเอกสารที่ยกเลิก |
|---|---|---|---|
wo.work.report.data.process |
cancelProductionForm | ยกเลิกการรายงานผลผลิตทั่วไป | ใบรายงานผลผลิต |
outsourcing.process |
outsourcingProcess | ยกเลิกรับเข้าจากผู้รับจ้างช่วง (TRANSORDERTYPE=59) | ใบรับสินค้าจากผู้รับจ้างช่วง |
stockin.data.process |
cancelStockIn | ยกเลิกใบรับเข้าคลัง | ใบรับเข้าคลัง |
wo.scrap.data.process |
woScrapDataProcess | ยกเลิกรับเข้าของเสีย (TRANSORDERTYPE=58) | ใบของเสีย |
SFT_TRANSORDER_LINE.TRANSORDERTYPE:
| ตารางข้อมูล | คำอธิบาย | ฟิลด์ที่ได้รับผลกระทบ |
|---|---|---|
SFT_OP_REALRUN |
บันทึกการดำเนินงานกระบวนการผลิต | PRODUCTION_REPORTID, PRODUCTION_REPORTSN (ล้าง) |
SFT_WS_RUN |
บันทึกการดำเนินงานสถานีงาน | WR024, WR025 (ล้าง) |
SFT_SFCTD |
ส่วนหัวใบรายงาน | ลบทั้งแถวหรือทำเครื่องหมายยกเลิก |
SFT_SFCTE |
รายละเอียดใบรายงาน | ลบทั้งแถวหรือทำเครื่องหมายยกเลิก |
| ฟังก์ชัน | พาธไฟล์ | บรรทัด |
|---|---|---|
| จุดเริ่มต้นยกเลิกออกจากสถานี | SFT_core/src/com/dci/sft/update/GeneralUpdater.java | 1571-1605 |
| การเรียก API ยกเลิก | SFT_ERPIntegrate/src/com/dci/sft/erp/XmlToERP_handler.java | 159-237 |
| ล้างเลขที่ใบรายงาน | SFT_core/src/com/dci/sft/jsonMappingHibernate/TransOrderDataToJson.java | 1530-1580 |
| สถานการณ์ข้อผิดพลาด | การตอบกลับ ERP | วิธีการจัดการ MES |
|---|---|---|
| ใบรายงานได้รับการยืนยันแล้ว | code=500, ใบรายงานได้รับการยืนยันแล้ว | แสดงข้อความข้อผิดพลาด ต้องจัดการด้วยตนเอง |
| ใบรายงานไม่มีอยู่ | code=500, ใบรายงานไม่มีอยู่ | ล้างเลขที่ใบรายงาน MES ดำเนินการยกเลิกต่อไป |
| การเชื่อมต่อหมดเวลา | SocketTimeoutException | บันทึก LOG ต้องยกเลิกเพิ่มเติมด้วยตนเอง |
// ไฟล์บันทึก: logs/ERPReturnErrorRec.log
[ERP_SEND_ERROR] taskName=cancelProductionForm, errorType=SocketTimeoutException, errorMsg=Read timed out
[ERP_SEND_ERROR] เนื้อหาที่ส่ง={"report_no":"10-20260319001"}
PRODUCTION_REPORTID ว่างเปล่า ไม่สามารถเรียก ERP ยกเลิกได้