Mẫu dữ liệu quản lý kho của bạn
Mẫu dữ liệu quản lý kho của bạn
- Các thuộc tính nên dùng để phân tích chi tiết
- Các hoạt động chính cần theo dõi trong quy trình
- Hướng dẫn trích xuất dữ liệu từ SAP EWM
Thuộc tính quản lý kho
| Tên | Mô tả | ||
|---|---|---|---|
| Warehouse Order WarehouseOrder | Mã định danh duy nhất của một đơn hàng kho, dùng để nhóm các nhiệm vụ kho mà một tài nguyên cần thực hiện. | ||
| Mô tả Warehouse Order là mã định danh trường hợp chính để theo dõi toàn bộ quy trình xử lý hàng hóa trong kho. Đây là một gói công việc, chẳng hạn lấy hàng cho đơn giao hàng đầu ra hoặc đưa hàng đã nhận vào vị trí lưu trữ. Mỗi Warehouse Order gồm một hoặc nhiều nhiệm vụ kho. Trong process mining, phân tích theo Warehouse Order giúp bạn nắm toàn bộ vòng đời của một gói công việc cụ thể. Nhờ đó, bạn có thể xác định điểm nghẽn, đo thời gian chu kỳ tổng thể từ lúc tạo đến khi hoàn tất và hiểu rõ luồng hoạt động gắn với một chỉ dẫn logistics. Vì sao điều này quan trọng Đây là mã định danh cốt lõi liên kết mọi hoạt động kho có liên quan, giúp phân tích quy trình từ đầu đến cuối và đo thời gian chu kỳ cho từng đơn vị công việc. Lấy dữ liệu ở đâu Mã định danh này thường có trong bảng tiêu đề Warehouse Order của SAP EWM, chẳng hạn như /SCWM/WHO. Ví dụ 200000145200000146200000147 | |||
| Hệ thống nguồn SourceSystem | Cho biết hệ thống nguồn nơi dữ liệu được trích xuất, chẳng hạn như môi trường SAP EWM đang vận hành. | ||
| Mô tả Thuộc tính này xác định hệ thống lưu trữ dữ liệu gốc về quản lý kho. Trong doanh nghiệp có nhiều hệ thống, việc ghi rõ nguồn gốc dữ liệu rất quan trọng để truy xuất và hiểu đúng ngữ cảnh. Khi phân tích, thuộc tính này giúp phân biệt các quy trình có thể trải qua nhiều hệ thống hoặc so sánh quy trình giữa các môi trường khác nhau, chẳng hạn hệ thống riêng cho từng khu vực. Nhờ đó, nguồn gốc dữ liệu được thể hiện rõ ràng và có thể kiểm tra. Vì sao điều này quan trọng Giúp truy xuất dữ liệu và hiểu đúng ngữ cảnh, nhất là khi có nhiều môi trường SAP hoặc hệ thống tích hợp, đồng thời làm rõ nguồn gốc dữ liệu. 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, chuyển đổi và tải dữ liệu (ETL), dùng để xác định môi trường SAP S/4HANA hoặc EWM cụ thể. Ví dụ SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| 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ủa bản ghi này được làm mới từ hệ thống nguồn. | ||
| Mô tả Thuộc tính này ghi lại lần gần nhất dữ liệu được trích xuất từ hệ thống nguồn. Nhờ đó, bạn biết dữ liệu đang phân tích có mới hay không. Khi phân tích hoặc xem dashboard, việc biết dữ liệu được cập nhật gần đây đến đâu là điều cần thiết để đưa ra quyết định phù hợp. Dấu thời gian này giúp người dùng biết họ đang xem thông tin mới nhất hay ảnh chụp dữ liệu tại một thời điểm cụ thể, từ đó hiểu rõ mức độ cập nhật của dữ liệu. Vì sao điều này quan trọng Cho biết dữ liệu mới đến đâu, giúp người dùng hiểu phân tích quy trình đang dựa trên thông tin cập nhật như thế nào. Lấy dữ liệu ở đâu Đây là trường siêu dữ liệu thường được tạo và thêm trong quá trình trích xuất dữ liệu (ETL). Trường này ghi lại dấu thời gian tải dữ liệu. Ví dụ 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Tên hoạt động ActivityName | Tên của hoạt động hoặc sự kiện quản lý kho cụ thể đã diễn ra, chẳng hạn 'Đã tạo nhiệm vụ lấy hàng' hoặc 'Đã ghi nhận xuất kho'. | ||
| Mô tả Thuộc tính này mô tả một bước hoặc sự kiện cụ thể trong quy trình quản lý kho. Các hoạt động này tạo nên sơ đồ quy trình, gồm những việc như tạo, xác nhận, đóng gói, bốc hàng và di chuyển hàng hóa. Phân tích thứ tự và tần suất của các hoạt động là nền tảng của process mining. Việc này giúp trực quan hóa luồng quy trình, nhận diện các luồng phổ biến và hiếm gặp, phát hiện sai lệch so với quy trình chuẩn, đồng thời xác định bước gây chậm trễ hoặc phải làm lại. Vì sao điều này quan trọng Thuộc tính này xác định các bước trong quy trình, làm cơ sở cho sơ đồ quy trình và giúp phân tích luồng quy trình, sai lệch và điểm nghẽn. Lấy dữ liệu ở đâu Có thể xác định từ các thay đổi trạng thái, thông báo sự kiện hoặc nhật ký giao dịch liên quan đến Warehouse Order và task trong các bảng như /SCWM/ORDIM_C (xác nhận), hoặc từ việc diễn giải các trường trạng thái trong /SCWM/WHO và /SCWM/ORDIM_O. Ví dụ Xác nhận Picking TaskTạo Putaway TaskGhi nhận nhận hàngHoàn tất Warehouse Order | |||
| Thời gian bắt đầu EventTime | Dấu thời gian cho biết hoạt động hoặc sự kiện bắt đầu khi nào. | ||
| Mô tả Thuộc tính này ghi lại ngày giờ chính xác khi một hoạt động kho cụ thể diễn ra. Đây là yếu tố thời gian chính để sắp xếp sự kiện và tính khoảng thời gian giữa chúng. Trong process mining, Thời gian bắt đầu rất cần thiết để lập trình tự sự kiện theo thời gian cho từng trường hợp. Thuộc tính này được dùng để tính thời gian chu kỳ, thời gian chờ và thời gian xử lý, những chỉ số quan trọng để phân tích hiệu suất, phát hiện điểm nghẽn và theo dõi SLA. Vì sao điều này quan trọng Dấu thời gian này rất quan trọng để sắp xếp sự kiện theo trình tự thời gian và tính các chỉ số hiệu suất dựa trên thời gian, chẳng hạn như thời gian chu kỳ và thời lượng. Lấy dữ liệu ở đâu Thường có trong bảng sự kiện hoặc xác nhận như /SCWM/ORDIM_C, chẳng hạn trường CONF_TIMESTAMP, hoặc trong nhật ký thay đổi trạng thái liên quan đến Warehouse Order và task. Ví dụ 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| ID người dùng User | Mã định danh của nhân viên kho hoặc người dùng đã xác nhận hay thực hiện hoạt động. | ||
| Mô tả Thuộc tính này ghi lại ID người dùng chịu trách nhiệm thực hiện nhiệm vụ kho. Đó có thể là nhân viên lấy hàng đã xác nhận thao tác, nhân viên đóng gói tại trạm đóng gói hoặc người lái xe nâng xác nhận việc đưa hàng vào vị trí lưu trữ. Dữ liệu này rất quan trọng đối với bảng điều khiển 'Resource & Equipment Utilization'. Dữ liệu giúp phân tích hiệu suất cá nhân hoặc nhóm, xác định nhu cầu đào tạo và cân bằng khối lượng công việc giữa nhân viên kho hiệu quả hơn. Vì sao điều này quan trọng Gắn công việc với một người cụ thể, giúp phân tích hiệu suất theo người dùng hoặc nhóm, đồng thời hỗ trợ quản lý tài nguyên và cân bằng khối lượng công việc. Lấy dữ liệu ở đâu Thường có trong dữ liệu xác nhận của nhiệm vụ kho, chẳng hạn ở trường UNAME trong bảng /SCWM/ORDIM_C. Ví dụ JSMITHARODRIGUEZOPERATOR_05 | |||
| Loại Warehouse Order WarehouseOrderType | Phân loại Warehouse Order theo mục đích, chẳng hạn đưa hàng vào vị trí lưu trữ, lấy hàng hoặc bổ sung hàng nội bộ. | ||
| Mô tả Loại Warehouse Order phân nhóm đơn hàng theo chức năng logistics. Việc phân biệt này rất quan trọng vì mỗi loại đơn hàng có luồng quy trình và yêu cầu hiệu suất khác nhau. Trong phân tích, thuộc tính này là chiều dữ liệu chính để lọc và so sánh. Ví dụ, dashboard 'Lưu lượng và số lượng Warehouse Order' dùng thuộc tính này để phân nhóm hiệu suất của quy trình hàng nhập (đưa hàng vào vị trí lưu trữ) và hàng xuất (lấy hàng), giúp bạn hiểu rõ hơn hoạt động kho. Vì sao điều này quan trọng Cho phép phân nhóm phân tích theo loại quy trình, chẳng hạn hàng nhập và hàng xuất, để so sánh phù hợp hơn và rút ra thông tin hữu ích. Lấy dữ liệu ở đâu Loại này được xác định theo loại quy trình kho, thường có trong bảng tiêu đề Warehouse Order /SCWM/WHO. Ví dụ PICKPUTWREPLSTGE | |||
| Mã sản phẩm MaterialNumber | Mã định danh duy nhất của sản phẩm hoặc nguyên vật liệu được xử lý trong nhiệm vụ kho. | ||
| Mô tả Thuộc tính này xác định vật tư đang được di chuyển, lấy, đóng gói hoặc nhận. Đây là chiều phân tích quan trọng để phân nhóm và đánh giá hiệu suất kho theo đặc điểm sản phẩm. Phân tích theo Mã sản phẩm giúp trả lời những câu hỏi như sản phẩm nào mất nhiều thời gian nhất để đưa vào vị trí lưu trữ, sản phẩm nào thường gặp lỗi lấy hàng hoặc sản phẩm nào cần kiểm tra chất lượng. Đây là thông tin cần thiết cho các dashboard 'Hiệu suất nhận hàng và đưa vào vị trí lưu trữ' và 'Thời gian kiểm tra chất lượng'. Vì sao điều này quan trọng Cho phép lọc và phân nhóm dữ liệu quy trình theo sản phẩm, giúp phát hiện vấn đề riêng của từng sản phẩm trong khâu xử lý, lưu trữ hoặc kiểm soát chất lượng. Lấy dữ liệu ở đâu Thông tin này thường có trong các bảng nhiệm vụ kho như /SCWM/ORDIM_O và được liên kết với dữ liệu danh mục nguyên vật liệu. Ví dụ FIN-1001RAW-2050SFIN-300-A | |||
| Mức ưu tiên Priority | Mức ưu tiên được gán cho lệnh kho, cho biết mức độ khẩn cấp, chẳng hạn Cao, Trung bình hoặc Thấp. | ||
| Mô tả Thuộc tính này phân loại lệnh kho theo tầm quan trọng hoặc mức độ khẩn cấp trong hoạt động kinh doanh. Chẳng hạn, lệnh ưu tiên cao có thể dành cho chuyến giao hàng nhanh hoặc vật tư thiết yếu cho sản xuất, nên cần được xử lý sớm. Mức ưu tiên là chiều phân tích quan trọng trong bảng điều khiển và KPI “Tuân thủ thời hạn xử lý lệnh ưu tiên”. Thuộc tính này cho phép lọc và phân nhóm hiệu suất, giúp bảo đảm các lệnh quan trọng nhất được xử lý đúng thời hạn dự kiến và hoạt động kho đáp ứng mục tiêu kinh doanh. Vì sao điều này quan trọng Giúp ưu tiên phân tích và theo dõi để bảo đảm các lệnh khẩn cấp đáp ứng mức dịch vụ, qua đó tác động trực tiếp đến sự hài lòng của khách hàng. Lấy dữ liệu ở đâu Có thể đặt mức ưu tiên trên chứng từ giao hàng liên quan rồi chuyển sang lệnh kho. Thông tin này có thể nằm trong các bảng như /SCWM/WHO. Ví dụ CaoTrung bìnhThấp | |||
| Thời gian kết thúc EventEndTime | Dấu thời gian cho biết hoạt động hoặc sự kiện hoàn tất khi nào. | ||
| Mô tả Thuộc tính này ghi lại ngày giờ một hoạt động kho cụ thể kết thúc. Với sự kiện đơn lẻ, thời gian này thường trùng với Thời gian bắt đầu. Nhưng với hoạt động có thời lượng đo được, chẳng hạn đóng gói hoặc bốc hàng, hai thời điểm có thể khác nhau. Có Thời gian kết thúc riêng giúp tính chính xác thời gian xử lý của từng hoạt động. Đây là thông tin quan trọng cho dashboard hiệu suất phân tích thời lượng của từng bước, chẳng hạn như 'Hiệu quả lấy hàng và đóng gói', để xác định công việc nào mất nhiều thời gian nhất. Vì sao điều này quan trọng Giúp tính chính xác thời lượng của từng hoạt động, từ đó xác định các bước tốn thời gian và công việc cần nhiều tài nguyên. Lấy dữ liệu ở đâu Với sự kiện riêng lẻ, thời gian này thường trùng với dấu thời gian bắt đầu. Với công việc kéo dài, thời gian kết thúc có thể nằm trong một trường riêng ở các bảng như /SCWM/ORDIM_C hoặc được suy ra từ thay đổi trạng thái tiếp theo. Ví dụ 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| Trạng thái Warehouse Order WarehouseOrderStatus | Trạng thái hiện tại hoặc cuối cùng của Warehouse Order, chẳng hạn 'Completed' hoặc 'Canceled'. | ||
| Mô tả Thuộc tính này cho biết kết quả cuối cùng của một lệnh kho. Việc xác định lệnh đã hoàn tất thành công hay bị hủy rất quan trọng để phân tích tỷ lệ hoàn tất quy trình và tìm nguyên nhân khiến lệnh chưa hoàn thành. Đây là bộ lọc quan trọng trong nhiều phân tích. Chẳng hạn, khi tính Thời gian chu kỳ kho từ đầu đến cuối, thường chỉ phân tích các lệnh đã hoàn tất. Thuộc tính này cũng giúp xác định và tìm hiểu tần suất cũng như nguyên nhân hủy lệnh. Vì sao điều này quan trọng Cho biết kết quả của một trường hợp, giúp lọc các lệnh đã hoàn tất và bị hủy. Đây là thông tin cần thiết để phân tích chính xác thời gian chu kỳ và thông lượng. Lấy dữ liệu ở đâu Trường trạng thái thường nằm trong bảng tiêu đề lệnh kho /SCWM/WHO. Ví dụ Đã hoàn tấtĐang xử lýĐã hủy | |||
| Chênh lệch số lượng QuantityVariance | Chênh lệch giữa số lượng theo kế hoạch và số lượng thực tế đã xác nhận cho một tác vụ. | ||
| Mô tả Chỉ số được tính này cho biết mức chênh lệch phát sinh trong một tác vụ kho. Giá trị khác 0 nghĩa là thực tế không khớp với dữ liệu trong hệ thống, có thể do lỗi lấy hàng, sai sót khi nhận hàng hoặc hàng hóa bị hư hỏng. Thuộc tính này hỗ trợ trực tiếp cho bảng điều khiển “Phân tích chênh lệch tồn kho” bằng cách cho thấy mức độ sai lệch. Phân tích tần suất và quy mô chênh lệch giúp xác định vấn đề mang tính hệ thống trong quản lý tồn kho và thực hiện công việc, từ đó định hướng các nỗ lực cải thiện độ chính xác. Vì sao điều này quan trọng Đo trực tiếp mức độ sai lệch trong tồn kho và vận hành, giúp bạn dễ dàng phát hiện và phân tích quy mô chênh lệch. Lấy dữ liệu ở đâu Được tính bằng cách lấy PlannedQuantity trừ khỏi ActualQuantity cho từng tác vụ liên quan. Ví dụ 0-15 | |||
| Đúng hạn IsOnTime | Giá trị đúng/sai cho biết lệnh kho có hoàn tất trước hoặc đúng ngày yêu cầu hoàn tất hay không. | ||
| Mô tả Cờ này cho biết kết quả đáp ứng SLA theo dạng đúng/sai. Cờ xác định sự kiện hoàn tất cuối cùng của lệnh kho có xảy ra vào hoặc trước Ngày yêu cầu hoàn tất hay không. Thuộc tính này rất cần thiết cho bảng điều khiển “Tuân thủ thời hạn xử lý lệnh ưu tiên”. Thuộc tính giúp tạo KPI và biểu đồ dễ dàng hơn vì bạn có thể đếm và lọc các lệnh đúng hạn hoặc trễ hạn. Nhờ đó, bạn nhanh chóng đánh giá hiệu suất so với mục tiêu dịch vụ mà không cần tính toán ngày phức tạp trong lớp phân tích. Vì sao điều này quan trọng Đơn giản hóa việc phân tích hiệu suất SLA bằng chỉ báo rõ ràng, đúng/sai, cho biết từng lệnh được xử lý đúng hạn hay trễ hạn. Lấy dữ liệu ở đâu Đây là thuộc tính được tính toán. Logic so sánh dấu thời gian của hoạt động “Hoàn tất lệnh kho” với thuộc tính “RequestedCompletionDate”. Ví dụ truefalse | |||
| Ngày yêu cầu hoàn tất RequestedCompletionDate | Ngày yêu cầu hoàn tất lệnh kho ưu tiên cao. | ||
| Mô tả Thuộc tính này xác định thỏa thuận mức dịch vụ (SLA) hoặc ngày mục tiêu hoàn tất lệnh kho. Đây là hạn chót để so sánh với thời điểm hoàn tất thực tế và xác định lệnh có được xử lý đúng hạn hay không. Ngày này rất cần thiết để tính KPI “Tỷ lệ hoàn tất lệnh ưu tiên”. Bằng cách so sánh dấu thời gian hoàn tất thực tế với ngày được yêu cầu, bạn có thể đo mức độ đáp ứng dịch vụ và xác định các lệnh có nguy cơ trễ hoặc đã bị trễ. Vì sao điều này quan trọng Xác định SLA của lệnh và làm mốc đo lường tỷ lệ xử lý đúng hạn, đặc biệt với các mặt hàng ưu tiên cao. Lấy dữ liệu ở đâu Ngày này thường được lấy từ ngày xuất hàng hoặc ngày giao hàng dự kiến trên lệnh giao hàng đi đã tạo ra lệnh kho. Tham khảo tài liệu SAP Extended Warehouse Management. Ví dụ 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| Số lượng theo kế hoạch PlannedQuantity | Số lượng vật liệu dự kiến cho một tác vụ kho cụ thể. | ||
| Mô tả Thuộc tính này cho biết số lượng mục tiêu của vật liệu cần di chuyển, lấy hàng hoặc nhận theo chỉ dẫn của tác vụ kho. Đây là mốc để so sánh với số lượng thực tế đã xử lý. Số lượng theo kế hoạch là dữ liệu thiết yếu cho bảng điều khiển “Phân tích chênh lệch tồn kho” và KPI “Tỷ lệ chính xác tồn kho”. Khi so sánh với Số lượng thực tế, hệ thống có thể phát hiện chênh lệch do lỗi lấy hàng, sai sót khi nhận hàng hoặc nhập liệu. Nhờ đó, bạn có thể cải thiện độ chính xác của tồn kho. Vì sao điều này quan trọng Làm mốc để tính độ chính xác tồn kho và phát hiện chênh lệch, giúp duy trì mức tồn kho chính xác. Lấy dữ liệu ở đâu Có trong dữ liệu tác vụ kho, chẳng hạn ở bảng /SCWM/ORDIM_O, thường trong trường như NISTA (Số lượng mục tiêu). Ví dụ 10050250 | |||
| Số lượng thực tế ActualQuantity | Số lượng vật liệu thực tế được người dùng xác nhận cho một tác vụ kho. | ||
| Mô tả Thuộc tính này cho biết số lượng hàng hóa được nhân viên kho xử lý thực tế và xác nhận. Đó có thể là số lượng lấy từ một ô chứa, số lượng đưa vào vị trí lưu trữ hoặc số lượng kiểm đếm khi nhận hàng. So sánh Số lượng thực tế với Số lượng theo kế hoạch là bước cốt yếu trong “Phân tích chênh lệch tồn kho”. Chênh lệch giữa hai giá trị cho thấy có ngoại lệ trong quy trình cần được tìm hiểu. Đây là thước đo trực tiếp về độ chính xác trong vận hành, đồng thời là dữ liệu đầu vào quan trọng cho các KPI “Tỷ lệ chính xác tồn kho” và “Tỷ lệ lỗi lấy hàng”. Vì sao điều này quan trọng Đây là số liệu thực tế về lượng hàng đã được xử lý. So sánh với số lượng theo kế hoạch giúp đo trực tiếp độ chính xác trong vận hành và phát hiện lỗi. Lấy dữ liệu ở đâu Có trong dữ liệu xác nhận tác vụ kho, chẳng hạn ở bảng /SCWM/ORDIM_C, thường trong trường như NDIFF (Số lượng chênh lệch) hoặc được tính từ số lượng đã xác nhận. Ví dụ 10049250 | |||
| Thiết bị sử dụng EquipmentUsed | Mã định danh của thiết bị dùng để thực hiện tác vụ kho, chẳng hạn xe nâng hoặc xe nâng tay. | ||
| Mô tả Thuộc tính này cho biết thiết bị xử lý vật liệu được phân công hoặc sử dụng cho một tác vụ kho. Đó có thể là một xe nâng cụ thể, xe tự hành (AGV) hoặc một loại xe đẩy nhất định. Dữ liệu này là nền tảng cho bảng điều khiển “Mức độ sử dụng nhân lực và thiết bị” và KPI “Tỷ lệ sử dụng thiết bị”. Bằng cách theo dõi thiết bị nào được dùng cho từng tác vụ và trong bao lâu, quản lý có thể phân tích cách sử dụng, lên lịch bảo trì và đưa ra quyết định phù hợp về quy mô cũng như cơ cấu đội xe. Vì sao điều này quan trọng Giúp phân tích mức độ sử dụng và hiệu quả của thiết bị, từ đó tối ưu hóa việc quản lý đội xe và phát hiện hạn chế về tài nguyên. Lấy dữ liệu ở đâu Thông tin này có thể được lưu trong chi tiết tác vụ hoặc lệnh kho nếu SAP EWM được cấu hình để quản lý tài nguyên. Tham khảo tài liệu SAP Extended Warehouse Management. Ví dụ XE-NÂNG-07AGV-02XE-ĐẨY-15 | |||
| Thời gian chu kỳ từ đầu đến cuối EndToEndCycleTime | Tổng thời gian từ khi tạo lệnh kho đến khi lệnh hoàn tất. | ||
| Mô tả KPI này đo toàn bộ thời gian tồn tại của một lệnh kho. Đây là chỉ số tổng quan quan trọng về hiệu quả và tốc độ vận hành kho. Chỉ số này là trọng tâm của bảng điều khiển “Thời gian chu kỳ kho từ đầu đến cuối”. Theo dõi KPI theo thời gian và phân nhóm theo các chiều như loại lệnh hoặc vật liệu giúp phát hiện điểm kém hiệu quả mang tính hệ thống, đồng thời đo tác động của các sáng kiến cải tiến quy trình đến toàn bộ hoạt động. Vì sao điều này quan trọng Đây là KPI chính để đo hiệu quả tổng thể của quy trình kho, cung cấp cái nhìn tổng quan về hiệu suất vận hành. Lấy dữ liệu ở đâu Được tính ở cấp trường hợp bằng cách lấy dấu thời gian của sự kiện đầu tiên (“Tạo lệnh kho”) trừ dấu thời gian của sự kiện cuối cùng (“Hoàn tất lệnh kho”). Ví dụ 8640017280043200 | |||
| Thời gian xuất kho dự kiến PlannedDepartureTime | Thời gian dự kiến lô hàng rời khỏi kho. | ||
| Mô tả Thuộc tính này cho biết thời điểm mục tiêu để xuất lô hàng sau khi hoàn tất các hoạt động lấy hàng, đóng gói và chất hàng. Đây là mốc để đo hiệu suất đúng hạn ở giai đoạn cuối của quy trình xuất hàng. Dấu thời gian này rất quan trọng đối với bảng điều khiển “Hiệu suất xuất hàng đúng hạn”. So sánh thời gian xuất hàng thực tế với thời gian dự kiến giúp phát hiện chậm trễ trong khâu chất hàng, phối hợp với đơn vị vận chuyển hoặc chuẩn bị chứng từ. Qua đó, bạn có thể đánh giá hiệu quả lập kế hoạch logistics và vận tải. Vì sao điều này quan trọng Làm mốc đo hiệu suất xuất hàng đúng hạn, yếu tố quan trọng để lập kế hoạch logistics và đáp ứng lịch của đơn vị vận chuyển. Lấy dữ liệu ở đâu Thông tin này thường nằm trong chứng từ vận tải hoặc chứng từ lô hàng được liên kết với lệnh kho. Tham khảo tài liệu SAP Extended Warehouse Management. Ví dụ 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| Vị trí lưu trữ StorageLocation | Vị trí cụ thể trong kho, chẳng hạn một ô chứa, nơi hàng hóa được chuyển đến hoặc lấy đi. | ||
| Mô tả Thuộc tính này xác định vị trí thực tế liên quan đến một tác vụ kho, chẳng hạn ô chứa nguồn khi lấy hàng hoặc ô chứa đích khi đưa hàng vào vị trí lưu trữ. Vị trí có thể là một khu vực rộng hoặc tọa độ cụ thể trên kệ. Phân tích theo vị trí lưu trữ có thể cho thấy nhiều thông tin hữu ích về vận hành, chẳng hạn khu vực có tỷ lệ lấy hàng cao hoặc khu vực thường xảy ra chậm trễ, sai sót. Bạn cũng có thể dùng thuộc tính này trong phân tích “Tuân thủ tuyến lấy hàng” để tìm hiểu lộ trình di chuyển của nhân viên lấy hàng trong kho. Vì sao điều này quan trọng Cho biết vị trí trong kho, giúp phân tích hiệu quả di chuyển, khả năng tiếp cận ô chứa và tối ưu hóa tuyến lấy hàng. Lấy dữ liệu ở đâu Thường có trong các bảng tác vụ kho như /SCWM/ORDIM_O, với thông tin ô chứa nguồn (VLPLA) và ô chứa đích (NLPLA). Ví dụ 01-02-03TRẠM-ĐÓNG-GÓI-01KHU-VỰC-XUẤT-HÀNG-A | |||
| Warehouse Task WarehouseTask | Mã định danh duy nhất của một nhiệm vụ kho, thuộc một đơn hàng kho. | ||
| Mô tả Nhiệm vụ kho là chỉ dẫn thực hiện một hoạt động di chuyển hàng hóa cụ thể, chẳng hạn chuyển sản phẩm từ ô lưu trữ đến trạm đóng gói. Một đơn hàng kho nhóm một hoặc nhiều nhiệm vụ như vậy. Phân tích ở cấp nhiệm vụ giúp bạn xem hoạt động kho chi tiết hơn. Nhờ đó, bạn có thể hiểu hiệu suất tài nguyên trong từng lần di chuyển, xác định các ô lưu trữ khó tiếp cận hoặc phân tích hiệu quả của từng hoạt động lấy hàng hay đưa hàng vào vị trí lưu trữ. Vì sao điều này quan trọng Cung cấp dữ liệu chi tiết để phân tích từng thao tác di chuyển và bước riêng lẻ trong một Warehouse Order lớn hơn. Lấy dữ liệu ở đâu Có trong các bảng nhiệm vụ kho như /SCWM/ORDIM_O (dữ liệu nhiệm vụ) và /SCWM/ORDIM_C (dữ liệu xác nhận). Ví dụ 300000451300000452300000453 | |||
Hoạt động quản lý kho
| Hoạt động | Mô tả | ||
|---|---|---|---|
| Ghi nhận xuất kho | Đây là bước logistics và tài chính cuối cùng trong hệ thống, chính thức trừ hàng khỏi tồn kho. Bước này ghi nhận quyền sở hữu hợp pháp đã được chuyển giao và lô hàng đã rời kho. | ||
| Vì sao điều này quan trọng Đây là điểm kết thúc quan trọng của luồng hàng xuất, đồng thời kích hoạt lập hóa đơn và cập nhật hàng tồn kho. Mốc này giúp đo tỷ lệ giao hàng đúng hạn và KPI thời gian bốc hàng, điều xe. Lấy dữ liệu ở đâu Có thể suy ra sự kiện này từ việc ghi nhận chứng từ Outbound Delivery gắn với Warehouse Order. Kiểm tra luồng chứng từ hoặc các trường trạng thái, chẳng hạn DGI_STAT, trong bảng /SCDL/DB_PROCH_O. Thu thập Xác định dấu thời gian khi trạng thái Goods Issue của Outbound Delivery liên quan được đặt thành 'Completed'. Loại sự kiện explicit | |||
| Hoàn tất đóng gói | Hoạt động này ghi nhận tất cả mặt hàng trong lô hàng đã được đóng vào một đơn vị xử lý hàng, sau đó đơn vị này được đóng và dán nhãn. Hàng đã đóng gói sẵn sàng chuyển sang bước tiếp theo, chẳng hạn như tập kết hoặc bốc hàng. | ||
| Vì sao điều này quan trọng Mốc này kết thúc giai đoạn đóng gói. Đây là điều kiện cần để tập kết và giao hàng, vì vậy chậm trễ ở đây ảnh hưởng trực tiếp đến tổng thời gian xử lý và KPI thời gian đóng gói, tập kết. Lấy dữ liệu ở đâu Có thể lấy thời điểm trạng thái của đơn vị xử lý hàng (HU) chuyển thành 'Closed', hoặc thời điểm nhiệm vụ kho cuối cùng liên quan đến đóng gói cho WO được xác nhận. Bảng /SCWM/HUHDR chứa thông tin trạng thái HU. Thu thập Xác định dấu thời gian khi đơn vị xử lý hàng vận chuyển cuối cùng gắn với đơn hàng được đóng hoặc hoàn tất. Loại sự kiện inferred | |||
| Hoàn tất Warehouse Order | Trạng thái Warehouse Order chuyển thành 'Completed' sau khi tất cả nhiệm vụ kho liên quan được xác nhận. Từ góc độ thực hiện, trạng thái này đánh dấu hoàn tất gói công việc. | ||
| Vì sao điều này quan trọng Đây là sự kiện kết thúc chính, cho biết quy trình đã hoàn tất thành công. Mốc này rất cần thiết để tính thời gian chu kỳ kho từ đầu đến cuối và đo tổng lượng công việc xử lý. Lấy dữ liệu ở đâu Theo dõi thay đổi của trường trạng thái (STAT) thành 'Completed' trong bảng tiêu đề Warehouse Order /SCWM/WHO. Có thể dùng nhật ký thay đổi của bảng (DBTABLOG) hoặc một trường dấu thời gian riêng. Thu thập Xác định dấu thời gian khi trạng thái trong /SCWM/WHO được đặt thành 'C' (Completed). Loại sự kiện inferred | |||
| Tạo Warehouse Order | Hoạt động này ghi nhận thời điểm tạo Warehouse Order (WO), một gói công việc gồm nhiều nhiệm vụ kho. Hệ thống tạo WO để gom nhóm và sắp xếp công việc cho nhân viên kho dựa trên các tiêu chí như khu vực hoạt động, hàng đợi hoặc sản phẩm. | ||
| Vì sao điều này quan trọng Đây là sự kiện bắt đầu chính của quy trình thực hiện công việc trong kho. Phân tích thời gian từ lúc tạo đến hành động đầu tiên giúp phát hiện chậm trễ trong phân công công việc và bố trí tài nguyên. Lấy dữ liệu ở đâu Sự kiện này được ghi nhận từ dấu thời gian tạo (trường CREATED_AT) trong bảng tiêu đề Warehouse Order /SCWM/WHO. Thu thập Trích xuất dấu thời gian tạo từ bảng /SCWM/WHO cho từng số Warehouse Order (WHO). Loại sự kiện explicit | |||
| Xác nhận Picking Task | Nhân viên kho xác nhận Warehouse Task lấy hàng đã hoàn tất, nghĩa là hàng đã được lấy thực tế khỏi vị trí lưu trữ. Thao tác này thường được thực hiện bằng máy quét RF. | ||
| Vì sao điều này quan trọng Đây là mốc quan trọng trong quá trình xử lý đơn, ảnh hưởng trực tiếp đến thời gian từ khi nhận đơn đến khi giao hàng. Phân tích hoạt động này giúp đo năng suất lấy hàng và phát hiện điểm nghẽn. Lấy dữ liệu ở đâu Lấy từ dấu thời gian xác nhận (trường CONFIRMED_AT) trong bảng Warehouse Task, /SCWM/WT. Trạng thái nhiệm vụ (STAT) được cập nhật thành 'Confirmed'. Thu thập Dùng dấu thời gian xác nhận trong bảng /SCWM/WT của các task lấy hàng gắn với Warehouse Order. Loại sự kiện explicit | |||
| Xác nhận Putaway Task | Nhân viên kho xác nhận Warehouse Task đưa hàng vào vị trí lưu trữ đã hoàn tất, nghĩa là hàng đã được đặt thực tế vào vị trí lưu trữ được chỉ định. Xác nhận này cập nhật vị trí hàng tồn kho theo thời gian thực. | ||
| Vì sao điều này quan trọng Đây là mốc quan trọng của quy trình hàng nhập, xác nhận hàng đã sẵn sàng để lấy. Chậm trễ ở bước này ảnh hưởng trực tiếp đến KPI thời gian chu kỳ từ nhận hàng đến đưa vào vị trí lưu trữ. Lấy dữ liệu ở đâu Lấy từ dấu thời gian xác nhận (trường CONFIRMED_AT) trong bảng Warehouse Task, /SCWM/WT. Trạng thái nhiệm vụ (STAT) cũng chuyển thành 'Confirmed'. Thu thập Dùng dấu thời gian xác nhận trong bảng /SCWM/WT của các task đưa hàng vào vị trí lưu trữ gắn với Warehouse Order. Loại sự kiện explicit | |||
| Bắt đầu bốc hàng | Hoạt động này ghi nhận thời điểm bắt đầu bốc hàng thực tế từ khu vực tập kết lên xe tải hoặc phương tiện vận chuyển. Thao tác này thường được khởi tạo bởi người dùng trong hệ thống. | ||
| Vì sao điều này quan trọng Đây là bước cuối cùng trong quy trình xử lý hàng thực tế tại kho. Phân tích thời gian bốc hàng giúp tối ưu việc sử dụng cửa xuất hàng và thời gian xe chờ tại kho. Lấy dữ liệu ở đâu Có thể suy ra sự kiện này từ thay đổi trạng thái của Transportation Unit (TU) hoặc Outbound Delivery Order liên quan thành 'Loading Started'. Bạn có thể kiểm tra bảng /SCWM/TU_STATUS. Thu thập Ghi nhận dấu thời gian khi trạng thái TU hoặc Delivery Order được cập nhật để thể hiện thời điểm bắt đầu bốc hàng. Loại sự kiện inferred | |||
| Bắt đầu đóng gói | Ghi nhận thời điểm bắt đầu đóng gói, khi các mặt hàng đã lấy được gom lại và đặt vào thùng vận chuyển hoặc đơn vị xử lý hàng. Đây thường là bước đầu tiên tại khu vực đóng gói. | ||
| Vì sao điều này quan trọng Đây là thời điểm bắt đầu giai đoạn dịch vụ gia tăng. Đo thời gian đóng gói giúp tối ưu bố trí khu vực làm việc, nhân sự và vật tư. Lấy dữ liệu ở đâu Có thể cần suy ra sự kiện này từ dữ liệu. Bạn có thể xác định thời điểm bắt đầu dựa trên lần quét đầu tiên của mặt hàng hoặc đơn vị xử lý hàng tại trạm đóng gói, thường được ghi trong nhật ký khu vực làm việc hoặc đơn vị xử lý hàng. Các bảng như /SCWM/PACKSPEC và nhật ký thực hiện liên quan có thể cung cấp dữ liệu. Thu thập Dùng dấu thời gian xác nhận đầu tiên của Warehouse Task liên quan đến đóng gói cho lô hàng, hoặc thời điểm tạo HU cuối cùng dùng để giao hàng. Loại sự kiện inferred | |||
| Ghi nhận nhận hàng | Ghi nhận việc chính thức nhập hàng từ nhà cung cấp bên ngoài hoặc từ khâu sản xuất vào kho. Đây là bước hạch toán quan trọng về tài chính và hàng tồn kho, giúp hàng hóa hiển thị trong hệ thống và sẵn sàng cho các bước tiếp theo như đưa vào vị trí lưu trữ. | ||
| Vì sao điều này quan trọng Đây là mốc quan trọng trong quy trình hàng nhập. Khoảng thời gian từ lúc hàng đến đến khi ghi nhận có thể cho thấy tình trạng tồn đọng ở khu vực nhận hàng, ảnh hưởng đến khả năng cung ứng hàng. Lấy dữ liệu ở đâu Có thể suy ra sự kiện này từ việc ghi nhận chứng từ Inbound Delivery gắn với Warehouse Order. Kiểm tra luồng chứng từ hoặc các trường trạng thái, chẳng hạn DGRSTAT, trong bảng /SCDL/DB_PROCH_I. Thu thập Xác định dấu thời gian khi trạng thái Goods Receipt của Inbound Delivery liên quan được đặt thành 'Completed'. Loại sự kiện inferred | |||
| Hoàn tất bốc hàng | Ghi nhận tất cả hàng trong lô đã được bốc thực tế lên phương tiện vận chuyển. Đây là điều kiện cần để ghi nhận xuất kho và điều xe rời đi. | ||
| Vì sao điều này quan trọng Đây là mốc quan trọng trước khi giao hàng. Chậm trễ từ lúc hoàn tất bốc hàng đến khi ghi nhận xuất kho có thể cho thấy vấn đề về chứng từ hoặc hệ thống đang khiến xe vận chuyển phải chờ. Lấy dữ liệu ở đâu Có thể suy ra sự kiện này từ thay đổi trạng thái của Transportation Unit (TU) hoặc Outbound Delivery Order liên quan thành 'Loading Completed'. Trạng thái trong các bảng /SCWM/TU và /SCDL/DB_PROCH_O có liên quan. Thu thập Ghi nhận dấu thời gian khi trạng thái TU hoặc Delivery Order được cập nhật để thể hiện thời điểm hoàn tất bốc hàng. Loại sự kiện inferred | |||
| Hủy Warehouse Order | Warehouse Order bị hủy trước khi hoàn tất tất cả task, khiến quy trình không thể tiếp tục. Việc này có thể xảy ra do thiếu hàng, thay đổi đơn hàng của khách hoặc các tình huống ngoại lệ khác. | ||
| Vì sao điều này quan trọng Đây là nhánh lỗi hoặc ngoại lệ. Phân tích tần suất và lý do hủy giúp phát hiện vấn đề ở các khâu trước đó như lập kế hoạch, độ chính xác của hàng tồn kho hoặc quản lý đơn hàng. Lấy dữ liệu ở đâu Theo dõi thay đổi của trường trạng thái (STAT) thành 'Canceled' trong bảng tiêu đề Warehouse Order /SCWM/WHO. Thu thập Xác định dấu thời gian khi trạng thái trong /SCWM/WHO được đặt thành giá trị hủy. Loại sự kiện inferred | |||
| Tạo Picking Task | Hệ thống tạo Warehouse Task (WT) để lấy hàng từ vị trí lưu trữ nhằm đáp ứng đơn giao hàng đầu ra. Đây là chỉ dẫn của hệ thống để nhân viên lấy sản phẩm. | ||
| Vì sao điều này quan trọng Đây là bước đầu tiên của quy trình xử lý hàng đầu ra. Khoảng thời gian từ lúc tạo đến lúc xác nhận nhiệm vụ lấy hàng rất quan trọng để phân tích hiệu quả lấy hàng và khả năng đáp ứng của tài nguyên. Lấy dữ liệu ở đâu Lấy từ dấu thời gian tạo (trường CREATED_AT) của Warehouse Task liên quan trong bảng /SCWM/WT, với loại quy trình cho biết đây là hoạt động lấy hàng. Thu thập Lọc các Warehouse Task có loại quy trình lấy hàng, được liên kết với Warehouse Order, rồi dùng dấu thời gian tạo của các nhiệm vụ đó. Loại sự kiện explicit | |||
| Tạo Putaway Task | Hệ thống tạo một chỉ dẫn cụ thể, Warehouse Task (WT), để chuyển hàng đã nhận từ khu vực nhận hàng đến vị trí lưu trữ cuối cùng. Hoạt động này cho biết hệ thống đã sẵn sàng thực hiện việc đưa hàng vào vị trí lưu trữ. | ||
| Vì sao điều này quan trọng Theo dõi thời gian từ lúc tạo đến khi xác nhận task cho biết nhân viên kho mất bao lâu để nhận và thực hiện chỉ dẫn đưa hàng vào vị trí lưu trữ. Qua đó, bạn có thể phát hiện nguy cơ thiếu nhân lực hoặc thiết bị. Lấy dữ liệu ở đâu Lấy từ dấu thời gian tạo (trường CREATED_AT) của Warehouse Task liên quan trong bảng /SCWM/WT, với loại quy trình cho biết đây là hoạt động đưa hàng vào vị trí lưu trữ. Thu thập Lọc các Warehouse Task có loại quy trình đưa hàng vào vị trí lưu trữ, được liên kết với Warehouse Order, rồi dùng dấu thời gian tạo của các nhiệm vụ đó. Loại sự kiện explicit | |||
| Xác nhận Staging Task | Nhân viên kho xác nhận đã chuyển đơn vị xử lý hàng đã đóng gói từ trạm đóng gói hoặc khu vực gom hàng đến khu vực tập kết hàng được chỉ định. Lúc này, hàng đã sẵn sàng để bốc lên xe. | ||
| Vì sao điều này quan trọng Đây là bước chuyển từ xử lý nội bộ sang logistics hàng xuất. Chậm trễ khi tập kết có thể khiến khu vực bốc hàng lộn xộn và lỡ giờ xe vận chuyển đến nhận hàng. Lấy dữ liệu ở đâu Lấy từ dấu thời gian xác nhận (trường CONFIRMED_AT) của Warehouse Task (/SCWM/WT) có loại quy trình di chuyển hàng vào khu vực chờ. Thu thập Xác định dấu thời gian xác nhận của nhiệm vụ kho đưa hàng đến khu vực tập kết, gắn với đơn vị xử lý hàng hóa hoặc đơn giao hàng. Loại sự kiện explicit | |||
Hướng dẫn trích xuất dữ liệu
Các bước
- Điều kiện tiên quyết: Xác định hoặc tạo CDS View: Nguồn dữ liệu chính là các CDS View tiêu chuẩn của SAP S/4HANA dành cho quản lý kho. Các view quan trọng gồm
I_WarehouseOrdercho sự kiện cấp đơn hàng vàI_WarehouseTaskcho sự kiện cấp nhiệm vụ. Bạn cần các view khác nhưI_OutboundDeliveryItem,I_InboundDeliveryItemvàI_EWMTransportationUnitcho những sự kiện logistics liên quan. Hãy bảo đảm các view này đang hoạt động trong hệ thống. - Tạo CDS View tùy chỉnh: Để gộp dữ liệu từ nhiều nguồn thành một nhật ký sự kiện, bạn cần tạo CDS View tùy chỉnh. Dùng ABAP Development Tools (ADT) trong Eclipse để tạo Data Definition mới. View tùy chỉnh này sẽ dùng
UNION ALLđể gộp bản ghi từ các nguồn khác nhau, mỗi bản ghi đại diện cho một hoạt động nghiệp vụ riêng. - Xác định cấu trúc nhật ký sự kiện: Trong CDS View tùy chỉnh, hãy xác định các trường sẽ tạo thành cột của nhật ký sự kiện. Cần có
WarehouseOrder,ActivityName,EventTimecùng các thuộc tính bắt buộc và nên có khác. Ánh xạ các trường này từ những CDS View tiêu chuẩn bên dưới. - Mô hình hóa sự kiện Warehouse Order: Thêm các câu lệnh
SELECTđầu tiên vào phần union. Chọn dữ liệu từI_WarehouseOrderđể tạo sự kiện 'Warehouse Order Created' bằng dấu thời gian tạo. Thêm các câu lệnhSELECTtiếp theo cho sự kiện 'Warehouse Order Completed' và 'Warehouse Order Canceled' bằng cách lọc theo trạng thái đơn hàng và dùng dấu thời gian xác nhận hoặc thay đổi phù hợp. - Mô hình hóa sự kiện Warehouse Task: Thêm các câu lệnh
SELECTtừI_WarehouseTask. Tạo sự kiện 'Putaway Task Created' và 'Putaway Task Confirmed' bằng cách lọc theo nhóm quy trình kho liên quan đến việc đưa hàng vào vị trí lưu trữ. Tương tự, tạo sự kiện 'Picking Task Created', 'Picking Task Confirmed' và 'Staging Task Confirmed' theo nhóm quy trình tương ứng, rồi dùng dấu thời gian tạo và xác nhận. - Mô hình hóa sự kiện di chuyển hàng hóa: Kết hợp các view liên quan đến giao hàng với Warehouse Task để ghi nhận việc di chuyển hàng hóa. Với 'Goods Receipt Posted', chọn dữ liệu từ
I_InboundDeliveryItembằngActualGoodsMovementDateTime. Với 'Goods Issue Posted', dùng cùng trường này từI_OutboundDeliveryItemvà liên kết lại với Warehouse Order hoặc nhiệm vụ liên quan. - Mô hình hóa sự kiện bốc hàng và đóng gói: Chọn dữ liệu từ
I_EWMTransportationUnitđể ghi nhận sự kiện 'Loading Started' và 'Loading Completed' bằng các dấu thời gian riêng của view. Quy trình đóng gói có thể phức tạp, vì vậy hãy dùng view Handling Unit làm nguồn thay thế: thời điểm tạo có thể đại diện cho 'Packing Started', còn thời điểm đổi trạng thái có thể đại diện cho 'Packing Completed'. Bạn có thể cần điều chỉnh bước này theo quy trình đóng gói cụ thể. - Thêm chú thích để công bố CDS View: Thêm chú thích
@OData.publish: truevào định nghĩa CDS View tùy chỉnh. Chú thích này yêu cầu SAP tự động tạo dịch vụ OData dựa trên cấu trúc của view. - Kích hoạt CDS View và dịch vụ OData: Kích hoạt Data Definition mới trong ADT. Sau đó, mở hệ thống SAP Gateway hub và dùng giao dịch
/IWFND/MAINT_SERVICEđể tìm rồi kích hoạt dịch vụ OData vừa tạo. Nhờ vậy, dữ liệu có thể được truy cập qua điểm cuối REST API. - Trích xuất dữ liệu: Dùng nền tảng dữ liệu đích hoặc công cụ ETL để kết nối với điểm cuối dịch vụ OData đã kích hoạt. Áp dụng bộ lọc trực tiếp trong URI OData, chẳng hạn lọc theo
EventTimeđể giới hạn phạm vi dữ liệu (ví dụ:?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Định dạng dữ liệu cho process mining: Lưu dữ liệu đã trích xuất ở định dạng tệp phẳng như CSV, với tiêu đề cột khớp các thuộc tính ProcessMind yêu cầu (
WarehouseOrder,ActivityName,EventTime, v.v.). Tải tệp cuối cùng lên công cụ process mining.
Cấu hình
- CDS View tùy chỉnh: Cần tạo một CDS view riêng, chẳng hạn
Z_C_EWM_EVENTLOG_CDS, để hợp nhất dữ liệu sự kiện. Đây là đối tượng trung tâm dùng để trích xuất dữ liệu. - Dịch vụ OData: Cần kích hoạt dịch vụ OData được tạo từ CDS view tùy chỉnh. Tên dịch vụ thường là tên CDS view có hậu tố
_CDS. - Lọc theo khoảng ngày: Khi gọi OData API, cần lọc ngày trên trường
EventTime. Với lần phân tích ban đầu, thường nên lấy dữ liệu trong 3 đến 6 tháng. Nếu không lọc, truy vấn có thể hết thời gian chờ hoặc ảnh hưởng đến hiệu suất. - Lọc thực thể: Để giới hạn phạm vi dữ liệu hơn nữa, hãy cân nhắc lọc theo các thuộc tính như Số kho hàng (
Kho hàng), Loại lệnh kho (WarehouseOrderType) hoặc mã vật tư cụ thể (MaterialNumber). - Quyền truy cập hệ thống: Người tạo CDS view cần quyền nhà phát triển SAP trong ADT. Người dùng hoặc tài khoản dịch vụ gọi OData API cần có quyền truy cập dữ liệu quản lý kho bên dưới.
Truy vấn mẫu sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate Các bước
- Xác nhận bạn đã được phê duyệt quyền đọc trực tiếp lược đồ cơ sở dữ liệu SAP EWM, rồi xác định các đối tượng cơ sở dữ liệu vật lý tương ứng với tiêu đề lệnh kho, nhiệm vụ kho, lịch sử trạng thái lệnh kho, các bút toán nhập và xuất hàng, đóng gói, tập kết và bốc hàng. Các tham chiếu logic /SCWM/WHO và /SCWM/WT thường được dùng làm điểm bắt đầu. Tuy nhiên, hãy kiểm tra các đối tượng, trường, mã trạng thái, ý nghĩa dấu thời gian và lược đồ cơ sở dữ liệu thực tế trong hệ thống của bạn.
- Lấy bảng ánh xạ trường đã được xác minh từ người phụ trách kỹ thuật SAP EWM hoặc từ từ điển dữ liệu. Ánh xạ mã lệnh kho, loại lệnh kho, trạng thái, mức ưu tiên, mã nhiệm vụ kho, nhóm nhiệm vụ hoặc loại quy trình, vật tư, người dùng, dấu thời gian tạo, dấu thời gian xác nhận, dấu thời gian đóng gói, tập kết, bốc hàng, nhập hàng, xuất hàng, hệ thống nguồn và dấu thời gian làm mới gần nhất. Đừng giả định một trường luôn nằm trong cùng một bảng hoặc mã trạng thái có cùng ý nghĩa ở mọi lần triển khai.
- Cấu hình kết nối trích xuất bằng tài khoản cơ sở dữ liệu chỉ có quyền đọc, lược đồ sản xuất hoặc báo cáo, cùng các giá trị tham số hóa cho ngày bắt đầu, ngày kết thúc trích xuất, tên hệ thống nguồn và mọi bộ lọc riêng của công ty. Áp dụng bộ lọc ngày cho dấu thời gian của sự kiện liên quan, thay vì chỉ lọc theo thời điểm tạo lệnh kho, để không bỏ sót các sự kiện phát sinh về sau trong vòng đời lệnh.
- Tạo các dòng sự kiện bằng cách chọn một dòng cho mỗi hoạt động được yêu cầu cụ thể. Truy vấn phải dùng các trường nguồn đã xác minh cho từng hoạt động, không dựa vào ProcessMind để suy ra sự kiện. Nếu hoạt động được ghi nhận trong lịch sử trạng thái hoặc nhật ký ứng dụng thay vì trường tiêu đề hiện tại, hãy dùng dữ liệu lịch sử hoặc nhật ký đó và giữ lại dấu thời gian sự kiện cùng người thực hiện.
- Chuẩn hóa dấu thời gian của mọi hoạt động về cùng một múi giờ, ưu tiên UTC, hoặc ghi rõ múi giờ của máy chủ ứng dụng SAP. Chuyển mã trạng thái và mã quy trình riêng của nguồn thành đúng tên hoạt động cần có trong nhật ký sự kiện: Warehouse Order Created, Goods Receipt Posted, Putaway Task Created, Putaway Task Confirmed, Picking Task Created, Picking Task Confirmed, Packing Started, Packing Completed, Staging Task Confirmed, Loading Started, Loading Completed, Goods Issue Posted, Warehouse Order Completed và Warehouse Order Canceled.
- Đảm bảo mỗi dòng đầu ra có WarehouseOrder, ActivityName, EventTime, SourceSystem và LastDataUpdate. Điền EventEndTime khi có dấu thời gian hoàn tất đáng tin cậy. Với sự kiện ở cấp nhiệm vụ, liên kết nhiệm vụ với lệnh kho tương ứng. Nếu một lệnh kho có nhiều nhiệm vụ liên quan, giữ một dòng sự kiện cho mỗi sự kiện nhiệm vụ, đồng thời dùng mã lệnh kho làm mã trường hợp. Nếu định dạng nhập đích hỗ trợ, hãy dùng khóa phụ ổn định như mã nhiệm vụ hoặc mã sự kiện nguồn.
- Kiểm tra kết quả trước khi xuất. Xác nhận cả 14 tên hoạt động đều xuất hiện khi dữ liệu nguồn có sự kiện nghiệp vụ tương ứng, dấu thời gian nằm trong phạm vi yêu cầu, mã lệnh kho không bị trống bất thường và các dòng trùng lặp có thể giải thích bằng nhiều nhiệm vụ hoặc thay đổi trạng thái lặp lại. Đối chiếu số lượng với báo cáo vận hành SAP hoặc một bản trích xuất khác đã được phê duyệt.
- Xuất kết quả thành tệp phân tách bằng dấu phân cách tương thích với ProcessMind hoặc kết quả truy vấn cơ sở dữ liệu, mỗi dòng tương ứng với một sự kiện. Giữ nguyên tên cột bắt buộc, dùng định dạng dấu thời gian rõ ràng như ISO 8601, đặt giá trị văn bản trong dấu ngoặc kép nếu định dạng phân cách yêu cầu và thêm dòng tiêu đề. Tải tệp lên hoặc cấu hình kết nối cơ sở dữ liệu trong ProcessMind. Đặt WarehouseOrder làm mã trường hợp, ActivityName làm hoạt động, EventTime làm dấu thời gian bắt đầu và EventEndTime làm dấu thời gian kết thúc nếu có.
Cấu hình
- Ánh xạ đối tượng nguồn: Xác minh các đối tượng và trường cơ sở dữ liệu thực tế cho đơn hàng kho, tác vụ kho, lịch sử trạng thái, di chuyển hàng hóa, đóng gói, tập kết và bốc xếp. /SCWM/WHO và /SCWM/WT có thể là các đối tượng logic liên quan, nhưng cần xác nhận cách biểu diễn trong cơ sở dữ liệu đã triển khai trước khi thực hiện.
- Khoảng ngày: Bắt đầu với khoảng thời gian có kiểm soát từ ba đến sáu tháng. Dùng khoảng ngắn hơn để kiểm thử ban đầu, rồi mở rộng sau khi đối chiếu dữ liệu. Giữ một khoảng chồng lấn nhỏ giữa các lần chạy tăng dần để ghi nhận giao dịch được cập nhật muộn và các chỉnh sửa.
- Chọn dấu thời gian sự kiện: Dùng dấu thời gian tạo cho hoạt động tạo, dấu thời gian xác nhận cho hoạt động xác nhận, dấu thời gian ghi nhận cho nhận và xuất hàng, cùng dấu thời gian thực hiện đã xác minh cho đóng gói, tập kết và bốc xếp. Không dùng thời điểm tạo đơn hàng kho thay cho thời gian của mọi sự kiện.
- Bộ lọc: Chỉ áp dụng các bộ lọc nghiệp vụ đã xác minh, chẳng hạn mã kho, mã công ty, loại chứng từ, loại đơn hàng kho, khu vực hoạt động, hàng đợi, nhà máy hoặc hệ thống nguồn. Trường mã công ty và loại chứng từ có thể nằm trong các đối tượng liên quan, vì vậy cần ánh xạ chúng trong hệ thống đích.
- Ánh xạ trạng thái: Cấu hình chính xác mã trạng thái hoặc mã quy trình SAP thể hiện đơn hàng kho đã hoàn tất hoặc bị hủy. Xác nhận cách ánh xạ với người phụ trách nghiệp vụ EWM, vì mã trạng thái và nơi lưu trạng thái có thể khác nhau tùy phiên bản và cách triển khai.
- SourceSystem: Đặt giá trị ổn định để nhận diện hệ thống EWM sản xuất hoặc báo cáo. Không lấy giá trị này từ một trường nghiệp vụ có thể để trống.
- LastDataUpdate: Điền thời điểm trích xuất hoặc làm mới dữ liệu nguồn nhất quán cho mọi dòng trong một lần chạy.
- Trích xuất tăng dần: Dùng mốc cao nhất đã lưu dựa trên dấu thời gian nguồn mới nhất được trích xuất thành công, kèm khoảng chồng lấn để nhận dữ liệu đến muộn. Khử trùng lặp bằng mã nguồn đã xác minh nếu có.
- Hiệu năng: Giới hạn khoảng ngày từ đầu, chỉ chọn các cột cần thiết, lọc theo trường có chỉ mục, tránh dùng hàm trên cột dấu thời gian có chỉ mục trong điều kiện lọc và xử lý phạm vi lớn theo từng ngày hoặc tuần. Dùng bản sao phục vụ báo cáo nếu được phép.
- Chiến lược kết hợp: Xác nhận quan hệ số lượng giữa đơn hàng kho và tác vụ kho. Tránh nhân bản dữ liệu ngoài ý muốn khi kết hợp tác vụ, trạng thái, vật tư và dữ liệu đơn vị xử lý. Hãy tổng hợp hoặc chọn đúng bản ghi sự kiện trước khi kết hợp.
- Múi giờ: Cấu hình múi giờ nguồn và quy tắc chuyển đổi. Lưu dấu thời gian nhất quán và ghi rõ cách xử lý giờ mùa hè.
- Điều kiện tiên quyết: Cần có quyền cơ sở dữ liệu chỉ đọc, quyền truy cập lược đồ EWM đã được phê duyệt, ánh xạ từ từ điển dữ liệu đã xác minh, quyền đọc các đối tượng vận hành và lịch sử liên quan, cùng cấu hình nhập ProcessMind đã được phê duyệt. Các mô-đun SAP, giấy phép và quyền cần thiết tùy thuộc kiến trúc EWM đã triển khai, cần được chủ sở hữu hệ thống xác nhận.
Truy vấn mẫu sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_time,
CAST('[End date and time]' AS TIMESTAMP) AS end_time,
CAST('[Source system name]' AS VARCHAR(255)) AS source_system,
CAST(CURRENT_TIMESTAMP AS TIMESTAMP) AS last_data_update
),
warehouse_orders AS (
SELECT
CAST(wo.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wo.[Warehouse order type field] AS VARCHAR(255)) AS WarehouseOrderType,
CAST(wo.[Warehouse order status field] AS VARCHAR(255)) AS WarehouseOrderStatus,
CAST(wo.[Priority field] AS VARCHAR(255)) AS Priority,
CAST(wo.[Warehouse order creation timestamp field] AS TIMESTAMP) AS WarehouseOrderCreatedTime,
CAST(wo.[Warehouse order completion timestamp field] AS TIMESTAMP) AS WarehouseOrderCompletedTime,
CAST(wo.[Warehouse order cancellation timestamp field] AS TIMESTAMP) AS WarehouseOrderCanceledTime,
CAST(wo.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wo.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse order header table] wo
),
warehouse_tasks AS (
SELECT
CAST(wt.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wt.[Warehouse task ID field] AS VARCHAR(255)) AS WarehouseTask,
CAST(wt.[Task category or process type field] AS VARCHAR(255)) AS TaskType,
CAST(wt.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wt.[Task creation timestamp field] AS TIMESTAMP) AS TaskCreatedTime,
CAST(wt.[Task confirmation timestamp field] AS TIMESTAMP) AS TaskConfirmedTime,
CAST(wt.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse task table] wt
),
events AS (
SELECT wo.WarehouseOrder, 'Warehouse Order Created' AS ActivityName, wo.WarehouseOrderCreatedTime AS EventTime, CAST(NULL AS TIMESTAMP) AS EventEndTime, wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo
UNION ALL
SELECT gr.[Warehouse order ID field], 'Goods Receipt Posted', CAST(gr.[Goods receipt posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gr.[Material number field] AS VARCHAR(255)), CAST(gr.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods receipt posting table] gr LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gr.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Started', CAST(pk.[Packing start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Completed', CAST(pk.[Packing completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT st.[Warehouse order ID field], 'Staging Task Confirmed', CAST(st.[Staging confirmation timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(st.[Material number field] AS VARCHAR(255)), CAST(st.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your staging event table] st LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(st.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Started', CAST(ld.[Loading start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Completed', CAST(ld.[Loading completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT gi.[Warehouse order ID field], 'Goods Issue Posted', CAST(gi.[Goods issue posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gi.[Material number field] AS VARCHAR(255)), CAST(gi.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods issue posting table] gi LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gi.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Completed', wo.WarehouseOrderCompletedTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCompletedTime IS NOT NULL
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Canceled', wo.WarehouseOrderCanceledTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCanceledTime IS NOT NULL
)
SELECT
e.WarehouseOrder,
e.ActivityName,
e.EventTime,
e.EventEndTime,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaterialNumber,
e.[User],
e.WarehouseOrderType,
e.WarehouseOrderStatus,
e.Priority
FROM events e
CROSS JOIN params p
WHERE e.WarehouseOrder IS NOT NULL
AND e.EventTime IS NOT NULL
AND e.EventTime >= p.start_time
AND e.EventTime < p.end_time
ORDER BY e.WarehouseOrder, e.EventTime, e.ActivityName; Sẵn sàng bắt đầu chưa?
Bắt đầu tối ưu hóa hoạt động kho ngay hôm nay. Dùng mẫu này để nâng cao hiệu quả và đẩy nhanh quá trình xử lý lệnh.
Giảm lỗi lấy hàng, cải thiện quản lý kho ngay hôm nay
Đạt độ chính xác tồn kho 99,5% và loại bỏ tình trạng chậm xử lý đơn hàng chỉ trong vài tuần.
Không cần thẻ tín dụng, thiết lập chỉ trong vài phút.