Templat Data Perencanaan Produksi
Templat Data Perencanaan Produksi
- Atribut yang disarankan untuk dikumpulkan
- Aktivitas utama yang perlu dilacak
- Panduan praktis untuk ekstraksi data
Atribut Perencanaan Produksi
| Nama | Deskripsi | ||
|---|---|---|---|
| Nama aktivitas ActivityName | Nama peristiwa bisnis atau sistem yang terjadi pada waktu tertentu untuk suatu perintah produksi. | ||
| Deskripsi Nama aktivitas menjelaskan langkah atau perubahan status tertentu dalam proses Production Planning. Peristiwa ini diambil dari log perubahan, pembaruan status, dan rekaman transaksi di SAP ECC PP. Contohnya mencakup tonggak penting seperti 'Perintah produksi dibuat', 'Ketersediaan material diperiksa', atau 'Penerimaan barang dicatat'. Atribut ini menjadi dasar peta proses. Analis dapat menggunakannya untuk melihat urutan peristiwa, menemukan variasi proses, serta mengidentifikasi hambatan atau pengulangan pekerjaan. Nama aktivitas yang jelas dan terperinci sangat penting untuk membuat model proses yang akurat dan mencerminkan kondisi operasional sebenarnya. Mengapa ini penting Atribut ini menentukan langkah-langkah dalam peta proses sehingga alur kerja produksi dapat dilihat, dianalisis, dan dipahami. Sumber data Dihasilkan dari berbagai sumber, termasuk perubahan status di tabel JEST/JSTO, log transaksi, dan dokumen perubahan di CDHDR/CDPOS. Contoh Perintah produksi dirilisPengeluaran barang dicatatKonfirmasi akhir dicatatPerintah selesai secara teknis | |||
| Perintah produksi ProductionOrder | Pengenal unik untuk perintah produksi yang menjadi pengenal kasus utama dalam proses perencanaan dan pelaksanaan produksi. | ||
| Deskripsi Nomor perintah produksi adalah kunci alfanumerik unik yang ditetapkan untuk setiap perintah produksi di SAP ECC PP. Nomor ini menjadi objek utama yang menghubungkan semua aktivitas terkait, mulai dari pembuatan dan perencanaan hingga pelaksanaan dan penyelesaian akhir. Dalam process mining, atribut ini penting untuk mengelompokkan semua peristiwa yang terkait dengan satu proses produksi. Dengan begitu, Anda dapat menganalisis seluruh siklus hidup perintah produksi, melacak progres, mengukur waktu siklus, dan menemukan penyimpangan dari proses standar. Analisis berdasarkan nomor perintah produksi memperlihatkan dengan jelas bagaimana setiap permintaan produksi dipenuhi. Mengapa ini penting Pengenal utama ini menghubungkan semua peristiwa proses terkait sehingga setiap rangkaian produksi dapat direkonstruksi dan dianalisis dari awal hingga akhir. Sumber data Atribut ini terdapat di tabel SAP AUFK, kolom AUFNR. Contoh 1000345100034610003471000348 | |||
| Waktu peristiwa EventTime | Waktu yang menunjukkan secara tepat kapan aktivitas terjadi. | ||
| Deskripsi Waktu peristiwa mencatat tanggal dan waktu saat aktivitas tertentu dijalankan atau status dicatat di sistem. Waktu ini menjadi dasar analisis proses berbasis waktu, termasuk penghitungan waktu siklus, waktu tunggu, dan durasi proses secara keseluruhan. Waktu yang akurat penting untuk menyusun urutan peristiwa dengan benar dan menganalisis kinerja. Analis dapat mengukur durasi antaraktivitas, menemukan keterlambatan, serta membandingkan kinerja dengan jadwal atau perjanjian tingkat layanan. Dalam Production Planning, data ini membantu Anda memahami waktu yang diperlukan untuk setiap tahap perencanaan dan pelaksanaan. Mengapa ini penting Atribut ini menunjukkan urutan kronologis peristiwa. Informasi ini penting untuk menghitung durasi, menganalisis kinerja, dan menemukan hambatan. Sumber data Diperoleh dari berbagai kolom tanggal dan waktu yang terkait dengan transaksi dan perubahan status, seperti BUDAT (Tanggal Posting) dari dokumen material atau waktu perubahan dari CDHDR. Contoh 2023-04-15T10:05:30Z2023-04-15T14:22:00Z2023-04-18T08:59:11Z2023-04-20T16:45:00Z | |||
| Pembaruan data terakhir LastDataUpdate | Waktu yang menunjukkan kapan data untuk peristiwa ini terakhir diperbarui atau diambil. | ||
| Deskripsi Atribut ini mencatat tanggal dan waktu saat data diambil dari sistem sumber ke alat process mining. Atribut ini bukan peristiwa bisnis, melainkan penanda waktu teknis untuk pengelolaan data. Fungsi utamanya adalah memastikan data tetap mutakhir dan membantu administrator serta analis mengetahui seberapa baru data yang sedang dianalisis. Atribut ini penting untuk memastikan analisis proses menggunakan informasi terkini, terutama saat memantau operasional yang sedang berjalan. Mengapa ini penting Atribut ini memastikan data masih mutakhir sehingga analisis menggunakan informasi terbaru yang tersedia. Sumber data Nilai ini biasanya dibuat dan diberi penanda waktu oleh alat atau skrip ekstraksi, transformasi, dan pemuatan data (ETL) saat data dimasukkan. Contoh 2023-10-27T02:00:00Z2023-10-28T02:00:00Z2023-10-29T02:00:00Z | |||
| Sistem sumber SourceSystem | Menunjukkan sistem tertentu tempat data diambil. | ||
| Deskripsi Atribut ini menunjukkan sistem asal suatu rekaman, seperti nama atau ID instans SAP ECC tertentu. Di organisasi yang menggunakan beberapa sistem ERP atau gabungan platform lama dan baru, kolom ini penting untuk melacak asal data dan memahami konteksnya. Dalam analisis, atribut ini memungkinkan Anda memfilter proses berdasarkan sistem asal. Ini berguna untuk membandingkan kinerja proses di berbagai sistem atau memisahkan data dalam proyek konsolidasi data dari beberapa sistem. Mengapa ini penting Atribut ini memberi konteks penting tentang asal data, terutama di lingkungan dengan beberapa instans SAP atau sistem terintegrasi. Sumber data Biasanya ditambahkan saat ekstraksi data, sering kali berdasarkan ID sistem SAP (SY-SYSID). Contoh ECC_PROD_100S4H_FIN_200ECC_DE | |||
| Jumlah yang direncanakan PlannedQuantity | Total jumlah produk yang dijadwalkan untuk dibuat berdasarkan perintah produksi. | ||
| Deskripsi Jumlah yang direncanakan adalah target hasil produksi untuk suatu perintah, sebagaimana ditetapkan pada tahap perencanaan. Nilai ini menjadi acuan untuk mengukur hasil produksi aktual. Atribut ini menjadi dasar KPI terkait kinerja produksi dan ketepatan jadwal, seperti 'Selisih jumlah rencana dan aktual'. Atribut ini membantu menilai akurasi perencanaan produksi dan menemukan masalah sistematis terkait produksi berlebih atau kurang. Analisis nilai ini penting untuk memahami kesesuaian pelaksanaan produksi dengan rencana awal. Mengapa ini penting Atribut ini menjadi acuan untuk mengukur selisih hasil produksi dan menilai akurasi perencanaan. Sumber data Nilai ini tersedia di tabel SAP AFKO, kolom GAMNG (Total Order Quantity). Contoh 1005000751250 | |||
| Jumlah yang diterima DeliveredQuantity | Jumlah aktual produk yang telah dibuat dan diterima ke dalam persediaan. | ||
| Deskripsi Jumlah yang diterima, atau jumlah penerimaan barang, adalah total produk jadi yang dikonfirmasi telah dibuat untuk suatu perintah produksi. Nilai ini diperbarui saat peristiwa 'Penerimaan barang dicatat' terjadi. Atribut ini melengkapi 'Jumlah yang direncanakan' dan penting untuk menghitung KPI 'Selisih jumlah rencana dan aktual'. Nilainya menunjukkan hasil produksi secara pasti sehingga analis dapat menemukan selisih akibat barang rusak, kehilangan hasil, atau masalah produksi lainnya. Perbandingan jumlah yang diterima antar pabrik, produk, atau periode dapat menunjukkan area yang bermasalah dalam hal efisiensi. Mengapa ini penting Atribut ini mengukur hasil aktual proses produksi sehingga dapat dibandingkan langsung dengan target untuk menilai kinerja. Sumber data Terdapat di tabel SAP AFPO, kolom WEMNG (Quantity of Goods Received). Contoh 984950751255 | |||
| Kode produk ProductCode | Pengenal unik untuk material atau produk yang dibuat. | ||
| Deskripsi Kode produk, atau nomor material, menunjukkan barang yang akan dibuat berdasarkan perintah produksi. Elemen data induk ini menghubungkan perencanaan produksi dengan pengelolaan persediaan, penjualan, dan perhitungan biaya. Dalam process mining, pemfilteran atau pengelompokan berdasarkan kode produk penting untuk memahami proses produksi tiap produk. Anda dapat menjawab pertanyaan seperti, 'Produk mana yang memiliki waktu siklus paling lama?' atau 'Apakah produk tertentu lebih sering mengalami masalah kualitas atau keterlambatan material?'. Analisis ini berguna untuk mengelola portofolio produk dan menemukan peluang untuk menstandarkan atau mengoptimalkan proses bagi jenis material tertentu. Mengapa ini penting Atribut ini memungkinkan analisis proses untuk tiap produk dan menunjukkan material yang terkait dengan inefisiensi proses, keterlambatan, atau biaya tinggi. Sumber data Atribut ini terdapat di tabel SAP AFPO, kolom MATNR. Contoh FG-123RM-45AHALB-7890CHEM-22 | |||
| Pabrik produksi ProductionPlant | Fasilitas atau lokasi tempat perintah produksi dijalankan. | ||
| Deskripsi Pabrik produksi adalah unit organisasi utama di SAP yang mewakili fasilitas manufaktur. Setiap perintah produksi dikaitkan dengan pabrik yang menentukan lokasi fisik aktivitas produksi. Analisis proses berdasarkan pabrik produksi memungkinkan perbandingan kinerja antar lokasi. Anda dapat mengetahui pabrik mana yang lebih efisien, mana yang lebih sering mengalami keterlambatan atau kekurangan material, serta di mana praktik terbaik dapat diterapkan. Dimensi ini penting untuk analisis akar masalah pada dashboard terkait hasil produksi dan pemanfaatan sumber daya. Mengapa ini penting Atribut ini memungkinkan perbandingan kinerja antar lokasi produksi untuk menemukan masalah khusus di suatu lokasi atau praktik terbaik. Sumber data Atribut ini tersimpan di tabel SAP AUFK, kolom WERKS. Contoh 100017102000DE01 | |||
| Tanggal mulai aktual ActualStartDate | Waktu aktivitas produksi pertama yang tercatat, menandai dimulainya pelaksanaan. | ||
| Deskripsi Tanggal mulai aktual adalah waktu peristiwa pertama yang menandai dimulainya pekerjaan produksi secara fisik. Nilai ini biasanya diperoleh dari peristiwa konfirmasi produksi pertama atau pengeluaran bahan baku pertama untuk perintah tersebut. Atribut turunan ini penting untuk menganalisis ketepatan jadwal. Nilainya menunjukkan waktu mulai aktual yang dapat dibandingkan dengan 'Tanggal mulai yang direncanakan' untuk menghitung selisih waktu mulai secara tepat. Memahami selisih antara tanggal mulai yang direncanakan dan aktual membantu menemukan keterlambatan praproduksi terkait penyiapan material, persiapan mesin, atau ketersediaan sumber daya. Mengapa ini penting Atribut ini menunjukkan waktu mulai pelaksanaan produksi yang sebenarnya sehingga keterlambatan awal dan total waktu tunggu produksi dapat dihitung dengan akurat. Sumber data Diperoleh dari log peristiwa dengan mencari waktu paling awal dari aktivitas pelaksanaan tertentu, seperti 'Konfirmasi pertama dicatat' atau 'Pengeluaran barang dicatat', untuk setiap perintah produksi. Contoh 2023-05-11T08:30:00Z2023-06-22T14:00:00Z2023-07-02T09:15:00Z | |||
| Tanggal selesai aktual ActualEndDate | Waktu aktivitas produksi terakhir yang menandai penyelesaian aktual perintah. | ||
| Deskripsi Tanggal selesai aktual adalah waktu peristiwa yang menandai selesainya semua aktivitas produksi untuk suatu perintah. Nilai ini biasanya diperoleh dari waktu peristiwa 'Konfirmasi akhir dicatat' atau 'Penerimaan barang dicatat' yang terakhir. Atribut ini penting untuk mengukur total waktu siklus produksi dan menganalisis ketepatan jadwal. Dengan membandingkan 'Tanggal selesai aktual' dan 'Tanggal selesai yang direncanakan', Anda dapat mengetahui apakah perintah selesai tepat waktu. Durasi antara 'Tanggal mulai aktual' dan 'Tanggal selesai aktual' menunjukkan waktu proses produksi yang sebenarnya. Mengapa ini penting Atribut ini menandai selesainya produksi sehingga kinerja pengiriman tepat waktu dan total waktu pelaksanaan dapat diukur dengan akurat. Sumber data Diambil dari event log dengan mencari timestamp maksimum pada aktivitas penyelesaian utama, seperti 'Konfirmasi Akhir Dicatat' atau 'Penerimaan Barang Diposting'. Contoh 2023-05-14T16:00:00Z2023-06-29T11:30:00Z2023-07-05T17:00:00Z | |||
| Grup Perencana PlannerGroup | Grup pengendali MRP atau perencana produksi yang bertanggung jawab atas order. | ||
| Deskripsi Grup Perencana adalah unsur organisasi yang mewakili sekelompok orang yang bertanggung jawab merencanakan dan mengelola sekumpulan material atau order produksi tertentu. Penetapan order ke grup perencana membantu membagi beban kerja dan memperjelas tanggung jawab. Dalam process mining, atribut ini memungkinkan analisis kinerja berdasarkan tim perencanaan yang bertanggung jawab. Anda dapat menjawab pertanyaan seperti, 'Grup perencana mana yang paling sering mengalami penyimpangan jadwal?' atau 'Apakah waktu siklus berbeda antara order yang dikelola oleh grup yang berbeda?'. Hasilnya dapat membantu menyeimbangkan beban kerja dan menentukan kebutuhan pelatihan. Mengapa ini penting Atribut ini memungkinkan analisis kinerja berdasarkan tim yang bertanggung jawab, sehingga Anda dapat melihat perbedaan efektivitas perencanaan dan beban kerja. Sumber data Ini adalah MRP Controller, yang terdapat di tabel SAP AFKO, kolom DISPO. Contoh 001002P01P02 | |||
| Ketersediaan Material MaterialAvailabilityStatus | Menunjukkan apakah semua komponen yang dibutuhkan untuk order produksi tersedia. | ||
| Deskripsi Status Ketersediaan Material merupakan indikator penting kesiapan produksi. Sistem menentukan status ini dengan memeriksa ketersediaan semua material komponen yang dibutuhkan untuk order. Status 'Tersedia' berarti produksi dapat berjalan tanpa tertunda karena material, sedangkan 'Kekurangan' menunjukkan adanya masalah. Atribut ini penting untuk dashboard 'Analisis Dampak Kekurangan Material'. Dengan menganalisis waktu tunggu order saat material tidak tersedia, perusahaan dapat mengukur dampak masalah rantai pasok terhadap jadwal produksi. Analisis ini membantu menemukan pemasok yang tidak andal atau komponen bermasalah yang sering menyebabkan keterlambatan. Mengapa ini penting Atribut ini langsung menunjukkan keterlambatan akibat kekurangan material, salah satu penyebab utama penyimpangan jadwal produksi. Sumber data Informasi ini tidak disimpan dalam satu kolom khusus. Nilainya berasal dari pemeriksaan ketersediaan (pemeriksaan ATP). Hasilnya biasanya dapat dilihat di transaksi CO02 atau pemeriksaan ketersediaan kolektif COHV. Statusnya sendiri, misalnya MACM (Material sudah dialokasikan), mungkin tercatat di sistem. Lihat dokumentasi SAP ECC PP. Contoh TersediaKekuranganTersedia SebagianBelum Diperiksa | |||
| Pengguna yang Bertanggung Jawab ResponsibleUser | ID pengguna yang membuat atau terakhir mengubah order produksi. | ||
| Deskripsi Pengguna yang Bertanggung Jawab menunjukkan akun pengguna SAP yang terkait dengan peristiwa penting dalam siklus order produksi, seperti pembuatan atau perilisan order. Informasi ini membantu memastikan akuntabilitas dan ketertelusuran tindakan di dalam sistem. Dalam process mining, atribut ini digunakan untuk menganalisis variasi proses berdasarkan perilaku pengguna. Atribut ini dapat membantu menemukan pengguna yang mungkin memerlukan pelatihan tambahan atau yang mengikuti prosedur nonstandar. Atribut ini juga mendukung analisis sumber daya dengan menunjukkan pembagian pekerjaan di antara pengguna. Mengapa ini penting Atribut ini menghubungkan aktivitas proses dengan orang tertentu, sehingga Anda dapat menganalisis kinerja per pengguna dan memperjelas akuntabilitas. Sumber data Pengguna yang membuat order tercatat di AUFK-ERNAM. Pengguna yang terakhir mengubahnya tercatat di AUFK-AENAM. Dokumen perubahan (CDHDR-USERNAME) menyimpan riwayat pengguna untuk perubahan tertentu. Contoh JSMITHPROD_PLANNER1BATCH_USERAMILLER | |||
| Prioritas Produksi ProductionPriority | Klasifikasi yang menunjukkan tingkat urgensi atau prioritas order produksi. | ||
| Deskripsi Prioritas Produksi menunjukkan tingkat kepentingan relatif suatu order produksi. Dengan informasi ini, penjadwal produksi dan petugas di lantai produksi dapat menentukan urutan pekerjaan agar order penting diproses lebih cepat. Analisis atribut ini membantu menilai efektivitas sistem prioritas. Bandingkan waktu siklus order berprioritas tinggi dan rendah untuk mengetahui apakah order mendesak benar-benar diproses lebih cepat. Jika tidak, mungkin ada masalah dalam komunikasi, alokasi sumber daya, atau pelaksanaan proses. Mengapa ini penting Atribut ini membantu menilai efektivitas pengelolaan prioritas, termasuk apakah order yang lebih mendesak selesai lebih cepat daripada order biasa. Sumber data Kolom ini biasanya tidak tersedia secara standar di header order produksi. Kolom tersebut mungkin berupa kolom khusus, diturunkan dari prioritas order penjualan, atau menjadi bagian dari sistem klasifikasi. Lihat dokumentasi SAP ECC PP atau konfigurasi sistem Anda. Contoh TinggiSedangRendahMendesak | |||
| Selisih Kuantitas QuantityVariance | Selisih antara kuantitas produksi yang direncanakan dan kuantitas aktual yang dikirim. | ||
| Deskripsi Selisih Kuantitas adalah metrik hasil perhitungan yang mengukur perbedaan antara hasil produksi dan rencana awal. Nilainya dihitung dengan mengurangi 'Kuantitas Rencana' dari 'Kuantitas Terkirim'. Selisih positif menunjukkan produksi berlebih, sedangkan selisih negatif menunjukkan produksi kurang atau kehilangan hasil. Atribut ini penting untuk dashboard 'Hasil Produksi Rencana vs. Aktual' dan KPI terkait. Analisis selisih membantu menemukan masalah pada hasil produksi, tingkat produk cacat, atau kesalahan entri data. Atribut ini mengukur secara langsung keandalan proses produksi dalam mencapai target hasil. Mengapa ini penting Atribut ini mengukur kesesuaian hasil produksi dengan rencana dan menyoroti kemungkinan masalah pada hasil produksi, produk cacat, atau pengendalian proses. Sumber data Kolom hasil perhitungan: 'DeliveredQuantity' - 'PlannedQuantity'. Contoh -2-5005 | |||
| Status Kepatuhan Jadwal ScheduleAdherenceStatus | Penanda yang menunjukkan apakah order produksi selesai pada atau sebelum tanggal akhir yang direncanakan. | ||
| Deskripsi Status Kepatuhan Jadwal adalah atribut boolean atau kategoris hasil perhitungan yang memberikan gambaran singkat tentang ketepatan waktu. Nilainya diperoleh dengan membandingkan 'Tanggal Akhir Aktual' dengan 'Tanggal Akhir Rencana'. Jika tanggal akhir aktual sama dengan atau lebih awal dari tanggal akhir rencana, statusnya 'Tepat Waktu'. Jika tidak, statusnya 'Terlambat'. Atribut ini memudahkan analisis dan visualisasi di dashboard. Anda dapat memfilter dan mengelompokkan data untuk menghitung KPI 'Tingkat Kepatuhan Jadwal' serta menemukan penyebab utama keterlambatan order, seperti produk, pabrik, atau kekurangan material tertentu. Mengapa ini penting Atribut ini memudahkan analisis kinerja dengan mengelompokkan order menjadi 'Tepat Waktu' atau 'Terlambat', sehingga keandalan jadwal mudah diukur dan dilaporkan. Sumber data Kolom hasil perhitungan: IF('ActualEndDate' <= 'PlannedEndDate', 'Tepat Waktu', 'Terlambat'). Contoh Tepat WaktuTerlambat | |||
| Status Order Produksi ProductionOrderStatus | Status pemrosesan order produksi saat ini, seperti Dibuat, Dirilis, atau Selesai Secara Teknis. | ||
| Deskripsi Status Order Produksi menunjukkan tahap order saat ini dalam siklusnya. SAP menggunakan kode status untuk mengelola perkembangan order, misalnya CRTD (Dibuat), REL (Dirilis), CNF (Dikonfirmasi), DLV (Dikirim), dan TECO (Selesai Secara Teknis). Menganalisis waktu yang dihabiskan dalam setiap status merupakan bagian penting dari process mining produksi. Analisis ini membantu mengetahui berapa lama order menunggu dirilis setelah dibuat atau berapa lama order berada dalam status terkirim sebagian. Dengan mencatat perubahan status sebagai aktivitas, Anda bisa melihat alur proses secara umum. Mengapa ini penting Status ini menunjukkan perkembangan order dan membantu menemukan hambatan yang membuat order tertahan dalam waktu lama. Sumber data Informasi status disimpan dalam tabel JEST dan JSTO, yang terhubung ke nomor objek order (AUFK-OBJNR). Teks status tersedia di TJ02T. Status biasanya dibaca melalui modul fungsi seperti STATUS_TEXT_EDIT. Contoh CRTD (Dibuat)REL (Dirilis)DLV (Dikirim)TECO (Selesai Secara Teknis) | |||
| Tanggal mulai yang direncanakan PlannedStartDate | Tanggal terjadwal untuk memulai produksi berdasarkan perintah. | ||
| Deskripsi Tanggal mulai yang direncanakan adalah parameter jadwal utama yang ditetapkan saat perencanaan dan penjadwalan produksi. Tanggal ini menjadi target dimulainya aktivitas produksi untuk suatu perintah. Atribut ini penting untuk mengukur ketepatan jadwal. Dengan membandingkan 'Tanggal mulai yang direncanakan' dengan waktu mulai produksi aktual, misalnya waktu peristiwa 'Konfirmasi pertama dicatat', organisasi dapat menemukan keterlambatan awal produksi. Menganalisis penyebab keterlambatan ini merupakan salah satu kegunaan utama process mining di area ini. Mengapa ini penting Atribut ini menjadi acuan untuk mengukur ketepatan jadwal dan menemukan keterlambatan saat produksi mulai dijalankan. Sumber data Ini adalah tanggal mulai dasar yang terdapat di tabel SAP AFKO, kolom GSTRP. Contoh 2023-05-102023-06-222023-07-01 | |||
| Tanggal selesai yang direncanakan PlannedEndDate | Tanggal terjadwal untuk menyelesaikan produksi berdasarkan perintah. | ||
| Deskripsi Tanggal selesai yang direncanakan adalah target penyelesaian perintah produksi yang ditetapkan saat penjadwalan. Tanggal ini menentukan jangka waktu yang diharapkan untuk menyelesaikan semua aktivitas produksi, termasuk konfirmasi akhir dan penerimaan barang. Tanggal ini penting untuk menghitung KPI 'Tingkat ketepatan jadwal'. Dengan membandingkan 'Tanggal selesai yang direncanakan' dengan waktu penyelesaian aktual, misalnya waktu peristiwa 'Penerimaan barang dicatat' atau 'Konfirmasi akhir dicatat', Anda dapat mengetahui apakah perintah selesai tepat waktu. Analisis ini membantu menilai keandalan jadwal produksi dan menemukan penyebab utama keterlambatan pengiriman. Mengapa ini penting Tanggal ini menjadi patokan untuk menentukan apakah perintah produksi selesai tepat waktu. Hal ini berdampak langsung pada kepuasan pelanggan dan keandalan perencanaan. Sumber data Ini adalah tanggal selesai dasar yang terdapat di tabel SAP AFKO, kolom GLTRP. Contoh 2023-05-152023-06-282023-07-05 | |||
Aktivitas Perencanaan Produksi
| Aktivitas | Deskripsi | ||
|---|---|---|---|
| Konfirmasi akhir dicatat | Aktivitas ini menunjukkan bahwa semua operasi untuk perintah produksi telah selesai di lantai produksi. Tandanya adalah entri konfirmasi akhir untuk operasi terakhir. | ||
| Mengapa ini penting Tonggak ini menandai berakhirnya aktivitas produksi fisik. Durasi dari konfirmasi pertama hingga konfirmasi akhir menunjukkan waktu pelaksanaan produksi yang sebenarnya. Sumber data Peristiwa ini tercatat saat sistem menetapkan status 'CNF' (I0009, Confirmed). Biasanya, status ini dipicu oleh entri konfirmasi akhir di tabel AFRU (AFRU-AUERU = 'X'). Perubahan status dicatat di JCDS. Pengumpulan data Temukan waktu saat status 'CNF' ditetapkan, atau cari rekaman konfirmasi terakhir di AFRU. Jenis peristiwa explicit | |||
| Konfirmasi pertama dicatat | Peristiwa ini menandai dimulainya pekerjaan produksi yang sebenarnya untuk perintah tersebut. Peristiwa tercatat saat konfirmasi waktu pertama untuk operasi apa pun dalam perintah produksi dimasukkan ke sistem. | ||
| Mengapa ini penting Aktivitas ini menunjukkan waktu mulai produksi yang sebenarnya. Informasi ini penting untuk mengukur ketepatan jadwal dan menemukan keterlambatan antara alokasi sumber daya dan dimulainya pekerjaan. Sumber data Peristiwa ini dapat diperkirakan dengan mencari tanggal posting paling awal (AFRU-BUDAT) dari semua konfirmasi untuk perintah di tabel AFRU. Entri pertama menandai dimulainya produksi fisik. Pengumpulan data Temukan rekaman konfirmasi pertama untuk perintah berdasarkan tanggal posting di tabel AFRU. Jenis peristiwa inferred | |||
| Penerimaan barang dicatat | Peristiwa ini mencatat penerimaan produk jadi dari perintah produksi ke persediaan. Artinya, barang yang diproduksi kini tersedia untuk dikirim atau diproses lebih lanjut. | ||
| Mengapa ini penting Ini adalah tonggak penting penyelesaian yang menunjukkan hasil akhir proses produksi. Waktu dari rilis hingga penerimaan barang merupakan total waktu tunggu produksi. Sumber data Dicatat sebagai dokumen material di tabel MKPF/MSEG dengan jenis pergerakan yang biasanya '101' dan merujuk ke perintah produksi. Sistem juga menetapkan status 'DLV' (I0012, Delivered) pada perintah. Pengumpulan data Ambil tanggal posting dari dokumen material dengan jenis pergerakan '101' atau waktu perubahan status 'DLV'. Jenis peristiwa explicit | |||
| Perintah produksi dibuat | Peristiwa ini menandai pembuatan perintah produksi baru, biasanya dari proses perencanaan atau entri manual. Peristiwa tercatat secara eksplisit saat rekaman perintah baru disimpan di sistem dan mendapat status 'CRTD' (Created). | ||
| Mengapa ini penting Peristiwa ini menjadi titik awal setiap kasus perintah produksi. Analisis waktu dari peristiwa ini hingga rilis membantu menemukan keterlambatan dalam perencanaan praproduksi dan penyiapan administrasi. Sumber data Peristiwa ini diambil dari tanggal pembuatan perintah produksi (AUFK-ERDAT) dan waktunya (AUFK-ERZET). Sistem menetapkan status 'CRTD' (I0001), yang dicatat di tabel JEST dan JCDS serta ditautkan ke nomor objek perintah (AUFK-OBJNR). Pengumpulan data Lacak waktu pembuatan dan penetapan status 'CRTD'. Jenis peristiwa explicit | |||
| Perintah produksi dirilis | Aktivitas ini menandai persetujuan resmi dan rilis perintah produksi untuk dilaksanakan. Setelah dirilis, reservasi material mulai berlaku dan aktivitas produksi seperti pengeluaran barang serta konfirmasi dapat dimulai. | ||
| Mengapa ini penting Ini adalah tonggak penting yang menandai peralihan dari perencanaan ke pelaksanaan. Waktu antara pembuatan dan rilis menjadi indikator utama efisiensi perencanaan. Sumber data Peristiwa ini tercatat secara eksplisit saat sistem menetapkan status 'REL' (I0002) pada perintah produksi. Perubahan beserta waktunya dicatat di tabel JCDS dan ditautkan ke nomor objek perintah (AUFK-OBJNR). Pengumpulan data Temukan waktu saat status 'REL' mulai berlaku untuk perintah tersebut. Jenis peristiwa explicit | |||
| Perintah selesai secara teknis | Ini adalah langkah penutupan administratif yang mengakhiri perintah produksi dari sisi logistik. Langkah ini mencegah pergerakan material atau konfirmasi lebih lanjut dan memungkinkan penyelesaian keuangan. | ||
| Mengapa ini penting Ini adalah titik akhir definitif siklus hidup perintah dari sisi logistik. Analisis peristiwa ini membantu memahami total durasi proses, termasuk tugas administratif setelah produksi. Sumber data Peristiwa ini tercatat secara eksplisit saat sistem menetapkan status 'TECO' (I0045, Technically Completed) pada perintah. Perubahan beserta waktunya dicatat di tabel JCDS. Pengumpulan data Temukan waktu saat status 'TECO' mulai berlaku untuk perintah di JCDS. Jenis peristiwa explicit | |||
| Data perintah diubah | Peristiwa ini mencatat perubahan penting pada perintah produksi setelah dibuat, seperti perubahan jumlah yang direncanakan, tanggal, atau BOM. Sistem mencatat perubahan ini untuk keperluan audit. | ||
| Mengapa ini penting Melacak perubahan membantu menemukan ketidakstabilan proses dan perencanaan ulang yang sering terjadi. Perubahan yang terlalu sering dapat mengindikasikan perencanaan awal yang kurang baik, permintaan yang berubah-ubah, atau data yang tidak akurat. Sumber data Perubahan pada kolom penting di tabel seperti AFKO (header perintah) dan AFPO (item perintah) dicatat dalam tabel dokumen perubahan CDHDR (header) dan CDPOS (item). Setiap perubahan yang relevan dapat diambil sebagai aktivitas. Pengumpulan data Ambil entri log perubahan dari tabel CDHDR dan CDPOS untuk kelas objek perintah produksi. Jenis peristiwa explicit | |||
| Ketersediaan material diperiksa | Menunjukkan pemeriksaan untuk memastikan semua komponen yang diperlukan bagi perintah produksi tersedia. Pemeriksaan ini dapat berjalan otomatis saat perintah dibuat atau dirilis, maupun dipicu secara manual. | ||
| Mengapa ini penting Aktivitas ini penting untuk memahami keterlambatan akibat kekurangan material. Pemeriksaan yang sering dilakukan atau waktu tunggu yang lama hingga material tersedia dapat menunjukkan masalah pada rantai pasok atau pengelolaan persediaan. Sumber data Sistem menetapkan status seperti 'MACM' (material committed) atau 'MSPT' (material shortage). Waktu pelaksanaan dapat diperkirakan dari waktu perubahan status di tabel JEST/JCDS. Hasilnya terlihat di header perintah. Pengumpulan data Perkirakan dari waktu perubahan status terkait ketersediaan material, seperti 'MACM' atau 'MSPT'. Jenis peristiwa inferred | |||
| Konfirmasi antara dicatat | Menunjukkan pembaruan progres perintah produksi melalui konfirmasi sebagian atas suatu operasi. Hal ini umum terjadi pada perintah berdurasi panjang yang perlu dipantau sebelum selesai. | ||
| Mengapa ini penting Analisis konfirmasi antara membantu memantau progres siklus produksi yang panjang dan menemukan hambatan di dalam proses produksi, bukan hanya di awal atau akhir. Sumber data Diambil dari rekaman konfirmasi di tabel AFRU yang tidak ditandai sebagai konfirmasi akhir. Setiap entri memiliki tanggal posting (AFRU-BUDAT) dan waktu. Pengumpulan data Ambil semua rekaman konfirmasi dari AFRU yang tidak ditandai sebagai konfirmasi akhir untuk suatu operasi. Jenis peristiwa explicit | |||
| Pembatalan perintah ditetapkan | Peristiwa ini menunjukkan bahwa perintah produksi dibatalkan sebelum selesai. Biasanya, pembatalan dilakukan dengan menetapkan status tertentu atau tanda penghapusan sehingga pemrosesan lebih lanjut tidak dapat dilakukan. | ||
| Mengapa ini penting Hasil ini tidak diharapkan, tetapi penting untuk dilacak. Analisis perintah yang dibatalkan dapat mengungkap masalah pada perkiraan permintaan, akurasi perencanaan, atau pengelolaan data induk. Sumber data Peristiwa ini dapat diperkirakan dari penetapan status 'DLFL' (I0076, Deletion flag) atau status 'Canceled' tertentu jika dikonfigurasi. Perubahan beserta waktunya dicatat di tabel JCDS. Pengumpulan data Temukan waktu saat tanda penghapusan ('DLFL') atau status pembatalan ditetapkan untuk perintah. Jenis peristiwa inferred | |||
| Pengeluaran barang dicatat | Aktivitas ini menunjukkan pengambilan material komponen dari persediaan untuk digunakan dalam perintah produksi. Ini mengonfirmasi bahwa bahan baku atau barang setengah jadi yang diperlukan telah disiapkan untuk produksi. | ||
| Mengapa ini penting Peristiwa ini menandai dimulainya pemakaian material. Keterlambatan antara rilis perintah dan pengeluaran barang dapat menunjukkan masalah pada logistik gudang, penyiapan material, atau akurasi persediaan. Sumber data Dicatat sebagai dokumen material di tabel MKPF (header) dan MSEG (item), dengan jenis pergerakan yang biasanya '261' dan merujuk ke nomor perintah produksi (MSEG-AUFNR). Pengumpulan data Ambil tanggal posting (MKPF-BUDAT) dokumen material dengan jenis pergerakan '261' yang ditautkan ke perintah. Jenis peristiwa explicit | |||
| Penyelesaian biaya perintah dijalankan | Menunjukkan penyelesaian keuangan perintah produksi, yaitu saat biaya yang terkumpul dialokasikan ke objek biaya yang sesuai. Ini adalah langkah terakhir dalam siklus hidup perintah dari sisi pengendalian biaya. | ||
| Mengapa ini penting Meski merupakan aktivitas keuangan, keterlambatan penyelesaian dapat menunjukkan masalah pada pelaporan biaya atau akurasi data perintah. Peristiwa ini menandai penutupan keuangan proses produksi yang sebenarnya. Sumber data Peristiwa ini dapat diperkirakan saat saldo perintah menjadi nol atau saat status sistem 'SETC' (I0076, Settlement rule created) diikuti oleh log proses penyelesaian. Penyelesaian aktual dicatat di tabel pengendalian biaya seperti COSP dan COSS. Pengumpulan data Perkirakan dari dokumen penyelesaian yang ditautkan ke perintah di tabel CO atau dari aktivasi status 'SETC'. Jenis peristiwa inferred | |||
Panduan Ekstraksi
Langkah
- Buat InfoSet di SAP Query: Gunakan kode transaksi
SQ02. Buat InfoSet baru, misalnyaZPP_EVENTLOG. Pilih sumber data 'Gabungan tabel menggunakan tabel dasar'. GunakanAUFK(data induk order) sebagai tabel dasar. - Gabungkan Tabel yang Dibutuhkan: Tambahkan tabel berikut ke gabungan InfoSet. Sistem mungkin menyarankan relasi, tetapi pastikan semuanya benar:
AUFKkeAFKO(data header order PP):AUFK-AUFNR = AFKO-AUFNRAUFKkeJEST(status objek individual):AUFK-OBJNR = JEST-OBJNRJESTkeJCDS(dokumen perubahan status sistem/pengguna):JEST-OBJNR = JCDS-OBJNRANDJEST-STAT = JCDS-STAT. Catatan: Gabungan ini digunakan untuk membaca riwayat perubahan status.AUFKkeAFRU(konfirmasi penyelesaian order):AUFK-AUFNR = AFRU-AUFNRAUFKkeMSEG(segmen dokumen material):AUFK-AUFNR = MSEG-AUFNRMSEGkeMKPF(header dokumen material):MSEG-MBLNR = MKPF-MBLNRANDMSEG-MJAHR = MKPF-MJAHR
- Tentukan Grup Kolom: Tarik kolom yang diperlukan dari tabel sumber ke grup kolom. Pastikan semua kolom yang dibutuhkan untuk kueri akhir disertakan, seperti
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATE, danMKPF-BUDAT. - Tambahkan Kolom Khusus dan Kode: Di InfoSet, buka tab 'Extras'. Buat kolom khusus
ActivityName,EventTime,SourceSystem, danLastDataUpdate, lalu tulis kode ABAP untuk mengisinya berdasarkan logika di bagian kueri. Logika ini akan menelusuri perubahan status, konfirmasi, dan dokumen material untuk membuat satu rekaman bagi setiap peristiwa bisnis. Ini langkah paling rumit karena Anda mengubah data tabular menjadi format event log di bagian kode InfoSet. - Buat dan Simpan InfoSet: Setelah semua gabungan, kolom, dan kode khusus siap, simpan dan buat InfoSet.
- Buat SAP Query: Gunakan kode transaksi
SQ01. Buat kueri baru, misalnyaZPP_EVENTS, berdasarkan InfoSet yang dibuat pada langkah sebelumnya. - Atur Tata Letak Kueri: Di perancang kueri, tentukan kolom pada layar pemilihan. Kolom yang disarankan mencakup Order Produksi
AUFNR, PabrikWERKS, Jenis OrderAUART, dan rentang tanggal pembuatan orderAUFK-ERDAT. - Tentukan Daftar Keluaran: Pilih kolom yang akan ditampilkan dalam laporan. Daftar ini harus sama persis dengan kolom yang dibutuhkan untuk event log, termasuk kolom khusus seperti
ActivityNamedanEventTime. - Jalankan Kueri: Jalankan kueri dengan kriteria yang diinginkan, misalnya untuk order produksi dalam 3 hingga 6 bulan terakhir.
- Ekspor Data: Setelah hasil kueri ditampilkan, ekspor daftarnya. Format yang paling umum dan andal adalah 'Spreadsheet' atau 'Local File' dengan format tab-separated atau CSV.
- Siapkan Data untuk ProcessMind: Buka file hasil ekspor di program spreadsheet. Pastikan header kolom sesuai dengan atribut yang dibutuhkan (
ProductionOrder,ActivityName,EventTime, dan sebagainya), serta format tanggal dan waktu diEventTimekonsisten dan sesuai standar, misalnya YYYY-MM-DD HH:MI:SS. Simpan file sebagai CSV untuk diunggah.
Konfigurasi
- Gabungan InfoSet: Metode ini mengandalkan InfoSet kompleks yang menggabungkan tabel header, status, konfirmasi, dan pergerakan material. Gabungan utamanya adalah
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRU, danAUFK->MSEG->MKPF. Gabungan yang keliru atau tidak efisien dapat memperlambat kinerja atau menghasilkan data yang tidak akurat. - Kriteria Pemilihan: Tentukan rentang pemilihan yang dapat dikelola agar kinerja sistem tidak terganggu. Kolom utama pada layar awal kueri sebaiknya mencakup:
- Pabrik Produksi (
AUFK-WERKS) - Jenis Order Produksi (
AUFK-AUART) - Tanggal Pembuatan Order (
AUFK-ERDAT): Sebaiknya ekstrak data untuk periode berjalan selama 3-6 bulan agar ukuran dataset tetap terkendali.
- Pabrik Produksi (
- Status Sistem: Logika untuk mengenali peristiwa seperti 'Dibuat', 'Dirilis', 'Selesai Secara Teknis', dan 'Dibatalkan' bergantung pada kode status sistem tertentu, misalnya I0001, I0002, I0045, I0047. Kode ini umumnya sama di berbagai sistem SAP, tetapi tetap perlu diverifikasi.
- Jenis Pergerakan: Peristiwa seperti 'Pengeluaran Barang' dan 'Penerimaan Barang' dikenali melalui Jenis Pergerakan tertentu (
MSEG-BWART), biasanya '261' dan '101'. Pastikan nilainya sesuai dengan konfigurasi organisasi Anda. - Otorisasi: Pengguna yang menjalankan kueri memerlukan otorisasi untuk mengakses transaksi
SQ01,SQ02, danSQ03, serta akses untuk menampilkan semua tabel yang mendasarinya (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF).
Contoh kueri abap
/*
The following ABAP-style SQL script represents the complete logic required to build the event log.
This logic must be implemented within the code sections of the SQ02 InfoSet, as a direct SQL query of this nature is not run.
Each SELECT block corresponds to a specific business activity.
*/
-- 1. Production Order Created
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Created' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0001' AND JCDS.INACT = ''
UNION ALL
-- 2. Material Availability Checked (using 'Material shortage' status as an indicator)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Material Availability Checked' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0033' AND JCDS.INACT = '' -- I0033 is MSPT (Material Shortage)
UNION ALL
-- 3. Production Order Released
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Released' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0002' AND JCDS.INACT = ''
UNION ALL
-- 4. Order Data Changed (using last change date as a proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Data Changed' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime, -- Time is not available in AUFK
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.AEDAT IS NOT NULL AND AUFK.AEDAT > AUFK.ERDAT
UNION ALL
-- 5. Goods Issue Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Issue Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
CONF.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
CONF.EventTime,
CONF.ProductionPlant,
CONF.ProductCode,
CONF.PlannedQuantity,
CONF.DeliveredQuantity,
CONF.ActualStartDate,
CONF.ActualEndDate,
CONF.SourceSystem,
CONF.LastDataUpdate
FROM (
SELECT
AUFK.AUFNR AS ProductionOrder,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
ROW_NUMBER() OVER(PARTITION BY AUFK.AUFNR ORDER BY AFRU.BUDAT, AFRU.ERFZEIT) as rn
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
) AS CONF
WHERE CONF.rn = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'T' -- T = Partial Confirmation
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'E' -- E = Final Confirmation
UNION ALL
-- 9. Goods Receipt Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Technically Completed' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0045' AND JCDS.INACT = ''
UNION ALL
-- 11. Order Settlement Ran (using 'Closed' status as proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Settlement Ran' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0046' AND JCDS.INACT = '' -- I0046 is CLSD (Closed)
UNION ALL
-- 12. Order Cancellation Set
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0047' AND JCDS.INACT = '' -- I0047 is CNF (Confirmed), use I0076 for Canceled. Recorrecting. Use Deletion Flag instead.
-- Corrected Logic for Cancellation:
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.LOEKZ = 'X'; Langkah
- Siapkan Akses Database: Dapatkan kredensial hanya-baca untuk database SAP ECC yang mendasarinya. Anda memerlukan alamat server, port, nama database, nama pengguna, dan kata sandi. Koordinasikan akses ini dengan tim SAP Basis dan administrasi database.
- Tentukan Skema SAP: Cari tahu skema database yang menyimpan tabel SAP. Skemanya sering bernama
SAPSR3atau nama lain yang khusus untuk sistem Anda. Ganti placeholder[Your SAP Schema]dalam kueri dengan nama tersebut. - Siapkan Kueri SQL: Salin seluruh kueri SQL yang tersedia di bagian
query. Kueri ini dirancang untuk mengekstrak semua aktivitas yang ditentukan ke dalam satu format event log. - Atur Parameter Kueri: Sebelum menjalankan kueri, ubah placeholder di dalamnya. Isi
[Start Date]dan[End Date]untuk menentukan rentang waktu ekstraksi. Sebaiknya filter juga berdasarkan pabrik produksi (WERKS) atau jenis order (AUART) untuk membatasi volume data. - Hubungkan dan Jalankan: Gunakan klien SQL standar seperti DBeaver, SAP HANA Studio, atau skrip khusus (Python, Java) untuk terhubung ke database SAP dengan kredensial dari langkah 1.
- Jalankan Kueri: Tempelkan kueri SQL yang sudah diatur ke klien, lalu jalankan. Proses ini mungkin memerlukan beberapa menit, bergantung pada rentang tanggal dan ukuran sistem.
- Periksa Hasil Awal: Setelah kueri selesai, periksa beberapa ratus baris pertama untuk memastikan kolom seperti
ProductionOrder,ActivityName, danEventTimeterisi dengan benar dan nilainya masuk akal. - Ekspor ke CSV: Ekspor seluruh hasil dari klien SQL ke file CSV. Pastikan file menggunakan encoding UTF-8 agar karakter tidak bermasalah.
- Siapkan CSV untuk Diunggah: Buka file CSV dan pastikan header kolom sesuai dengan atribut yang dibutuhkan (
ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdate, dan sebagainya). Pastikan format kolomEventTimekonsisten, misalnyaYYYY-MM-DD HH:MI:SS. - Unggah ke ProcessMind: File CSV yang sudah disiapkan kini siap diunggah ke platform ProcessMind untuk dianalisis.
Konfigurasi
- Skema Database: Tentukan skema SAP tempat tabel perencanaan produksi disimpan. Ganti placeholder
[Your SAP Schema]dalam kueri dengan nama yang benar untuk lingkungan Anda, misalnyaSAPSR3. - Rentang Tanggal: Filter berdasarkan rentang tanggal tertentu sangat penting untuk menjaga kinerja. Kueri menggunakan tanggal pembuatan order (
AUFK.ERDAT) sebagai filter. Sebaiknya mulai dengan periode terbaru selama 3 hingga 6 bulan agar volume data tetap terkendali. - Jenis Order Produksi: Untuk memfokuskan analisis, filter kueri berdasarkan kolom jenis order produksi (
AUFK.AUART). Dengan begitu, Anda dapat menyertakan atau mengecualikan jenis tertentu, seperti order produksi standar, order proses, atau order pengerjaan ulang. - Pabrik Produksi: Sebaiknya filter berdasarkan satu atau beberapa pabrik produksi (
AFKO.WERKS). Mengekstrak data dari semua pabrik sekaligus dapat menghabiskan banyak sumber daya. - Akses Database: Metode ini memerlukan pengguna database yang setidaknya memiliki izin baca untuk tabel berikut:
AUFK,AFKO,JCDS,JEST,AFRU,MSEG,MKPF. Tidak semua pengguna SAP memiliki akses langsung ke database. Akses ini memerlukan otorisasi khusus.
Contoh kueri sql
WITH Orders AS (
SELECT
aufk.AUFNR AS ProductionOrder,
afko.WERKS AS ProductionPlant,
afko.PLNBEZ AS ProductCode,
afko.GAMNG AS PlannedQuantity,
afko.GMEIN AS PlannedUnit,
afko.GEMNG AS DeliveredQuantity,
CASE
WHEN afko.GSTRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GSTRI || afko.GSUZI, 'YYYYMMDDHH24MISS')
END AS ActualStartDate,
CASE
WHEN afko.GETRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GETRI || afko.GEUZI, 'YYYYMMDDHH24MISS')
END AS ActualEndDate,
aufk.OBJNR,
aufk.ERDAT AS CreationDate,
aufk.ERFAS AS CreationTime
FROM
"[Your SAP Schema]".AUFK aufk
JOIN
"[Your SAP Schema]".AFKO afko ON aufk.AUFNR = afko.AUFNR
WHERE
aufk.AUTYP = '10' -- Filter for Production Orders
AND aufk.ERDAT BETWEEN '[Start Date]' AND '[End Date]'
-- AND afko.WERKS IN ('[Your Plant]', '[Another Plant]') -- Optional: Filter by Plant
-- AND aufk.AUART IN ('[Your Order Type]') -- Optional: Filter by Order Type
),
Confirmations AS (
SELECT
o.ProductionOrder,
a.RUECK AS ConfirmationNumber,
a.RMZHL AS ConfirmationCounter,
TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
a.AUERU AS IsFinalConfirmation,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') ASC) as rn_asc,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') DESC) as rn_desc
FROM
Orders o
JOIN
"[Your SAP Schema]".AFRU a ON o.ProductionOrder = a.AUFNR
)
-- 1. Production Order Created
SELECT
o.ProductionOrder,
'Production Order Created' AS ActivityName,
TO_TIMESTAMP(o.CreationDate || o.CreationTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
UNION ALL
-- 2. Material Availability Checked (using 'Material Committed' status as proxy)
SELECT
o.ProductionOrder,
'Material Availability Checked' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0006' AND jcds.INACT != 'X'
UNION ALL
-- 3. Production Order Released
SELECT
o.ProductionOrder,
'Production Order Released' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0002' AND jcds.INACT != 'X'
UNION ALL
-- 4. Order Data Changed
SELECT
o.ProductionOrder,
'Order Data Changed' AS ActivityName,
TO_TIMESTAMP(aufk.AEDAT || aufk.AEZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".AUFK aufk ON o.ProductionOrder = aufk.AUFNR
WHERE aufk.AEDAT > o.CreationDate
UNION ALL
-- 5. Goods Issue Posted
SELECT
o.ProductionOrder,
'Goods Issue Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
c.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
c.ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc > 1 AND c.IsFinalConfirmation IS NULL
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
c.ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.IsFinalConfirmation = 'X'
UNION ALL
-- 9. Goods Receipt Posted
SELECT
o.ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
o.ProductionOrder,
'Order Technically Completed' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0045' AND jcds.INACT != 'X'
UNION ALL
-- 11. Order Settlement Ran
SELECT
o.ProductionOrder,
'Order Settlement Ran' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0046' AND jcds.INACT != 'X'
UNION ALL
-- 12. Order Cancellation Set
SELECT
o.ProductionOrder,
'Order Cancellation Set' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0076' AND jcds.INACT != 'X'; Langkah
- Pastikan data SAP ECC PP, pemrosesan order produksi, konfirmasi, manajemen inventaris, dan controlling tersedia. Pastikan juga pengguna ekstraksi memiliki otorisasi untuk membaca tabel aplikasi yang diperlukan dan menjalankan laporan ABAP khusus.
- Di ABAP Workbench, misalnya melalui transaksi SE38 atau SE80, buat laporan eksekusi khusus seperti [Nama laporan khusus Anda]. Gunakan layar seleksi dengan parameter tanggal wajib, seperti [Tanggal mulai] dan [Tanggal akhir], serta filter opsional untuk [Kode perusahaan], [Pabrik produksi], [Jenis order], [Material], dan [Order produksi].
- Baca data header order produksi dan data master dari AUFK serta tabel order produksi yang dikonfigurasi di sistem SAP ECC Anda. Gunakan JCDS dan konfigurasi status terkait untuk mengidentifikasi perubahan status yang tercatat secara eksplisit, termasuk CRTD, dirilis, selesai secara teknis, dan status terkait pembatalan. Jangan menganggap suatu kode status sebagai peristiwa kecuali riwayat status mencatat perubahan beserta stempel waktunya.
- Baca hasil pemeriksaan ketersediaan material dari data pemeriksaan ketersediaan order produksi yang dikonfigurasi di sistem Anda. Jika hasil pemeriksaan tidak disimpan dalam tabel yang dapat ditautkan secara andal ke order dan stempel waktu, gunakan SAP enhancement, log aplikasi, atau sumber audit yang telah disetujui tim SAP Anda. Jangan menyimpulkan bahwa pemeriksaan dilakukan hanya berdasarkan pembuatan atau pelepasan order.
- Baca riwayat perubahan order dari objek dokumen perubahan order produksi yang dikonfigurasi beserta tabel dokumen perubahan terkait. Ambil hanya perubahan penting, seperti kuantitas terencana, tanggal, BOM, routing, atau kolom lain yang disetujui pemilik proses. Gunakan stempel waktu dokumen perubahan sebagai EventTime.
- Baca pencatatan pengeluaran dan penerimaan barang dari data dokumen material inventaris yang dikonfigurasi di sistem Anda. Tautkan pencatatan ke order produksi menggunakan referensi order yang tersedia di data dokumen material. Klasifikasikan pengeluaran komponen sebagai Goods Issue Posted dan penerimaan produk jadi sebagai Goods Receipt Posted. Gunakan tanggal dan waktu pencatatan jika tersedia.
- Baca data konfirmasi dari sumber konfirmasi produksi yang dikonfigurasi di sistem Anda. Urutkan konfirmasi berdasarkan order produksi dan stempel waktu konfirmasi. Catat First Confirmation Recorded untuk konfirmasi pertama, Intermediate Confirmation Recorded untuk konfirmasi nonfinal yang memenuhi kriteria, dan Final Confirmation Recorded untuk konfirmasi yang secara eksplisit ditandai sebagai final atau dikenali sebagai final oleh logika penyelesaian konfirmasi yang dikonfigurasi. Jangan menyimpulkan bahwa konfirmasi bersifat final hanya karena konfirmasi itu berada di baris terakhir hasil kueri sembarang.
- Baca data pelaksanaan settlement dari sumber settlement controlling yang dikonfigurasi di sistem Anda. Catat Order Settlement Ran hanya jika catatan pelaksanaan settlement, dokumen settlement, atau riwayat status settlement yang disetujui memberikan stempel waktu eksplisit yang tertaut ke order produksi.
- Buat satu baris peristiwa internal untuk setiap aktivitas yang diekstrak. Isi ProductionOrder, ActivityName, EventTime, SourceSystem, LastDataUpdate, ProductionPlant, ProductCode, PlannedQuantity, DeliveredQuantity, ActualStartDate, dan ActualEndDate. Gunakan konversi stempel waktu yang konsisten dan pertahankan zona waktu sistem sumber. Isi ActualStartDate dengan stempel waktu konfirmasi pertama dan ActualEndDate dengan stempel waktu konfirmasi final jika peristiwa tersebut tersedia.
- Urutkan baris peristiwa berdasarkan ProductionOrder dan EventTime, lalu gunakan pengurutan sekunder yang deterministik jika stempel waktunya sama. Hapus hanya catatan sumber yang benar-benar duplikat, bukan peristiwa berulang yang sah. Pastikan skema keluaran mencakup semua dua belas nama aktivitas wajib dan setiap baris yang dihasilkan memiliki ID kasus, nama aktivitas, dan stempel waktu peristiwa.
- Tulis hasil ke file di server aplikasi menggunakan antarmuka file ABAP yang disetujui dan jalur file logis yang telah dikonfigurasi. Gunakan pemisah dan pengodean teks yang sesuai dengan konfigurasi pemasukan data ProcessMind. Sertakan baris header, apit nilai yang mengandung pemisah dengan tanda kutip, dan gunakan format stempel waktu yang konsisten, sebaiknya YYYY-MM-DDThh:mm:ss.
- Unduh file menggunakan prosedur transfer file SAP yang disetujui, periksa file secara terpisah, lalu unggah ke ProcessMind sebagai event log. Tetapkan ProductionOrder sebagai ID kasus, ActivityName sebagai aktivitas, dan EventTime sebagai stempel waktu peristiwa. Pastikan ProcessMind dikonfigurasi untuk membaca baris apa adanya dan tidak diharapkan menyimpulkan aktivitas yang tidak tersedia.
Konfigurasi
- Rentang tanggal: Untuk analisis awal, gunakan jendela ekstraksi bergulir selama tiga hingga enam bulan. Perpanjang rentang hanya setelah kinerja dan volume data dinilai. Sertakan periode penelusuran ke belakang untuk order yang dibuat sebelum tanggal mulai pilihan, tetapi masih aktif selama periode analisis.
- Filter seleksi: Dukung filter [Kode perusahaan], [Pabrik produksi], [Jenis order], [Material], [Order produksi], status order, serta tanggal pembuatan atau perubahan. Konfigurasikan kolom yang tepat sesuai penerapan SAP ECC karena ketersediaan kolom order produksi dapat berbeda menurut versi dan penyesuaian sistem.
- Cakupan peristiwa: Ekstrak semua dua belas aktivitas wajib sebagai baris peristiwa eksplisit: Production Order Created, Material Availability Checked, Production Order Released, Order Data Changed, Goods Issue Posted, First Confirmation Recorded, Intermediate Confirmation Recorded, Final Confirmation Recorded, Goods Receipt Posted, Order Technically Completed, Order Settlement Ran, dan Order Cancellation Set.
- Kebijakan stempel waktu: Utamakan tanggal dan waktu peristiwa dari sumber. Jika hanya tanggal yang tersedia, dokumentasikan keterbatasan presisinya dan gunakan waktu yang dikonfigurasi secara konsisten, bukan waktu presisi yang dibuat-buat. Konversikan semua stempel waktu ke zona waktu yang diharapkan ProcessMind.
- Penanganan status: Gunakan riwayat status dengan stempel waktu untuk aktivitas status. Petakan nilai status internal ke aktivitas bisnis berdasarkan konfigurasi status sistem dan persetujuan pemilik proses.
- Pemeriksaan ketersediaan: Konfigurasikan sumber yang disetujui untuk pelaksanaan pemeriksaan ketersediaan. Jangan membuat baris Material Availability Checked berdasarkan pembuatan order, pelepasan, reservasi, atau pengeluaran barang yang berhasil, kecuali sumber yang disetujui bisnis secara eksplisit mencatat pemeriksaan tersebut.
- Penanganan konfirmasi: Konfigurasikan aturan untuk membedakan konfirmasi pertama, menengah, dan final. Konfirmasi hanya dapat dianggap final jika sumber secara eksplisit menandainya sebagai final atau logika konfirmasi SAP yang dikonfigurasi menetapkan bahwa proses telah selesai.
- Kuantitas: Pertahankan satuan ukur dari sumber jika memungkinkan. Jika kuantitas diagregasi, dokumentasikan apakah agregasi dilakukan berdasarkan order, material, pergerakan, konfirmasi, atau peristiwa. DeliveredQuantity harus menunjukkan penerimaan produk jadi yang telah dicatat, bukan sekadar hasil produksi yang dikonfirmasi, kecuali pemilik proses menyetujui penafsiran tersebut.
- LastDataUpdate: Isi kolom ini dengan stempel waktu proses ekstraksi atau stempel waktu penyegaran sumber. Terapkan konvensi yang sama dan terdokumentasi pada setiap baris dalam satu proses ekstraksi.
- Kinerja: Batasi rentang seleksi, pilih hanya kolom yang diperlukan, proses data dalam beberapa paket, gunakan filter di sisi database, hindari pembacaan database bertingkat di dalam loop besar, dan buat atau gunakan indeks yang disetujui hanya melalui proses administrasi database SAP. Tulis keluaran secara bertahap jika penggunaan memori menjadi kendala.
- Keluaran file: Konfigurasikan direktori server aplikasi, nama file logis, pemisah, pengodean, format desimal, format stempel waktu, dan pengaturan header sesuai spesifikasi unggahan ProcessMind. Jangan mencantumkan kredensial di laporan atau file keluaran.
- Prasyarat: Pastikan SAP ECC PP, manajemen inventaris, konfirmasi, manajemen status order produksi, dan data settlement controlling yang relevan telah aktif. Otorisasi yang diperlukan, tata kelola pengembangan khusus, persetujuan transport, akses file server aplikasi, dan akses pemasukan data ProcessMind harus diberikan sebelum eksekusi.
- Konfigurasi khusus sistem: Nama tabel, kolom, kode status, objek dokumen perubahan, sumber konfirmasi, sumber pemeriksaan ketersediaan, dan sumber settlement harus dipastikan di sistem SAP ECC tujuan. Gunakan [Konfigurasikan sesuai sistem Anda] jika penerapan tidak menyediakan sumber standar yang andal.
Contoh kueri abap
REPORT [Your custom report name].
* This executable ABAP report is a complete extraction framework for the twelve required activities.
* Replace only the marked system-specific source sections, selection parameters, and file configuration.
* Confirm every table and field against the target SAP ECC system before activation.
PARAMETERS p_from TYPE sydatum OBLIGATORY.
PARAMETERS p_to TYPE sydatum OBLIGATORY.
PARAMETERS p_file TYPE string OBLIGATORY DEFAULT '[Application server file path]'.
PARAMETERS p_src TYPE string OBLIGATORY DEFAULT '[SAP ECC system identifier]'.
SELECT-OPTIONS s_werks FOR [Production plant field].
SELECT-OPTIONS s_aufnr FOR [Production order field].
SELECT-OPTIONS s_auart FOR [Production order type field].
SELECT-OPTIONS s_bukrs FOR [Company code field].
TYPES: BEGIN OF ty_event,
productionorder TYPE string,
activityname TYPE string,
eventtime TYPE string,
sourcesystem TYPE string,
lastdataupdate TYPE string,
productionplant TYPE string,
productcode TYPE string,
plannedquantity TYPE string,
deliveredquantity TYPE string,
actualstartdate TYPE string,
actualenddate TYPE string,
END OF ty_event.
DATA gt_events TYPE STANDARD TABLE OF ty_event WITH EMPTY KEY.
DATA gs_event TYPE ty_event.
DATA gv_update_timestamp TYPE string.
DATA gv_line TYPE string.
GET TIME STAMP FIELD DATA(gv_update_ts).
gv_update_timestamp = |{ gv_update_ts TIMESTAMP = ISO }|.
* Production Order Created
SELECT [Production order field], [Production plant field], [Product field], [Planned quantity field], [Creation date field], [Creation time field]
FROM [Production order header table]
INTO TABLE @DATA(lt_created)
WHERE [Creation date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks
AND [Production order type field] IN @s_auart
AND [Company code field] IN @s_bukrs.
LOOP AT lt_created ASSIGNING FIELD-SYMBOL(<created>).
CLEAR gs_event.
gs_event-productionorder = |{ <created>-[Production order field] }|.
gs_event-activityname = 'Production Order Created'.
gs_event-eventtime = |{ <created>-[Creation date field] } { <created>-[Creation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <created>-[Production plant field] }|.
gs_event-productcode = |{ <created>-[Product field] }|.
gs_event-plannedquantity = |{ <created>-[Planned quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Material Availability Checked
SELECT [Production order field], [Production plant field], [Product field], [Availability check date field], [Availability check time field]
FROM [Availability check source table]
INTO TABLE @DATA(lt_availability)
WHERE [Availability check date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_availability ASSIGNING FIELD-SYMBOL(<availability>).
CLEAR gs_event.
gs_event-productionorder = |{ <availability>-[Production order field] }|.
gs_event-activityname = 'Material Availability Checked'.
gs_event-eventtime = |{ <availability>-[Availability check date field] } { <availability>-[Availability check time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <availability>-[Production plant field] }|.
gs_event-productcode = |{ <availability>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Production Order Released
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field], [Planned quantity field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_released)
WHERE [Status field] = '[Released status code]'
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_released ASSIGNING FIELD-SYMBOL(<released>).
CLEAR gs_event.
gs_event-productionorder = |{ <released>-[Production order field] }|.
gs_event-activityname = 'Production Order Released'.
gs_event-eventtime = |{ <released>-[Status change date field] } { <released>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <released>-[Production plant field] }|.
gs_event-productcode = |{ <released>-[Product field] }|.
gs_event-plannedquantity = |{ <released>-[Planned quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Data Changed
SELECT [Production order field], [Change date field], [Change time field], [Production plant field], [Product field], [Changed field name]
FROM [Production order change document source table]
INTO TABLE @DATA(lt_changed)
WHERE [Change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Changed field name] IN ('[Planned quantity field]', '[Basic start date field]', '[Basic finish date field]', '[BOM field]', '[Routing field]').
LOOP AT lt_changed ASSIGNING FIELD-SYMBOL(<changed>).
CLEAR gs_event.
gs_event-productionorder = |{ <changed>-[Production order field] }|.
gs_event-activityname = 'Order Data Changed'.
gs_event-eventtime = |{ <changed>-[Change date field] } { <changed>-[Change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <changed>-[Production plant field] }|.
gs_event-productcode = |{ <changed>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Goods Issue Posted
SELECT [Production order field], [Posting date field], [Posting time field], [Production plant field], [Product field], [Quantity field]
FROM [Material document item source table]
INTO TABLE @DATA(lt_gi)
WHERE [Movement type field] IN ('[Goods issue movement type 1]', '[Goods issue movement type 2]')
AND [Posting date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_gi ASSIGNING FIELD-SYMBOL(<gi>).
CLEAR gs_event.
gs_event-productionorder = |{ <gi>-[Production order field] }|.
gs_event-activityname = 'Goods Issue Posted'.
gs_event-eventtime = |{ <gi>-[Posting date field] } { <gi>-[Posting time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <gi>-[Production plant field] }|.
gs_event-productcode = |{ <gi>-[Product field] }|.
gs_event-deliveredquantity = |{ <gi>-[Quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* First Confirmation Recorded
SELECT [Production order field], [Confirmation date field], [Confirmation time field], [Production plant field], [Product field], [Confirmed quantity field]
FROM [Production confirmation source table]
INTO TABLE @DATA(lt_confirmations)
WHERE [Confirmation date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
SORT lt_confirmations BY [Production order field] [Confirmation date field] [Confirmation time field].
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<confirmation>) GROUP BY <confirmation>-[Production order field] ASSIGNING FIELD-SYMBOL(<confirmation_group>).
LOOP AT GROUP <confirmation_group> ASSIGNING FIELD-SYMBOL(<first_confirmation>).
CLEAR gs_event.
gs_event-productionorder = |{ <first_confirmation>-[Production order field] }|.
gs_event-activityname = 'First Confirmation Recorded'.
gs_event-eventtime = |{ <first_confirmation>-[Confirmation date field] } { <first_confirmation>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <first_confirmation>-[Production plant field] }|.
gs_event-productcode = |{ <first_confirmation>-[Product field] }|.
gs_event-actualstartdate = gs_event-eventtime.
APPEND gs_event TO gt_events.
EXIT.
ENDLOOP.
ENDLOOP.
* Intermediate Confirmation Recorded
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<intermediate>) GROUP BY <intermediate>-[Production order field] ASSIGNING FIELD-SYMBOL(<intermediate_group>).
DATA(lv_intermediate_index) = 0.
DATA(lv_intermediate_count) = GROUP SIZE.
LOOP AT GROUP <intermediate_group> ASSIGNING FIELD-SYMBOL(<intermediate_row>).
lv_intermediate_index = lv_intermediate_index + 1.
IF lv_intermediate_index < lv_intermediate_count AND <intermediate_row>-[Final confirmation indicator field] <> '[Final confirmation value]'.
CLEAR gs_event.
gs_event-productionorder = |{ <intermediate_row>-[Production order field] }|.
gs_event-activityname = 'Intermediate Confirmation Recorded'.
gs_event-eventtime = |{ <intermediate_row>-[Confirmation date field] } { <intermediate_row>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <intermediate_row>-[Production plant field] }|.
gs_event-productcode = |{ <intermediate_row>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDIF.
ENDLOOP.
ENDLOOP.
* Final Confirmation Recorded
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<final>) WHERE [Final confirmation indicator field] = '[Final confirmation value]'.
CLEAR gs_event.
gs_event-productionorder = |{ <final>-[Production order field] }|.
gs_event-activityname = 'Final Confirmation Recorded'.
gs_event-eventtime = |{ <final>-[Confirmation date field] } { <final>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <final>-[Production plant field] }|.
gs_event-productcode = |{ <final>-[Product field] }|.
gs_event-actualenddate = gs_event-eventtime.
APPEND gs_event TO gt_events.
ENDLOOP.
* Goods Receipt Posted
SELECT [Production order field], [Posting date field], [Posting time field], [Production plant field], [Product field], [Quantity field]
FROM [Material document item source table]
INTO TABLE @DATA(lt_gr)
WHERE [Movement type field] IN ('[Goods receipt movement type 1]', '[Goods receipt movement type 2]')
AND [Posting date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_gr ASSIGNING FIELD-SYMBOL(<gr>).
CLEAR gs_event.
gs_event-productionorder = |{ <gr>-[Production order field] }|.
gs_event-activityname = 'Goods Receipt Posted'.
gs_event-eventtime = |{ <gr>-[Posting date field] } { <gr>-[Posting time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <gr>-[Production plant field] }|.
gs_event-productcode = |{ <gr>-[Product field] }|.
gs_event-deliveredquantity = |{ <gr>-[Quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Technically Completed
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_teco)
WHERE [Status field] = '[Technically completed status code]'
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_teco ASSIGNING FIELD-SYMBOL(<teco>).
CLEAR gs_event.
gs_event-productionorder = |{ <teco>-[Production order field] }|.
gs_event-activityname = 'Order Technically Completed'.
gs_event-eventtime = |{ <teco>-[Status change date field] } { <teco>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <teco>-[Production plant field] }|.
gs_event-productcode = |{ <teco>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Settlement Ran
SELECT [Production order field], [Settlement date field], [Settlement time field], [Production plant field], [Product field]
FROM [Order settlement source table]
INTO TABLE @DATA(lt_settlement)
WHERE [Settlement date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_settlement ASSIGNING FIELD-SYMBOL(<settlement>).
CLEAR gs_event.
gs_event-productionorder = |{ <settlement>-[Production order field] }|.
gs_event-activityname = 'Order Settlement Ran'.
gs_event-eventtime = |{ <settlement>-[Settlement date field] } { <settlement>-[Settlement time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <settlement>-[Production plant field] }|.
gs_event-productcode = |{ <settlement>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Cancellation Set
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_cancelled)
WHERE [Status field] IN ('[Cancellation status code]', '[Deletion status code]')
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_cancelled ASSIGNING FIELD-SYMBOL(<cancelled>).
CLEAR gs_event.
gs_event-productionorder = |{ <cancelled>-[Production order field] }|.
gs_event-activityname = 'Order Cancellation Set'.
gs_event-eventtime = |{ <cancelled>-[Status change date field] } { <cancelled>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <cancelled>-[Production plant field] }|.
gs_event-productcode = |{ <cancelled>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
SORT gt_events BY productionorder eventtime activityname.
DELETE ADJACENT DUPLICATES FROM gt_events COMPARING productionorder activityname eventtime productionplant productcode.
OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'The application server output file could not be opened' TYPE 'E'.
ENDIF.
TRANSFER 'ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdate,ProductionPlant,ProductCode,PlannedQuantity,DeliveredQuantity,ActualStartDate,ActualEndDate' TO p_file.
LOOP AT gt_events INTO gs_event.
gv_line = |{ gs_event-productionorder },{ gs_event-activityname },{ gs_event-eventtime },{ gs_event-sourcesystem },{ gs_event-lastdataupdate },{ gs_event-productionplant },{ gs_event-productcode },{ gs_event-plannedquantity },{ gs_event-deliveredquantity },{ gs_event-actualstartdate },{ gs_event-actualenddate }|.
TRANSFER gv_line TO p_file.
ENDLOOP.
CLOSE DATASET p_file.
MESSAGE |Event log written to { p_file }| TYPE 'S'. Siap Memulai?
Gunakan templat ini untuk menyiapkan data dan mulai memperbaiki proses Perencanaan Produksi. Temukan wawasan dan tingkatkan efisiensi operasional Anda sekarang.
Optimalkan Perencanaan Produksi untuk Efisiensi Maksimal
Temukan inefisiensi, kurangi waktu siklus hingga 30%, dan capai target.
Tidak perlu kartu kredit. Mulai tingkatkan efisiensi sekarang.