Mẫu dữ liệu lập kế hoạch sản xuất
Mẫu dữ liệu lập kế hoạch sản xuất
- Các thuộc tính nên dùng để phân tích quy trình lập kế hoạch sản xuất
- Các hoạt động lập kế hoạch sản xuất chính cần theo dõi
- Hướng dẫn chi tiết cách trích xuất dữ liệu từ SAP S/4HANA
Thuộc tính lập kế hoạch sản xuất
| Tên | Mô tả | ||
|---|---|---|---|
| Hoạt động Activity | Tên sự kiện hoặc tác vụ cụ thể diễn ra tại một thời điểm trong quy trình lập kế hoạch sản xuất. | ||
| Mô tả Thuộc tính này ghi lại các bước và mốc quan trọng trong vòng đời lệnh sản xuất. Ví dụ: 'Đã tạo lệnh sản xuất', 'Đã kiểm tra khả năng cung ứng vật tư', 'Đã bắt đầu sản xuất' và 'Đã quyết toán tài chính lệnh sản xuất'. Mỗi hoạt động tương ứng với một hành động hoặc thay đổi trạng thái cụ thể được ghi nhận trong hệ thống. Phân tích trình tự và tần suất của các hoạt động này là trọng tâm của process mining. Việc này giúp trực quan hóa luồng quy trình, phát hiện sai lệch so với quy trình chuẩn và xác định những hoạt động gây chậm trễ hoặc thường phải làm lại, chẳng hạn như 'Đã điều chỉnh kế hoạch sản xuất'. Vì sao điều này quan trọng Thuộc tính này xác định các bước của quy trình, giúp khám phá và trực quan hóa workflow sản xuất thực tế cùng những biến thể của quy trình. Lấy dữ liệu ở đâu Được xác định từ các thay đổi trạng thái trong những bảng như JEST và JCDS, mã giao dịch được sử dụng (ví dụ: CO01 để tạo lệnh) hoặc bản ghi xác nhận cụ thể trong AFRU. Ví dụ Tạo lệnh sản xuấtĐã phát hành lệnh sản xuấtBắt đầu sản xuấtĐã nhập xác nhận cuối cùngĐã ghi nhận nhập kho thành phẩm | |||
| Lệnh sản xuất ProductionOrder | Mã định danh duy nhất của lệnh sản xuất, dùng làm mã hồ sơ chính cho quy trình lập kế hoạch sản xuất. | ||
| Mô tả Số lệnh sản xuất là khóa duy nhất do SAP S/4HANA tạo để quản lý và theo dõi mọi hoạt động liên quan đến việc sản xuất một số lượng sản phẩm cụ thể. Số này liên kết các sự kiện liên quan, từ lập kế hoạch và phát hành lệnh đến thực hiện và quyết toán cuối cùng. Trong process mining, thuộc tính này rất cần thiết để nhóm mọi sự kiện liên quan thành một trường hợp quy trình xuyên suốt. Phân tích theo lệnh sản xuất giúp đo lường các KPI quan trọng như thời gian chu kỳ, mức độ tuân thủ lịch trình và xác định điểm nghẽn ảnh hưởng đến từng đợt sản xuất. Vì sao điều này quan trọng Đây là thuộc tính nền tảng kết nối mọi bước trong quy trình, cho phép phân tích toàn bộ vòng đời sản xuất ở cấp hồ sơ, từ đầu đến cuối. Lấy dữ liệu ở đâu Đây là số lệnh sản xuất, thường có trong các bảng SAP như AFKO (trường AUFNR) và AFPO. Ví dụ 100056710008341001299 | |||
| Thời gian bắt đầu StartTime | Dấu thời gian cho biết một hoạt động hoặc sự kiện cụ thể bắt đầu khi nào. | ||
| Mô tả Thuộc tính này ghi ngày giờ của từng sự kiện trong quy trình sản xuất. Đây là cơ sở thời gian cho mọi phân tích quy trình dựa trên thời lượng. Thời gian bắt đầu rất quan trọng để tính khoảng thời gian giữa các hoạt động, đo tổng thời gian chu kỳ của lệnh sản xuất và xác định thời điểm diễn ra sự kiện. Thuộc tính này giúp phân tích điểm nghẽn, thời gian chờ và mức độ tuân thủ lịch trình bằng cách so sánh dấu thời gian thực tế với ngày dự kiến. Vì sao điều này quan trọng Thuộc tính này cung cấp trình tự thời gian của các sự kiện, giúp phân tích hiệu suất quy trình, thời lượng và điểm nghẽn. Lấy dữ liệu ở đâu Thông tin này thường có trong các bảng chứng từ thay đổi (CDHDR/CDPOS) đối với thay đổi trạng thái, bảng xác nhận (AFRU) đối với các bước thực hiện và bảng tiêu đề (AFKO) đối với ngày tạo. Ví dụ 2023-10-26T09:00:00Z2023-10-26T14:30:00Z2023-10-27T08:15:00Z | |||
| Hệ thống nguồn SourceSystem | Hệ thống trích xuất dữ liệu lập kế hoạch sản xuất. | ||
| Mô tả Thuộc tính này xác định nguồn gốc dữ liệu, rất cần thiết khi có nhiều hệ thống được tích hợp. Với quy trình này, nguồn thường là một phiên bản SAP S/4HANA cụ thể. Trong phân tích dữ liệu nói chung, việc biết hệ thống nguồn giúp đảm bảo tính toàn vẹn của dữ liệu và cung cấp bối cảnh phù hợp khi kết hợp dữ liệu từ nhiều nguồn. Đây là siêu dữ liệu cơ bản phục vụ quản trị và truy xuất nguồn gốc dữ liệu. Vì sao điều này quan trọng Thuộc tính này cung cấp siêu dữ liệu quan trọng cho việc quản trị dữ liệu, giúp làm rõ nguồn gốc và bối cảnh của dữ liệu quy trình. Lấy dữ liệu ở đâu Đây thường là giá trị tĩnh được thêm trong quá trình trích xuất dữ liệu để xác định SAP S/4HANA client và mã hệ thống (SID). Ví dụ S4P_100S4H_PRD_200S4Q_300 | |||
| Lần cập nhật dữ liệu gần nhất LastDataUpdate | Dấu thời gian cho biết lần gần nhất dữ liệu được làm mới hoặc trích xuất từ hệ thống nguồn. | ||
| Mô tả Thuộc tính này ghi ngày giờ của lần lấy dữ liệu gần nhất. Đây là siêu dữ liệu quan trọng, cho người dùng biết dữ liệu đang phân tích mới đến mức nào. Biết thời điểm cập nhật gần nhất giúp diễn giải kết quả phân tích chính xác. Thông tin này cho biết bạn đang xem dữ liệu gần thời gian thực hay ảnh chụp dữ liệu tại một thời điểm cụ thể. Điều đó ảnh hưởng đến mức độ phù hợp của các phát hiện và quyết định dựa trên dữ liệu. Vì sao điều này quan trọng Thuộc tính này giúp người dùng biết dữ liệu có còn mới hay không, yếu tố quan trọng để đưa ra quyết định kinh doanh chính xác và phù hợp. Lấy dữ liệu ở đâu Dấu thời gian này được tạo và thêm trong quá trình trích xuất, chuyển đổi và tải dữ liệu (ETL). Ví dụ 2024-05-21T02:00:00Z2024-05-22T02:00:00Z2024-05-23T02:00:00Z | |||
| Mã vật tư MaterialNumber | Mã định danh duy nhất của sản phẩm được sản xuất theo lệnh sản xuất. | ||
| Mô tả Mã vật tư xác định sản phẩm mà lệnh sản xuất cần tạo ra. Mã này liên kết quy trình sản xuất với dữ liệu chủ của vật tư, bao gồm định mức nguyên vật liệu (BOM) và thông tin về quy trình sản xuất. Phân tích quy trình theo mã vật tư giúp xác định sản phẩm nào thường bị chậm trễ, phải làm lại hoặc thiếu vật tư. Từ đó, bạn có thể cải tiến quy trình cho từng sản phẩm, chẳng hạn như điều chỉnh thông số lập kế hoạch hoặc cải thiện nguồn cung cho một số linh kiện. Vì sao điều này quan trọng Thuộc tính này cho phép lọc và phân tích theo sản phẩm được sản xuất, qua đó phát hiện điểm kém hiệu quả hoặc điểm nghẽn riêng của từng sản phẩm. Lấy dữ liệu ở đâu Có trong bảng hạng mục lệnh sản xuất AFPO (trường MATNR). Ví dụ RM-1001FG-2050SA-3100-B | |||
| Ngày kết thúc dự kiến PlannedEndDate | Ngày dự kiến hoàn tất lệnh sản xuất theo kế hoạch ban đầu. | ||
| Mô tả Ngày kết thúc dự kiến là hạn hoàn tất tất cả hoạt động sản xuất của một lệnh. Ngày này được xác định trong giai đoạn lập lịch sản xuất. Thuộc tính này rất cần thiết để đo mức độ tuân thủ lịch trình. So sánh ngày kết thúc dự kiến với thời điểm hoàn tất thực tế giúp doanh nghiệp tính KPI Tỷ lệ tuân thủ lịch sản xuất và xác định các lệnh bị trễ. Phân tích này rất quan trọng để cải thiện độ chính xác của kế hoạch và mức độ hài lòng của khách hàng. Vì sao điều này quan trọng Thuộc tính này làm mốc để đo mức độ tuân thủ lịch trình, giúp đánh giá độ chính xác của kế hoạch và hiệu quả thực hiện. Lấy dữ liệu ở đâu Có trong bảng tiêu đề lệnh sản xuất AFKO (trường GLTRP). Ví dụ 2023-11-152023-12-012024-01-20 | |||
| Nhà máy Plant | Cơ sở hoặc địa điểm sản xuất nơi thực hiện lệnh sản xuất. | ||
| Mô tả Nhà máy là đơn vị tổ chức trong SAP, đại diện cho một địa điểm hoặc cơ sở sản xuất. Mỗi lệnh sản xuất được gán cho một nhà máy cụ thể, nơi diễn ra các hoạt động sản xuất. Thuộc tính này rất quan trọng khi so sánh các địa điểm sản xuất. Phân đoạn dữ liệu quy trình theo nhà máy giúp doanh nghiệp so sánh hiệu suất, phát hiện vấn đề hoặc cách làm hiệu quả tại từng cơ sở, đồng thời hiểu rõ khác biệt giữa các khu vực về hiệu quả, công suất và mức độ tuân thủ tiêu chuẩn. Vì sao điều này quan trọng Thuộc tính này giúp so sánh hiệu suất giữa các địa điểm sản xuất, từ đó xác định và chia sẻ cách làm hiệu quả hoặc xử lý vấn đề riêng tại từng nơi. Lấy dữ liệu ở đâu Có trong bảng tiêu đề lệnh sản xuất AFKO (trường DWERK). Ví dụ 100017102000 | |||
| Trạng thái lệnh sản xuất OrderStatus | Trạng thái xử lý hiện tại của lệnh sản xuất, chẳng hạn như Đã tạo, Đã phát hành hoặc Đã hoàn tất kỹ thuật. | ||
| Mô tả Trạng thái lệnh sản xuất cho biết lệnh đang ở giai đoạn nào trong vòng đời. Đây là thông tin tổng hợp từ các trạng thái hệ thống và trạng thái do người dùng đặt cho lệnh. Các trạng thái phổ biến gồm CRTD (Đã tạo), REL (Đã phát hành), CNF (Đã xác nhận), TECO (Đã hoàn tất kỹ thuật) và CLSD (Đã đóng). Phân tích trạng thái hiện tại của các lệnh giúp nắm tình hình công việc đang thực hiện. Trong process mining, theo dõi các lần chuyển trạng thái theo thời gian sẽ tạo nhật ký hoạt động, giúp xem chi tiết luồng quy trình và thời gian ở từng giai đoạn. Vì sao điều này quan trọng Thuộc tính này cho biết khái quát lệnh đang ở giai đoạn nào trong vòng đời và là cơ sở để xác định trình tự hoạt động phục vụ process mining. Lấy dữ liệu ở đâu Được xác định từ trạng thái hệ thống lưu trong bảng JEST, liên kết qua số đối tượng trong AFKO (trường OBJNR). Ví dụ CRTDRELTECOCLSD | |||
| Trung tâm làm việc WorkCenter | Máy móc, nhóm máy hoặc khu vực lắp ráp cụ thể phụ trách một công đoạn. | ||
| Mô tả Trung tâm làm việc là một đơn vị vận hành cụ thể trong nhà máy, nơi thực hiện một bước sản xuất. Đó có thể là một máy, một dây chuyền sản xuất hoặc một nhóm nhân viên. Phân tích dữ liệu quy trình theo trung tâm làm việc giúp xác định điểm nghẽn công suất và phân bổ tài nguyên hợp lý hơn. Qua đó, bạn có thể biết trung tâm nào đang quá tải, trung tâm nào chưa được sử dụng hết công suất và công đoạn nào thường xuyên bị chậm trong giai đoạn sản xuất. Đây là dữ liệu quan trọng cho bảng điều khiển Xác định điểm nghẽn công suất. Vì sao điều này quan trọng Thuộc tính này giúp xác định máy móc hoặc dây chuyền sản xuất đang gây điểm nghẽn, từ đó cải thiện đúng trọng tâm công suất và mức sử dụng tài nguyên. Lấy dữ liệu ở đâu Có trong dữ liệu công đoạn của lệnh sản xuất, bảng AFVC (trường ARBPL). Ví dụ WC-ASSEMBLY-01WC-MILLING-05WC-PACKING | |||
| Có làm lại IsRework | Cờ cho biết lệnh sản xuất có phát sinh công việc làm lại hoặc điều chỉnh kế hoạch đáng kể sau khi bắt đầu hay không. | ||
| Mô tả Thuộc tính dạng đúng/sai này được xác định để nhận diện các lệnh sản xuất có hành động khắc phục hoặc thay đổi kế hoạch sau khi sản xuất đã bắt đầu. Điều này có thể được kích hoạt bởi hoạt động làm lại cụ thể hoặc sự kiện 'Đã điều chỉnh kế hoạch sản xuất' diễn ra sau 'Đã bắt đầu sản xuất'. Cờ này rất quan trọng để tính KPI Tỷ lệ làm lại trong sản xuất và phục vụ bảng điều khiển Làm lại và điều chỉnh sản xuất. Cờ giúp lọc và phân tích các trường hợp có vấn đề, qua đó tìm nguyên nhân gốc rễ của lỗi chất lượng hoặc sai lệch quy trình dẫn đến việc làm lại tốn kém. Vì sao điều này quan trọng Thuộc tính này tách riêng các trường hợp phải làm lại, giúp phân tích có trọng tâm để tìm hiểu và giảm lỗi chất lượng, sai lệch quy trình cùng chi phí phát sinh. Lấy dữ liệu ở đâu Trường được tính toán. Đặt thành true nếu hoạt động 'Đã điều chỉnh kế hoạch sản xuất' diễn ra sau hoạt động 'Đã bắt đầu sản xuất' trong cùng một hồ sơ, hoặc nếu sử dụng loại lệnh làm lại cụ thể. Ví dụ truefalse | |||
| Đúng hạn IsOnTime | Cờ cho biết lệnh sản xuất hoàn tất vào hoặc trước ngày kết thúc dự kiến. | ||
| Mô tả Thuộc tính dạng đúng/sai được tính toán này đo trực tiếp mức độ tuân thủ lịch trình bằng cách so sánh ngày hoàn tất thực tế với ngày kết thúc dự kiến. Thuộc tính cho biết rõ từng lệnh sản xuất có đúng hạn hay không. Thuộc tính này là cơ sở để tính KPI Tỷ lệ tuân thủ lịch sản xuất. Thuộc tính giúp phân nhóm lệnh đúng hạn và lệnh trễ, từ đó xác định những đặc điểm hoặc luồng quy trình thường gắn với chậm trễ. Vì sao điều này quan trọng Thuộc tính này cung cấp thước đo rõ ràng, đơn giản về mức độ tuân thủ lịch trình của từng lệnh, giúp phân tích nguyên nhân gốc rễ của chậm trễ. Lấy dữ liệu ở đâu Trường được tính toán. Đặt thành true nếu dấu thời gian của hoạt động 'Lệnh đã hoàn tất kỹ thuật' nhỏ hơn hoặc bằng thuộc tính 'Ngày kết thúc dự kiến'. Ví dụ truefalse | |||
| Loại lệnh sản xuất OrderType | Phân loại lệnh sản xuất, xác định mục đích và cách hệ thống xử lý lệnh. | ||
| Mô tả Loại lệnh sản xuất là yếu tố cấu hình quan trọng trong SAP PP, quyết định cách hệ thống xử lý lệnh. Loại lệnh kiểm soát dãy số, lựa chọn dữ liệu chủ, thông số tính giá thành và quy tắc quyết toán. Ví dụ gồm lệnh sản xuất tiêu chuẩn, lệnh làm lại hoặc lệnh sản xuất mẫu. Phân tích quy trình theo loại lệnh giúp so sánh hiệu suất và luồng xử lý giữa các loại hình sản xuất. Qua đó, bạn có thể phát hiện lệnh làm lại mất nhiều thời gian hơn đáng kể hoặc một số loại lệnh thường phải điều chỉnh kế hoạch, từ đó cải tiến quy trình đúng trọng tâm. Vì sao điều này quan trọng Thuộc tính này cho phép phân tích theo mục đích kinh doanh của lệnh, giúp so sánh sản xuất tiêu chuẩn, làm lại và các quy trình khác. Lấy dữ liệu ở đâu Có trong bảng tiêu đề lệnh sản xuất AFKO (trường AUART). Ví dụ PP01PP03ZP01 | |||
| Mức độ ưu tiên sản xuất ProductionPriority | Mã hoặc giá trị được gán cho lệnh sản xuất để thể hiện mức độ khẩn cấp hoặc tầm quan trọng. | ||
| Mô tả Người lập kế hoạch và điều độ dùng mức độ ưu tiên sản xuất để sắp xếp thứ tự lệnh, nhất là khi tài nguyên có hạn. Lệnh có mức ưu tiên cao hơn thường cần được xử lý trước lệnh có mức ưu tiên thấp hơn. Phân tích thuộc tính này giúp đánh giá mức độ tuân thủ ưu tiên đã gán tại xưởng. Bảng điều khiển Mức độ nhất quán trong ưu tiên sản xuất so sánh thứ tự xử lý với mức ưu tiên được gán để phát hiện điểm không nhất quán. Nhờ đó, doanh nghiệp có thể cải thiện kỷ luật lập lịch và đảm bảo kế hoạch phù hợp hơn với thực tế sản xuất. Vì sao điều này quan trọng Thuộc tính này giúp xác định lịch sản xuất có tuân theo ưu tiên kinh doanh hay không, để các lệnh quan trọng được xử lý nhanh như dự kiến. Lấy dữ liệu ở đâu Đây thường là trường tùy chỉnh hoặc được xác định dựa trên các thông số khác của lệnh. Vị trí cụ thể tùy thuộc vào cấu hình. Ví dụ CaoTrung bìnhThấp15 | |||
| Ngày bắt đầu dự kiến PlannedStartDate | Ngày dự kiến bắt đầu lệnh sản xuất theo kế hoạch ban đầu. | ||
| Mô tả Ngày bắt đầu dự kiến là ngày mục tiêu để bắt đầu các hoạt động sản xuất của một lệnh. Đây là kết quả quan trọng của quy trình lập lịch. Thuộc tính này làm mốc ban đầu để phân tích mức độ tuân thủ lịch trình. So sánh ngày bắt đầu dự kiến với thời điểm bắt đầu thực tế giúp xác định các chậm trễ ở giai đoạn đầu, chẳng hạn như chậm chuẩn bị vật tư hoặc phát hành lệnh. Những chậm trễ này có thể ảnh hưởng dây chuyền đến toàn bộ tiến độ sản xuất. Vì sao điều này quan trọng Thuộc tính này làm mốc để đo mức độ đúng hạn khi bắt đầu, giúp xác định chậm trễ ở các giai đoạn trước sản xuất như phát hành lệnh và chuẩn bị vật tư. Lấy dữ liệu ở đâu Có trong bảng tiêu đề lệnh sản xuất AFKO (trường GSTRP). Ví dụ 2023-11-102023-11-252024-01-15 | |||
| Người dùng User | Mã hệ thống của người dùng đã tạo, thay đổi hoặc xác nhận một sự kiện trong lệnh sản xuất. | ||
| Mô tả Thuộc tính này ghi lại mã người dùng SAP gắn với một giao dịch hoặc thay đổi trạng thái cụ thể, chẳng hạn như phát hành lệnh hoặc nhập xác nhận. Nhờ đó, bạn có thể truy xuất các thao tác đã thực hiện trong hệ thống. Phân tích hoạt động theo người dùng giúp hiểu cách phân bổ khối lượng công việc, xác định nhu cầu đào tạo và đảm bảo tuân thủ quy trình. Ví dụ, bạn có thể phát hiện người dùng nào thường xuyên điều chỉnh kế hoạch hoặc nhóm nào có liên quan đến tình trạng chậm trễ. Vì sao điều này quan trọng Thuộc tính này giúp xác định trách nhiệm và phân tích khối lượng công việc, hành vi của từng người dùng cũng như nhu cầu đào tạo. Lấy dữ liệu ở đâu Thường có trong tiêu đề chứng từ thay đổi (CDHDR, trường UNAME) hoặc bản ghi xác nhận (AFRU, trường PERNR là mã nhân sự). Ví dụ CB9980000021JSMITHPLANNER01 | |||
| Số lượng đã xác nhận TotalConfirmedQuantity | Tổng số lượng vật tư được xác nhận là đã sản xuất theo lệnh. | ||
| Mô tả Thuộc tính này thể hiện tổng số lượng thành phẩm hoặc bán thành phẩm đã được báo cáo qua các lần xác nhận sản xuất. Thuộc tính theo dõi tiến độ của lệnh so với mục tiêu hoàn thành. So sánh số lượng đã xác nhận với số lượng dự kiến giúp theo dõi tiến độ sản xuất và phát hiện vấn đề về sản lượng đạt được hoặc chênh lệch. Đây là thước đo cơ bản về sản lượng đầu ra, được dùng trong nhiều phép tính hiệu suất, bao gồm tỷ lệ phế phẩm và hiệu quả. Vì sao điều này quan trọng Thuộc tính này theo dõi sản lượng thực tế của lệnh sản xuất, cần thiết để giám sát tiến độ, tính sản lượng đạt được và phát hiện chênh lệch. Lấy dữ liệu ở đâu Được tổng hợp từ các bản ghi xác nhận trong AFRU (trường LMNGA cho số lượng sản phẩm đạt). Ví dụ 9801000501200 | |||
| Thời gian kết thúc EndTime | Dấu thời gian cho biết một hoạt động hoặc sự kiện cụ thể hoàn tất khi nào. | ||
| Mô tả Thuộc tính này ghi ngày giờ hoàn tất của từng sự kiện. Khi kết hợp với Thời gian bắt đầu, thuộc tính này cho biết thời lượng hoạt động. Thời gian kết thúc rất quan trọng để tính chính xác thời gian xử lý của từng hoạt động, một dữ liệu đầu vào quan trọng cho phân tích công suất và mức sử dụng tài nguyên. Thuộc tính này giúp phân biệt thời gian làm việc thực tế với thời gian nhàn rỗi hoặc chờ, từ đó xác định điểm nghẽn chính xác hơn. Vì sao điều này quan trọng Thuộc tính này giúp tính chính xác thời lượng hoạt động, cần thiết để phân tích hiệu quả sử dụng tài nguyên và xác định điểm nghẽn trong quy trình. Lấy dữ liệu ở đâu Có trong bảng xác nhận (AFRU) đối với các bước thực hiện. Với những sự kiện khác, thời gian này có thể trùng với Thời gian bắt đầu nếu sự kiện diễn ra tức thời. Ví dụ 2023-10-26T09:45:00Z2023-10-26T15:00:00Z2023-10-27T10:30:00Z | |||
| Trạng thái sẵn có của vật tư MaterialAvailabilityStatus | Cho biết tất cả vật tư cần thiết cho lệnh sản xuất đã sẵn sàng hay chưa. | ||
| Mô tả Trạng thái này phản ánh kết quả kiểm tra mức độ sẵn có của vật tư cho một lệnh sản xuất. Kết quả có thể cho biết tất cả vật tư đã sẵn sàng, còn thiếu một số vật tư hoặc chưa được kiểm tra. Trạng thái 'thiếu vật tư' là dấu hiệu quan trọng cho thấy có thể xảy ra chậm trễ. Thuộc tính này rất cần thiết cho bảng điều khiển Phân tích tác động của tình trạng thiếu vật tư. Thuộc tính giúp định lượng chậm trễ do thiếu vật tư bằng cách đối chiếu trạng thái thiếu với khoảng thời gian từ lúc phát hành lệnh đến khi bắt đầu sản xuất. Cải thiện chỉ số này giúp quy trình sản xuất diễn ra suôn sẻ hơn. Vì sao điều này quan trọng Thuộc tính này giúp giải thích trực tiếp chậm trễ giữa lúc phát hành lệnh và bắt đầu sản xuất, đồng thời định lượng tác động của vấn đề chuỗi cung ứng đến hoạt động sản xuất. Lấy dữ liệu ở đâu Đây là trạng thái thường được xác định từ trạng thái tổng hợp của các vật tư thành phần. Có thể tìm thấy trong trạng thái hệ thống (JEST), với các mã như 'MSPT' (thiếu vật tư). Ví dụ Đủ vật tưThiếu vật tưChưa kiểm tra | |||
Hoạt động lập kế hoạch sản xuất
| Hoạt động | Mô tả | ||
|---|---|---|---|
| Bắt đầu sản xuất | Cho biết các hoạt động sản xuất thực tế của lệnh đã bắt đầu. Thông thường, có thể suy ra sự kiện này từ xác nhận đầu tiên tại xưởng hoặc lần xuất linh kiện đầu tiên cho lệnh. | ||
| Vì sao điều này quan trọng Hoạt động này đánh dấu bước chuyển từ lập kế hoạch sang thực hiện. Đây là mốc cần thiết để theo dõi mức độ bám sát lịch bằng cách so sánh ngày bắt đầu thực tế với ngày dự kiến. Lấy dữ liệu ở đâu Đây là sự kiện được suy ra từ dữ liệu. Thông thường, sự kiện được xác định từ dấu thời gian sớm nhất của lần ghi nhận luân chuyển hàng hóa (bảng MSEG, loại luân chuyển 261) hoặc lần ghi nhận thời gian (bảng AFRU) liên quan đến lệnh. Thu thập Dấu thời gian sớm nhất của lệnh trong AFRU (xác nhận) hoặc MSEG (luân chuyển hàng hóa). Loại sự kiện inferred | |||
| Đã điều chỉnh kế hoạch sản xuất | Thể hiện thay đổi đáng kể đối với lệnh sản xuất sau khi phát hành, chẳng hạn thay đổi số lượng, ngày tháng hoặc định mức nguyên vật liệu. Có thể ghi nhận thay đổi này bằng cách phân tích chứng từ thay đổi. | ||
| Vì sao điều này quan trọng Việc điều chỉnh thường xuyên có thể cho thấy kế hoạch thiếu ổn định hoặc nhu cầu biến động. Hoạt động này là cơ sở để tính KPI tỷ lệ điều chỉnh kế hoạch sản xuất và giúp xác định nguồn gây biến động quy trình. Lấy dữ liệu ở đâu Suy ra từ nhật ký thay đổi được ghi trong bảng CDHDR (tiêu đề chứng từ thay đổi) và CDPOS (các mục chứng từ thay đổi) cho đối tượng lệnh sản xuất (AUFK hoặc AFPO). Các thay đổi sau ngày phát hành được tính là điều chỉnh. Thu thập Tìm các thay đổi trong CDHDR/CDPOS đối với những trường chính, chẳng hạn số lượng và ngày tháng, sau sự kiện phát hành. Loại sự kiện inferred | |||
| Đã ghi nhận nhập kho thành phẩm | Sự kiện này ghi nhận việc nhập thành phẩm từ dây chuyền sản xuất vào kho. Đây là thao tác chính thức làm tăng mức tồn kho của vật liệu đã sản xuất. | ||
| Vì sao điều này quan trọng Đây là cột mốc quan trọng, đánh dấu sản lượng sản xuất đã hoàn tất. Mốc này thường được xem là điểm kết thúc chu kỳ sản xuất để đo tỷ lệ giao hàng đúng hạn và tổng thời gian hoàn thành. Lấy dữ liệu ở đâu Đây là bút toán tài chính được ghi trực tiếp trong các bảng chứng từ vật liệu MSEG (cấp mục) và MKPF (cấp tiêu đề), thường dùng loại luân chuyển 101. Các chứng từ này được liên kết với lệnh sản xuất. Thu thập Tìm chứng từ vật liệu trong MSEG được liên kết với lệnh và có loại luân chuyển 101. Loại sự kiện explicit | |||
| Đã nhập xác nhận cuối cùng | Hoạt động này ghi nhận xác nhận cho công đoạn cuối cùng trong lộ trình của lệnh sản xuất. Điều đó có nghĩa là tất cả các bước sản xuất theo kế hoạch đã hoàn tất tại xưởng. | ||
| Vì sao điều này quan trọng Xác nhận cuối cùng là cột mốc quan trọng cho biết công việc sản xuất thực tế đã kết thúc. Mốc này thường được dùng làm thời điểm kết thúc chính xác hơn để đo chu kỳ tại xưởng, trước khi ghi nhận nhập kho thành phẩm. Lấy dữ liệu ở đâu Suy ra từ dữ liệu xác nhận trong bảng AFRU. Đây là bản ghi xác nhận cho trình tự công đoạn cuối cùng (AFVC-VPLNR) có bật chỉ báo 'xác nhận cuối cùng' (AFRUD-AUERU). Thu thập Tìm lần xác nhận công đoạn cuối cùng trong AFRU có bật cờ xác nhận cuối cùng. Loại sự kiện inferred | |||
| Đã phát hành lệnh sản xuất | Đây là cột mốc quan trọng, khi lệnh sản xuất được phê duyệt và sẵn sàng để thực hiện tại xưởng. Sau khi phát hành, có thể bắt đầu các bước xuất hàng, xác nhận và những hoạt động thực hiện khác. | ||
| Vì sao điều này quan trọng Sự kiện này đánh dấu thời điểm chính thức bắt đầu quy trình sản xuất có thể thực hiện và là mốc quan trọng để đo thời gian hoàn thành. Thời gian từ lúc tạo đến lúc phát hành là KPI quan trọng để đánh giá hiệu quả trước sản xuất. Lấy dữ liệu ở đâu Người dùng hoặc công việc hệ thống kích hoạt việc phát hành, làm cho trạng thái chuyển thành REL. Thay đổi trạng thái này được ghi kèm dấu thời gian trong bảng JCDS. Ngày phát hành cũng thường được lưu trong AFKO-FTRMI. Thu thập Dấu thời gian khi trạng thái chuyển thành 'REL' trong bảng JCDS. Loại sự kiện inferred | |||
| Lệnh đã hoàn tất về mặt kỹ thuật | Đây là bước đóng lệnh về mặt hành chính, ngăn các thay đổi tiếp theo về hậu cần như luân chuyển hàng hóa hoặc xác nhận. Xét về hậu cần, lệnh được xem là đã hoàn tất. | ||
| Vì sao điều này quan trọng TECO là mốc kết thúc chính thức của quy trình sản xuất và rất quan trọng để tính tổng thời gian chu kỳ lệnh sản xuất. Trạng thái này cho biết mọi hoạt động hậu cần đã hoàn tất và lệnh sẵn sàng quyết toán tài chính. Lấy dữ liệu ở đâu Sự kiện này được kích hoạt khi người dùng đặt trạng thái thành TECO (Technically Completed). Thay đổi trạng thái được ghi kèm dấu thời gian trong bảng JCDS. Thu thập Dấu thời gian khi trạng thái chuyển thành 'TECO' trong bảng JCDS. Loại sự kiện inferred | |||
| Tạo lệnh sản xuất | Đây là bước tạo lệnh sản xuất ban đầu trong hệ thống, đóng vai trò là yêu cầu chính thức để sản xuất một số lượng sản phẩm xác định. Sự kiện này được ghi nhận rõ khi người dùng lưu lệnh mới và đặt trạng thái ban đầu là CRTD (Created). | ||
| Vì sao điều này quan trọng Đánh dấu thời điểm bắt đầu vòng đời lệnh sản xuất. Phân tích thời gian từ lúc tạo đến lúc phát hành giúp phát hiện chậm trễ trong khâu hành chính hoặc lập kế hoạch trước khi chính thức lên lịch sản xuất. Lấy dữ liệu ở đâu Sự kiện này được ghi trong bảng AUFK (dữ liệu chính của lệnh) với ngày tạo (ERDAT). Trạng thái tạo (CRTD) được ghi trong bảng JEST và JCDS, liên kết qua mã đối tượng của lệnh (OBJNR). Thu thập Dấu thời gian từ AUFK-ERDAT hoặc nhật ký thay đổi trạng thái thành 'CRTD' trong JCDS. Loại sự kiện explicit | |||
| Đã hủy lệnh sản xuất | Thể hiện việc hủy lệnh sản xuất trước khi hoàn tất. Đây là trạng thái kết thúc thay thế, không thành công của quy trình. | ||
| Vì sao điều này quan trọng Phân tích các lệnh bị hủy có thể giúp phát hiện vấn đề trong lập kế hoạch nhu cầu, dữ liệu chính hoặc quy trình bán hàng. Tỷ lệ hủy cao có thể cho thấy vấn đề mang tính hệ thống cần được xử lý. Lấy dữ liệu ở đâu Sự kiện này được suy ra khi trạng thái hệ thống CACL (Cancellation) được đặt trong bảng JCDS. Ngoài ra, cờ xóa (AUFK-LOEKZ) cũng có thể cho biết lệnh đã bị hủy. Thu thập Dấu thời gian khi trạng thái chuyển thành 'CACL' trong JCDS hoặc khi cờ xóa được đặt trong AUFK. Loại sự kiện inferred | |||
| Đã kiểm tra khả năng cung ứng vật liệu | Thể hiện thao tác của hệ thống hoặc người dùng để kiểm tra xem tất cả linh kiện cần cho lệnh sản xuất có sẵn đúng số lượng và đúng thời điểm hay không. Thông thường, hệ thống tự động kiểm tra khi tạo hoặc phát hành lệnh, hoặc người dùng kiểm tra thủ công và cập nhật trạng thái lệnh. | ||
| Vì sao điều này quan trọng Phát hiện sớm tình trạng thiếu vật liệu rất quan trọng để chủ động lập kế hoạch. Theo dõi hoạt động này giúp hiểu rõ khả năng cung ứng vật liệu ảnh hưởng thế nào đến việc phát hành lệnh và bắt đầu sản xuất đúng hạn. Lấy dữ liệu ở đâu Suy ra từ trạng thái lệnh. Trạng thái như MACM (Material committed) hoặc thay đổi ngày có thể cung ứng vật liệu (AFKO-MSERF) cho biết việc kiểm tra đã được thực hiện. Không có trạng thái thiếu vật liệu (MSPT) cũng có thể cho thấy vật liệu sẵn có. Thu thập Suy ra từ các thay đổi trạng thái liên quan đến việc cam kết vật liệu hoặc thực hiện giao dịch COMAC. Loại sự kiện inferred | |||
| Đã lập kế hoạch nhu cầu công suất | Hoạt động này gồm lên lịch các công đoạn của lệnh sản xuất và kiểm tra công suất tại các khu vực làm việc cần thiết. Hệ thống đánh giá tải công suất của từng khu vực và cân bằng tải nếu được cấu hình, từ đó xác định ngày sản xuất. | ||
| Vì sao điều này quan trọng Bước này rất quan trọng để đảm bảo lịch sản xuất khả thi. Phân tích thời lượng và kết quả giúp phát hiện điểm nghẽn về công suất và lập kế hoạch tài nguyên chính xác hơn. Lấy dữ liệu ở đâu Thông thường, có thể suy ra hoạt động này từ trạng thái hệ thống cho biết lệnh đã được lên lịch, chẳng hạn SETC (Scheduling carried out). Việc điền ngày bắt đầu và kết thúc theo lịch (AUFK-GSTRP, AUFK-GLTRP) cũng cho thấy hoạt động đã hoàn tất. Thu thập Suy ra từ ngày đã lên lịch được điền trong AUFK/AFKO hoặc trạng thái liên quan đến lập lịch trong JEST. Loại sự kiện inferred | |||
| Đã nhập xác nhận sản xuất | Thể hiện việc ghi nhận tiến độ của một công đoạn cụ thể trong lệnh sản xuất. Thông tin gồm số lượng sản phẩm đã làm, phế phẩm và thời gian làm việc tại một khu vực. | ||
| Vì sao điều này quan trọng Xác nhận giúp theo dõi tiến độ tại xưởng theo thời gian thực và rất cần thiết để nắm tình trạng sản xuất. Phân tích tần suất và thời điểm xác nhận giúp theo dõi luồng công việc, đồng thời phát hiện chậm trễ giữa các công đoạn. Lấy dữ liệu ở đâu Mỗi lần xác nhận được ghi thành một mục trong bảng AFRU (xác nhận hoàn thành lệnh), kèm dấu thời gian (BUDAT, UZEIT) và thông tin chi tiết về công đoạn. Thu thập Được ghi thành chứng từ trong bảng AFRU. Loại sự kiện explicit | |||
| Đã xảy ra dừng ngoài kế hoạch | Sự kiện được tính toán này thể hiện một khoảng thời gian nhàn rỗi đáng kể trong giai đoạn thực hiện sản xuất. Đây không phải sự kiện được hệ thống ghi nhận trực tiếp, mà được suy ra bằng cách tìm khoảng cách thời gian dài giữa các lần xác nhận sản xuất liên tiếp. | ||
| Vì sao điều này quan trọng Giúp theo dõi các gián đoạn ngoài kế hoạch như máy móc hỏng hoặc vấn đề chất lượng. Phát hiện các lần dừng thường xuyên hoặc kéo dài là yếu tố then chốt để cải thiện độ ổn định và sản lượng tại xưởng. Lấy dữ liệu ở đâu Sự kiện này được tính bằng cách phân tích dấu thời gian của các hoạt động 'Đã nhập xác nhận sản xuất' liên tiếp trong bảng AFRU. Khoảng cách vượt quá ngưỡng đã định sẽ được đánh dấu là dừng ngoài kế hoạch. Thu thập Tính chênh lệch thời gian giữa các dấu thời gian xác nhận liên tiếp (AFRU-BUDAT/UZEIT). Loại sự kiện calculated | |||
| Đã xảy ra thiếu vật liệu | Sự kiện này cho biết quy trình sản xuất bị ảnh hưởng hoặc dừng do thiếu một hay nhiều linh kiện cần thiết. Hệ thống đặt trạng thái cụ thể cho lệnh để ghi nhận tình trạng này. | ||
| Vì sao điều này quan trọng Theo dõi tình trạng thiếu vật liệu rất quan trọng trong phân tích ảnh hưởng của việc thiếu vật liệu. Việc này giúp định lượng chậm trễ do vấn đề chuỗi cung ứng và cải thiện kế hoạch vật liệu. Lấy dữ liệu ở đâu Sự kiện này được suy ra khi trạng thái 'MSPT' (Material shortage) được kích hoạt cho lệnh sản xuất. Có thể tìm dấu thời gian thay đổi trạng thái này trong bảng JCDS. Thu thập Dấu thời gian khi trạng thái chuyển thành 'MSPT' trong bảng JCDS. Loại sự kiện inferred | |||
| Lệnh đã đóng về mặt tài chính | Đây là bước đóng cuối cùng, khi lệnh được quyết toán và không thể ghi thêm bút toán tài chính. Điều này đánh dấu kết thúc vòng đời lệnh xét theo góc độ kiểm soát và kế toán. | ||
| Vì sao điều này quan trọng Hoạt động này thường nằm ngoài phạm vi phân tích sản xuất thuần túy, nhưng giúp bạn có cái nhìn xuyên suốt từ đầu đến cuối. Hoạt động này có thể giúp phân tích thời gian từ khi hoàn tất về mặt hậu cần (TECO) đến khi đóng về mặt tài chính. Lấy dữ liệu ở đâu Sự kiện này được kích hoạt khi người dùng đặt trạng thái thành CLSD (Closed). Thay đổi trạng thái được ghi kèm dấu thời gian trong bảng JCDS. Thu thập Dấu thời gian khi trạng thái chuyển thành 'CLSD' trong bảng JCDS. Loại sự kiện inferred | |||
Hướng dẫn trích xuất
Các bước
- Kiểm tra điều kiện tiên quyết: Đảm bảo bạn có tài khoản SAP S/4HANA với quyền phù hợp để truy cập các khung nhìn Core Data Services (CDS) cần thiết. Các khung nhìn gồm
I_ProductionOrder,I_ProdOrdConfirmation,I_MaterialDocumentItem,I_ObjectStatusvàI_ChangeDocument. Bạn cũng cần quyền truy cập vào môi trường chạy SQL kết nối với cơ sở dữ liệu SAP HANA, chẳng hạn SAP HANA Studio, DBeaver hoặc công cụ ETL bên ngoài. - Xác định thông tin hệ thống: Ghi lại mã định danh hệ thống nguồn sẽ dùng cho thuộc tính
SourceSystem. Đây là tên logic do bạn đặt để xác định nguồn dữ liệu, chẳng hạnS4H_PROD. - Thiết lập tham số trích xuất: Trước khi chạy truy vấn, hãy xác định các tham số chính, gồm ngày bắt đầu và ngày kết thúc của kỳ trích xuất, cùng các bộ lọc cụ thể như
PlanthoặcProductionOrderTypeđể giới hạn phạm vi dữ liệu. - Chuẩn bị truy vấn SQL: Sao chép toàn bộ truy vấn SQL trong phần
queryvào ứng dụng SQL hoặc công cụ trích xuất dữ liệu bạn chọn. - Cấu hình giá trị giữ chỗ: Thay các giá trị giữ chỗ trong truy vấn bằng tham số của bạn, gồm
_StartDate,_EndDatevà mã định danh hệ thống nguồn. Điều chỉnh ngưỡng cho sự kiệnUnplanned Halt Occurred(ví dụ:'24:00:00') cho phù hợp với hoạt động của doanh nghiệp. - Chạy truy vấn trích xuất: Chạy tập lệnh SQL đã cấu hình trên cơ sở dữ liệu SAP S/4HANA. Với tập dữ liệu lớn trong thời gian dài, hãy cân nhắc trích xuất thành từng đợt nhỏ, chẳng hạn theo tháng, để tránh ảnh hưởng đến hiệu suất.
- Kiểm tra dữ liệu ban đầu: Sau khi truy vấn chạy xong, kiểm tra nhanh kết quả. Xem số hàng, đảm bảo có đủ các cột và xác nhận cột
Activitycó nhiều sự kiện như dự kiến. - Xác thực dữ liệu: Làm theo các bước trong phần
validationStepsđể kiểm tra kỹ hơn. Đối chiếu một số lệnh sản xuất với thông tin tương ứng trong SAP bằng giao dịchCO03để xác nhận nhật ký sự kiện được trích xuất chính xác. - Xuất sang CSV: Xuất kết quả cuối cùng thành tệp CSV. Đảm bảo tệp dùng mã hóa UTF-8 để tránh lỗi ký tự.
- Chuẩn bị tải lên: Xác nhận tiêu đề cột trong CSV khớp với tên thuộc tính bắt buộc:
ProductionOrder,Activity,StartTime,SourceSystemvàLastDataUpdate. Trước khi tải lên công cụ process mining, hãy đảm bảo cộtStartTimedùng định dạng dấu thời gian chuẩn, chẳng hạn ISO 8601 (YYYY-MM-DDTHH:MM:SS).
Cấu hình
- Các CDS view chính: Việc trích xuất chủ yếu dựa vào một nhóm CDS view tiêu chuẩn, cung cấp góc nhìn có cấu trúc, hướng đến nghiệp vụ về các bảng SAP bên dưới. Các view chính gồm:
I_ProductionOrder: Dữ liệu cấp tiêu đề và sự kiện tạo lệnh.I_ProdOrdConfirmation: Tất cả xác nhận công đoạn.I_MaterialDocumentItem: Các luồng hàng hóa như xuất và nhập.I_ObjectStatus: Đọc các thay đổi trạng thái của lệnh sản xuất.I_ChangeDocumentvà các view liên quan: Ghi nhận thay đổi ở những trường quan trọng của lệnh.
- Lọc theo khoảng ngày: Cần lọc theo khoảng ngày để kiểm soát khối lượng dữ liệu. Truy vấn mẫu dùng
CreationDatecủa lệnh sản xuất. Với lần phân tích đầu tiên, thường nên lấy dữ liệu trong 3 đến 6 tháng. - Bộ lọc nghiệp vụ chính: Để thu hẹp tập dữ liệu, hãy lọc theo các thuộc tính tổ chức hoặc dữ liệu chủ quan trọng. Các bộ lọc thường dùng gồm:
Plant: Phân tích một cơ sở sản xuất cụ thể.ProductionOrderType: Tập trung vào lệnh sản xuất tiêu chuẩn, lệnh làm lại hoặc loại lệnh khác.CompanyCode: Giới hạn dữ liệu cho một pháp nhân cụ thể.
- Ngưỡng dừng máy ngoài kế hoạch: Truy vấn có logic xác định sự kiện
Unplanned Halt Occurred. Logic này cần ngưỡng thời gian để xác định khoảng gián đoạn đáng kể giữa các công đoạn. Hãy đặt giá trị dựa trên thời gian chu kỳ sản xuất thông thường và quy tắc nghiệp vụ. - Điều kiện về quyền truy cập: Người dùng SAP chạy truy vấn phải có quyền xem tất cả CDS view và các bảng bên dưới. Thiếu quyền có thể khiến kết quả trống hoặc không đầy đủ.
Truy vấn mẫu sql
WITH BaseOrders AS (
SELECT
ProductionOrder,
Material AS MaterialNumber,
ProductionPlant AS Plant,
CreationDate,
CreationTime,
BasicEndDate AS PlannedEndDate,
TechnicalCompletionDate,
LastChangeDateTime
FROM I_ProductionOrder
-- P_CreationDateFrom and P_CreationDateTo are placeholders for your date range
WHERE CreationDate BETWEEN '[_StartDate]' AND '[_EndDate]'
-- Add other filters as needed, for example:
-- AND ProductionPlant IN ('[Your_Plant_1]', '[Your_Plant_2]')
-- AND ProductionOrderType = '[Your_Order_Type]'
)
SELECT
bo.ProductionOrder,
'Production Order Created' AS Activity,
TO_TIMESTAMP(bo.CreationDate || ' ' || LPAD(bo.CreationTime, 6, '0'), 'YYYYMMDD HH24MISS') AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
'CRTD' AS OrderStatus
FROM BaseOrders bo
UNION ALL
-- System status changes like Released, Technically Completed, Closed, Cancelled, Material Shortage
SELECT
os.ObjectInternalID AS ProductionOrder,
CASE os.SystemStatus
WHEN 'I0002' THEN 'Production Order Released'
WHEN 'I0043' THEN 'Material Availability Checked' -- Status: MACM (Material committed)
WHEN 'I0045' THEN 'Order Technically Completed'
WHEN 'I0046' THEN 'Order Financially Closed'
WHEN 'I0047' THEN 'Production Order Cancelled'
WHEN 'I0010' THEN 'Material Shortage Occurred' -- Status: MSPT (Material shortage)
END AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus IN ('I0002', 'I0043', 'I0045', 'I0046', 'I0047', 'I0010') AND os.StatusIsInactive = ''
UNION ALL
-- Production Started, inferred from the first goods issue or first confirmation
SELECT
s.ProductionOrder,
'Production Started' AS Activity,
s.StartEventTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
s.MaterialNumber,
s.Plant,
NULL AS WorkCenter,
s.PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
bo.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime)) AS StartEventTime,
ROW_NUMBER() OVER(PARTITION BY bo.ProductionOrder ORDER BY MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime))) as rn
FROM BaseOrders bo
LEFT JOIN I_MaterialDocumentItem gm ON bo.ProductionOrder = gm.ProductionOrder AND gm.GoodsMovementType IN ('261', '262') -- Goods Issue
LEFT JOIN I_ProdOrdConfirmation cf ON bo.ProductionOrder = cf.ProductionOrder
WHERE gm.ProductionOrder IS NOT NULL OR cf.ProductionOrder IS NOT NULL
GROUP BY bo.ProductionOrder, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate
) s
WHERE s.rn = 1
UNION ALL
-- Production Confirmation Entered (for each confirmation)
SELECT
cf.ProductionOrder,
'Production Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
UNION ALL
-- Final Confirmation Entered
SELECT
cf.ProductionOrder,
'Final Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
WHERE cf.IsFinalConfirmation = 'X'
UNION ALL
-- Unplanned Halt Occurred (derived from gaps between confirmations)
SELECT
ProductionOrder,
'Unplanned Halt Occurred' AS Activity,
PreviousConfirmationTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
MaterialNumber,
Plant,
WorkCenter,
PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
cf.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
cf.WorkCenter,
cf.ConfirmationDateTime,
LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime) AS PreviousConfirmationTime,
(SECONDS_BETWEEN(LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime), cf.ConfirmationDateTime) / 3600.0) as HoursDiff
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
) AS gaps
WHERE gaps.HoursDiff > 24 -- Configurable threshold in hours, e.g. 24 hours
UNION ALL
-- Goods Receipt Posted
SELECT
gm.ProductionOrder,
'Goods Receipt Posted' AS Activity,
gm.PostingTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_MaterialDocumentItem gm
JOIN BaseOrders bo ON gm.ProductionOrder = bo.ProductionOrder
WHERE gm.GoodsMovementType = '101'
UNION ALL
-- Capacity Requirements Planned (using Release event as a proxy)
SELECT
os.ObjectInternalID AS ProductionOrder,
'Capacity Requirements Planned' AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus = 'I0002' AND os.StatusIsInactive = '' -- Status 'REL' (Released)
UNION ALL
-- Production Plan Adjusted
SELECT
ch.ObjectValue AS ProductionOrder,
'Production Plan Adjusted' AS Activity,
ch.CreationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL as WorkCenter,
bo.PlannedEndDate,
NULL as OrderStatus
FROM I_ChangeDocument AS ch
JOIN BaseOrders bo ON ch.ObjectValue = bo.ProductionOrder
WHERE ch.ChangeDocumentObject = 'PRODORDER'
-- Monitoring changes in key fields like Total Quantity (GAMNG) or Basic Finish Date (GLTRP)
AND ch.FieldName IN ('GAMNG', 'GLTRP')
GROUP BY ch.ObjectValue, ch.CreationDateTime, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate Các bước
- Xác nhận bạn có quyền chỉ đọc trực tiếp vào lược đồ SAP HANA chứa dữ liệu lệnh sản xuất. Đồng thời, xác định chủ sở hữu lược đồ, cách xử lý client, quy ước dấu thời gian và mô hình phân quyền. Dùng SAP HANA Database Explorer hoặc ứng dụng SQL đã được phê duyệt. Trước khi hoàn tất truy vấn, hãy xác minh phiên bản SAP S/4HANA liên quan và phạm vi lập kế hoạch sản xuất đã kích hoạt.
- Cấu hình chuỗi kết nối, thông tin đăng nhập, tên lược đồ, giá trị client, ngày bắt đầu và ngày kết thúc trích xuất, cùng các bộ lọc riêng của công ty. Truy vấn bên dưới dùng AUFK, AFPO, JEST và JCDS, đồng thời tham chiếu AFKO, AFVC, AFRU, RESB, MSEG, CDHDR và CDPOS. Trước khi chạy, hãy xác nhận các đối tượng này có sẵn trong hệ thống và kiểm tra định nghĩa trường, vì có thể có khác biệt giữa các tiện ích mở rộng, khung nhìn tương thích và phiên bản.
- Chạy truy vấn trong SAP HANA Database Explorer hoặc công cụ chạy SQL đã được phê duyệt. Truy vấn tạo một hàng cho mỗi hoạt động được trích xuất rõ ràng, rồi kết hợp các hàng hoạt động bằng UNION ALL. Truy vấn không dựa vào ProcessMind để suy luận sự kiện.
- Xem lại dữ liệu nguồn và điều chỉnh các biểu thức được đánh dấu là phụ thuộc hệ thống nếu cần. Đặc biệt, hãy xác nhận mã trạng thái dùng cho tình trạng sẵn có của vật tư, lập kế hoạch năng lực, hoàn tất kỹ thuật, khóa sổ tài chính và hủy. Xác nhận đối tượng chứng từ thay đổi và tên trường dùng để nhận diện các điều chỉnh kế hoạch sản xuất.
- Xác thực việc chuyển đổi dấu thời gian và lọc client. Hệ thống SAP có thể lưu ngày và giờ ở các trường riêng. Một số hệ thống dùng UTC, trong khi hệ thống khác dùng giờ địa phương của nhà máy hoặc hệ thống. Đảm bảo các giá trị
StartTimesau chuyển đổi dùng cùng một múi giờ và loại bỏ ngày SAP không hợp lệ hoặc ngày khởi tạo. - Xuất kết quả thành tệp phẳng được ProcessMind hỗ trợ, ưu tiên CSV hoặc văn bản phân tách bằng dấu phân cách, mã hóa UTF-8. Giữ nguyên chính xác tên cột đầu ra: ProductionOrder, Activity, StartTime, SourceSystem, LastDataUpdate, MaterialNumber, Plant, WorkCenter, PlannedEndDate và OrderStatus.
- Sắp xếp các hàng đã xuất theo ProductionOrder và StartTime. Nếu quy trình tải lên hỗ trợ, hãy thêm tiêu chí sắp xếp phụ ổn định cho các dấu thời gian trùng nhau. Giữ một hàng cho mỗi sự kiện, kể cả các lần xác nhận lặp lại và thay đổi trạng thái lặp lại nếu chúng tương ứng với các bản ghi nguồn riêng biệt.
- Tải tệp lên ProcessMind và ánh xạ ProductionOrder làm mã định danh trường hợp, Activity làm hoạt động và StartTime làm dấu thời gian sự kiện. Ánh xạ các cột còn lại thành thuộc tính sự kiện hoặc trường hợp theo cấu hình nhập dữ liệu của ProcessMind. Xác nhận cả 14 nhãn hoạt động được giữ nguyên chính xác như truy vấn tạo ra.
Cấu hình
- Phạm vi ngày: Bắt đầu với khoảng thời gian cuốn chiếu từ ba đến sáu tháng. Dùng khoảng thời gian ngắn hơn để kiểm thử ban đầu, chỉ mở rộng sau khi đã xác thực số hàng và hiệu suất truy vấn.
- Tham số trích xuất: Thay [Your schema name], [Your client], [Extraction start date], [Extraction end date] và [Your source system name] bằng giá trị trong môi trường của bạn. Chỉ áp dụng bộ lọc riêng của công ty sau khi xác nhận các trường tổ chức liên quan và giá trị của chúng.
- Cấu hình trạng thái: Xác minh chính xác mã trạng thái SAP và mã định danh đối tượng trạng thái được dùng trong hệ thống cho CRTD, phát hành, tình trạng sẵn có của vật tư, lập kế hoạch năng lực, hoàn tất kỹ thuật, khóa sổ tài chính và hủy. Hồ sơ trạng thái và phần tùy chỉnh có thể làm thay đổi các mã hiện có.
- Chứng từ thay đổi: Xác nhận đối tượng chứng từ thay đổi của lệnh sản xuất, tên bảng, tên trường và định dạng giá trị dùng cho thay đổi số lượng, ngày tháng, BOM và quy trình công nghệ. Truy vấn xem các bản ghi CDHDR và CDPOS khớp điều kiện là bằng chứng điều chỉnh kế hoạch.
- Xử lý dấu thời gian: Chuẩn hóa mọi dấu thời gian nguồn về cùng một múi giờ. Xác nhận trường ngày và giờ có được lưu riêng hay không, dấu thời gian dùng giờ địa phương hay UTC, và ngày khởi tạo được biểu diễn như thế nào.
- Hiệu suất: Giới hạn trích xuất theo ngày tạo lệnh hoặc một trường ngày của lệnh sản xuất có chỉ mục khác. Lọc theo client, chỉ chọn các cột cần thiết và chạy vào khung giờ phù hợp cho báo cáo. Với tập dữ liệu lớn, hãy trích xuất theo tháng hoặc theo khoảng lệnh sản xuất và lưu kết quả theo từng đợt.
- Đối tượng cơ sở dữ liệu: Xác nhận AUFK, AFPO, JEST, JCDS, AFKO, AFVC, AFRU, RESB, MSEG, CDHDR và CDPOS có sẵn và có thể đọc trong lược đồ đã chọn. Nếu khung nhìn hoặc trường khác với phiên bản của bạn, hãy thay bằng đối tượng tương ứng đã được phát hành hoặc phê duyệt.
- Quyền truy cập: Cần có quyền đọc lược đồ và các đối tượng SAP HANA đã chọn, cùng quyền chạy SQL. Quy trình quản trị của bạn cũng có thể yêu cầu quyền truy cập ứng dụng SAP.
- Phạm vi nghiệp vụ: Dữ liệu lập kế hoạch và thực hiện sản xuất, dữ liệu luân chuyển hàng tồn kho, lịch sử trạng thái và chứng từ thay đổi phải được lưu giữ trong khoảng thời gian đã chọn. Bản ghi đã lưu trữ hoặc xóa sẽ không được trả về.
- Ánh xạ ProcessMind: Cấu hình ProductionOrder làm mã định danh trường hợp, Activity làm hoạt động và StartTime làm dấu thời gian sự kiện. Không nên kỳ vọng ProcessMind tự tạo các hoạt động còn thiếu từ thuộc tính.
Truy vấn mẫu sql
WITH
params AS (
SELECT
'[Your client]' AS mandt,
TO_DATE('[Extraction start date]', 'YYYY-MM-DD') AS date_from,
TO_DATE('[Extraction end date]', 'YYYY-MM-DD') AS date_to,
'[Your source system name]' AS source_system,
CURRENT_UTCTIMESTAMP AS last_data_update
FROM DUMMY
),
orders AS (
SELECT
a.mandt,
LTRIM(a.aufnr, '0') AS production_order,
a.aufnr AS production_order_raw,
a.erdat AS order_created_date,
a.erfzeit AS order_created_time,
a.auart AS order_type,
a.werks AS plant,
a.objnr AS object_number,
a.ktext AS order_text,
p.matnr AS material_number,
p.psmng AS planned_quantity,
p.wemng AS delivered_quantity,
k.gstrp AS planned_start_date,
k.gltrp AS planned_end_date,
k.ftrmi AS release_date,
k.ftrmp AS release_time,
k.gamng AS total_order_quantity,
k.plnbez AS header_material_number,
k.plnty AS task_list_type,
k.plnnr AS task_list_group,
k.plnal AS task_list_group_counter
FROM [Your schema name].AUFK a
LEFT JOIN [Your schema name].AFPO p
ON p.mandt = a.mandt
AND p.aufnr = a.aufnr
LEFT JOIN [Your schema name].AFKO k
ON k.mandt = a.mandt
AND k.aufnr = a.aufnr
CROSS JOIN params x
WHERE a.mandt = x.mandt
AND a.erdat >= x.date_from
AND a.erdat < ADD_DAYS(x.date_to, 1)
),
status_history AS (
SELECT
o.*,
j.stat,
j.inact,
j.chgnr,
j.udate AS status_date,
j.utime AS status_time,
c.usnam AS status_user,
c.chind AS status_change_indicator
FROM orders o
INNER JOIN [Your schema name].JEST j
ON j.mandt = o.mandt
AND j.objnr = o.object_number
LEFT JOIN [Your schema name].JCDS c
ON c.mandt = j.mandt
AND c.objnr = j.objnr
AND c.stat = j.stat
AND c.chgnr = j.chgnr
WHERE COALESCE(j.inact, '') <> 'X'
),
operations AS (
SELECT
o.production_order,
o.mandt,
v.vornr,
v.arbid,
v.steus,
v.ltxa1,
v.aufpl,
v.aplzl,
cr.name1 AS work_center
FROM orders o
LEFT JOIN [Your schema name].AFVC v
ON v.mandt = o.mandt
AND v.aufpl = (SELECT MAX(k2.aufpl) FROM [Your schema name].AFKO k2 WHERE k2.mandt = o.mandt AND k2.aufnr = o.production_order_raw)
LEFT JOIN [Your schema name].CRHD cr
ON cr.mandt = v.mandt
AND cr.objty = 'A'
AND cr.objid = v.arbid
),
confirmations AS (
SELECT
o.production_order,
o.mandt,
r.rmzhl,
r.vornr,
r.budat AS confirmation_date,
r.ersda AS entry_date,
r.erzet AS entry_time,
r.ism01,
r.ism02,
r.ism03,
r.ism04,
r.ism05,
r.ism06,
r.xmnga,
r.stzhl,
r.stzhl AS reversal_counter,
r.lmnga AS confirmed_quantity,
r.xmnge AS scrap_quantity,
r.aufpl,
r.aplzl,
op.work_center
FROM orders o
INNER JOIN [Your schema name].AFRU r
ON r.mandt = o.mandt
AND r.aufnr = o.production_order_raw
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.mandt = r.mandt
AND op.vornr = r.vornr
),
first_confirmation AS (
SELECT production_order, MIN(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM confirmations
GROUP BY production_order
),
last_confirmation AS (
SELECT production_order, MAX(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS final_time
FROM confirmations
GROUP BY production_order
),
first_goods_issue AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('261', '262')
GROUP BY o.production_order
),
first_receipt AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS receipt_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('101', '102')
GROUP BY o.production_order
),
plan_changes AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(h.udate, 'YYYYMMDD') || LPAD(TO_VARCHAR(h.utime), 6, '0'), 'YYYYMMDDHH24MISS')) AS adjustment_time
FROM orders o
INNER JOIN [Your schema name].CDHDR h
ON h.mandant = o.mandt
AND h.objectid = o.production_order_raw
INNER JOIN [Your schema name].CDPOS p
ON p.mandant = h.mandant
AND p.objectclas = h.objectclas
AND p.objectid = h.objectid
AND p.changenr = h.changenr
WHERE h.objectclas IN ('ORDER', 'PP_ORDER')
AND p.tabname IN ('AFKO', 'AFPO', 'AFVC', 'RESB')
AND p.fname IN ('GAMNG', 'PSMNG', 'GSTRP', 'GLTRP', 'MATNR', 'BDMNG', 'VORNR')
GROUP BY o.production_order
),
status_times AS (
SELECT
production_order,
MIN(CASE WHEN stat IN ('I0001', 'CRTD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS created_status_time,
MIN(CASE WHEN stat IN ('I0002', 'REL') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS released_time,
MIN(CASE WHEN stat IN ('I0003', 'MATC', 'MANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS material_available_time,
MIN(CASE WHEN stat IN ('I0004', 'CAPC', 'CAPA') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS capacity_planned_time,
MIN(CASE WHEN stat IN ('I0045', 'TECO') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS technically_completed_time,
MIN(CASE WHEN stat IN ('I0046', 'CLSD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS financially_closed_time,
MIN(CASE WHEN stat IN ('I0076', 'DLFL', 'CANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS cancelled_time
FROM status_history
GROUP BY production_order
),
material_shortages AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(j.status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(j.status_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS shortage_time
FROM status_history j
INNER JOIN orders o
ON o.production_order = j.production_order
WHERE j.stat IN ('I0042', 'MANC', 'MSHT')
GROUP BY o.production_order
),
capacity_times AS (
SELECT
production_order,
MIN(COALESCE(released_time, created_status_time)) AS capacity_time
FROM status_times
GROUP BY production_order
),
base_attributes AS (
SELECT
o.production_order,
o.material_number,
o.plant,
COALESCE(op.work_center, '') AS work_center,
o.planned_end_date,
COALESCE(st.stat, '') AS current_status
FROM orders o
LEFT JOIN status_history st
ON st.production_order = o.production_order
AND st.inact = ''
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.vornr = (SELECT MIN(op2.vornr) FROM operations op2 WHERE op2.production_order = o.production_order)
),
events AS (
SELECT o.production_order, 'Production Order Created' AS activity, COALESCE(st.created_status_time, TO_TIMESTAMP(TO_VARCHAR(o.order_created_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(o.order_created_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time FROM orders o LEFT JOIN status_times st ON st.production_order = o.production_order
UNION ALL
SELECT production_order, 'Material Availability Checked', material_available_time FROM status_times WHERE material_available_time IS NOT NULL
UNION ALL
SELECT production_order, 'Capacity Requirements Planned', capacity_time FROM capacity_times WHERE capacity_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Released', released_time FROM status_times WHERE released_time IS NOT NULL
UNION ALL
SELECT o.production_order, 'Production Started', LEAST(COALESCE(fc.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS')), COALESCE(fg.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS'))) FROM orders o LEFT JOIN first_confirmation fc ON fc.production_order = o.production_order LEFT JOIN first_goods_issue fg ON fg.production_order = o.production_order WHERE fc.start_time IS NOT NULL OR fg.start_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Confirmation Entered', TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') FROM confirmations
UNION ALL
SELECT production_order, 'Material Shortage Occurred', shortage_time FROM material_shortages WHERE shortage_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Plan Adjusted', adjustment_time FROM plan_changes WHERE adjustment_time IS NOT NULL
UNION ALL
SELECT c.production_order, 'Unplanned Halt Occurred', ADD_SECONDS(c.confirmation_time, 1) FROM (SELECT production_order, TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') AS confirmation_time, LEAD(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) OVER (PARTITION BY production_order ORDER BY entry_date, entry_time, rmzhl) AS next_confirmation_time FROM confirmations) c WHERE c.next_confirmation_time IS NOT NULL AND SECONDS_BETWEEN(c.confirmation_time, c.next_confirmation_time) >= 86400
UNION ALL
SELECT production_order, 'Final Confirmation Entered', final_time FROM last_confirmation WHERE final_time IS NOT NULL
UNION ALL
SELECT production_order, 'Goods Receipt Posted', receipt_time FROM first_receipt WHERE receipt_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Technically Completed', technically_completed_time FROM status_times WHERE technically_completed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Financially Closed', financially_closed_time FROM status_times WHERE financially_closed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Cancelled', cancelled_time FROM status_times WHERE cancelled_time IS NOT NULL
)
SELECT
e.production_order AS "ProductionOrder",
e.activity AS "Activity",
e.start_time AS "StartTime",
p.source_system AS "SourceSystem",
p.last_data_update AS "LastDataUpdate",
b.material_number AS "MaterialNumber",
b.plant AS "Plant",
NULLIF(b.work_center, '') AS "WorkCenter",
b.planned_end_date AS "PlannedEndDate",
b.current_status AS "OrderStatus"
FROM events e
INNER JOIN base_attributes b
ON b.production_order = e.production_order
CROSS JOIN params p
WHERE e.start_time IS NOT NULL
ORDER BY e.production_order, e.start_time, e.activity; Sẵn sàng bắt đầu?
Bắt đầu cải thiện hiệu quả lập kế hoạch sản xuất ngay hôm nay. Chuẩn bị dữ liệu bằng mẫu này để tìm ra thông tin hữu ích và xác định cơ hội tối ưu hóa.
Bắt đầu tối ưu hóa quy trình lập kế hoạch sản xuất ngay hôm nay
Xác định và loại bỏ điểm nghẽn, giảm 30% thời gian chu kỳ sản xuất.
Không cần thẻ tín dụng