Templat data pengelolaan inventaris Anda
Templat data pengelolaan inventaris Anda
- Atribut yang disarankan untuk dikumpulkan
- Aktivitas utama untuk dilacak dalam penemuan proses
- Panduan ekstraksi khusus SAP S/4HANA
Atribut pengelolaan inventaris
| Nama | Deskripsi | ||
|---|---|---|---|
| Batch/Lot Persediaan InventoryBatchLot | ID unik untuk jumlah produk tertentu, yang digunakan sebagai ID kasus untuk melacak siklusnya. | ||
| Deskripsi Nomor Batch atau Lot Persediaan adalah ID kasus utama yang mengelompokkan semua aktivitas terkait jumlah produk tertentu. Dengan ID ini, Anda dapat melihat perjalanan stok secara kronologis, mulai dari penerimaan awal di gudang, berbagai pemindahan internal dan perubahan status, hingga pengeluaran untuk penjualan, produksi, atau pemusnahan. Dalam analisis proses, atribut ini sangat penting. Anda dapat menelusuri alur setiap batch dari awal hingga akhir, mengukur waktu siklus secara akurat, menemukan variasi proses, dan memahami cara penanganan batch yang berbeda. Analisis pada tingkat batch penting bagi industri yang mengutamakan ketertelusuran, pengendalian kualitas, dan pengelolaan tanggal kedaluwarsa, seperti farmasi, makanan dan minuman, serta bahan kimia. Mengapa ini penting ID utama ini menghubungkan semua peristiwa persediaan terkait ke dalam satu kasus, sehingga analisis proses dari awal hingga akhir dapat dilakukan. Sumber data Biasanya berupa Nomor Batch, yang terdapat di tabel SAP seperti MCHA (Data Induk Batch) atau MCH1 (Batch), pada kolom CHARG. Contoh B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Waktu peristiwa EventTime | Tanggal dan waktu tepat saat aktivitas persediaan dicatat dalam sistem. | ||
| Deskripsi Waktu peristiwa adalah stempel waktu yang mencatat kapan suatu aktivitas terjadi. Data ini diperlukan untuk mengurutkan peristiwa secara kronologis dan menyusun kembali alur proses setiap batch persediaan. Waktu peristiwa menjadi dasar semua analisis process mining berbasis waktu. Akurasi waktu peristiwa sangat penting untuk menghitung indikator kinerja utama, seperti waktu siklus, waktu tunggu, dan durasi. Data ini memungkinkan Anda menganalisis kinerja proses dalam berbagai periode, mengetahui kapan hambatan terjadi, dan memahami penyebab keterlambatan, misalnya lamanya batch berada dalam pemeriksaan kualitas sebelum dilepas. Mengapa ini penting Stempel waktu ini mengurutkan peristiwa secara kronologis dan menjadi dasar semua perhitungan durasi serta kinerja. Sumber data Biasanya berupa gabungan tanggal pencatatan (MKPF-BUDAT) dan waktu entri (MKPF-CPUTM) dari tabel header dokumen material MKPF. Contoh 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| Aktivitas ActivityName | Nama peristiwa bisnis yang terjadi pada waktu tertentu dalam proses Manajemen Persediaan. | ||
| Deskripsi Atribut Aktivitas menjelaskan satu langkah atau peristiwa dalam siklus persediaan suatu batch. Peristiwa ini mencakup tindakan bisnis penting, seperti menerima barang, memindahkan stok, melakukan pemeriksaan kualitas, atau mengeluarkan material. Setiap aktivitas mencatat sesuatu yang terjadi pada batch persediaan pada waktu tertentu. Analisis aktivitas menjadi dasar process mining. Anda dapat memvisualisasikan alur proses, menemukan jalur yang sering maupun jarang terjadi, mendeteksi hambatan akibat aktivitas yang tertunda, dan menganalisis pengulangan pekerjaan. Dengan memahami urutan dan frekuensi aktivitas seperti 'Stok dimusnahkan' atau 'Pemeriksaan Kualitas', bisnis dapat menemukan area yang perlu diperbaiki untuk meningkatkan efisiensi operasional. Mengapa ini penting Atribut ini menentukan langkah-langkah dalam proses, sehingga siklus persediaan dapat divisualisasikan dan dianalisis. Sumber data Atribut ini diturunkan dari Jenis Pergerakan SAP (MSEG-BWART) atau Kode Transaksi (MKPF-TCODE2), lalu dipetakan ke nama yang mudah dipahami pengguna. Contoh Penerimaan barang dicatatPemindahan untuk penempatan barang dicatatPengeluaran barang untuk pengiriman dicatatStok dimusnahkan | |||
| Jenis pergerakan MovementType | Kode tiga digit di SAP yang menentukan cara pencatatan pergerakan barang. | ||
| Deskripsi Jenis Pergerakan adalah kode kontrol penting dalam Manajemen Persediaan SAP yang menentukan karakteristik pergerakan material. Kode ini menentukan akun yang diperbarui, tampilan layar transaksi, serta kolom jumlah atau nilai yang diperbarui. Contohnya, '101' untuk penerimaan barang, '311' untuk pemindahan stok, dan '551' untuk pemusnahan stok. Atribut ini sering digunakan sebagai sumber untuk menentukan nama 'Aktivitas' yang mudah dipahami pengguna. Analisis berdasarkan Jenis Pergerakan memberikan gambaran teknis terperinci tentang aliran persediaan. Atribut ini penting untuk memvalidasi peta proses dan menemukan jenis transaksi tertentu yang mungkin menyebabkan hambatan atau penyimpangan. Mengapa ini penting Atribut ini memberikan klasifikasi teknis yang tepat untuk setiap peristiwa persediaan. Informasi ini penting untuk menentukan aktivitas dan melakukan analisis terperinci. Sumber data Terdapat di tabel item dokumen material MSEG, kolom BWART (Jenis Pergerakan). Contoh 101311261551601 | |||
| Kode alasan pergerakan MovementReasonCode | Kode yang menjelaskan alasan terjadinya perpindahan inventaris. | ||
| Deskripsi Kode alasan pergerakan memberi konteks tambahan tentang alasan perpindahan barang. Kode ini sering digunakan untuk menjelaskan perpindahan yang tidak direncanakan, seperti penyesuaian inventaris, retur, atau pembuangan barang. Atribut ini sangat berguna untuk analisis akar masalah. Pada dasbor “Pemicu penyesuaian inventaris manual”, analisis berdasarkan kode alasan dapat mengungkap penyebab selisih, seperti kerusakan, pencurian, atau kesalahan entri data. Dengan begitu, perusahaan dapat mengatasi masalah mendasar, bukan hanya memperbaiki gejalanya. Mengapa ini penting Menjelaskan alasan di balik perpindahan inventaris yang tidak direncanakan, sehingga analisis akar masalah dapat lebih terarah. Sumber data Tersedia di tabel item dokumen material MSEG, kolom GRUND (Reason for Movement). Contoh 00010005102 | |||
| Kuantitas Quantity | Jumlah material yang terlibat dalam perpindahan inventaris. | ||
| Deskripsi Atribut ini menunjukkan jumlah material yang dipindahkan, diterima, dikeluarkan, atau disesuaikan dalam suatu aktivitas. Nilainya dicatat dalam satuan dasar material. Analisis kuantitas penting untuk memahami skala dan dampak proses inventaris. Anda dapat membuat dasbor untuk melihat volume barang yang ditangani, misalnya “Volume pengeluaran barang berdasarkan SKU”. Kuantitas juga digunakan untuk menghitung KPI seperti “Rasio stok yang dihapus atau dibuang”, sehingga analisis proses mencakup ukuran kuantitatif, bukan sekadar jumlah peristiwa. Mengapa ini penting Mengukur volume material dalam setiap aktivitas, sehingga Anda dapat menganalisis arus barang, jumlah barang yang dibuang, dan dampak penyesuaian. Sumber data Tersedia di tabel item dokumen material MSEG, kolom MENGE (Quantity). Contoh 10012.55000-10 | |||
| Lokasi penyimpanan StorageLocation | Lokasi tertentu di dalam Plant tempat stok disimpan secara fisik. | ||
| Deskripsi Lokasi penyimpanan adalah unit organisasi yang membedakan stok material di dalam Plant. Misalnya, sebuah Plant dapat memiliki lokasi penyimpanan terpisah untuk bahan baku, barang jadi, dan stok yang sedang menjalani pemeriksaan kualitas. Atribut ini memberikan detail lokasi yang lebih terperinci daripada Plant. Anda dapat menggunakannya untuk memahami perpindahan antararea stok, seperti waktu yang dibutuhkan untuk memindahkan barang dari area penerimaan ke gudang utama. Analisis pemanfaatan ruang dan frekuensi perpindahan berdasarkan lokasi penyimpanan membantu mengoptimalkan tata letak gudang dan logistik internal. Mengapa ini penting Memberikan gambaran terperinci tentang lokasi stok di dalam Plant, sehingga Anda dapat menganalisis perpindahan internal dan efisiensi penyimpanan. Sumber data Tersedia di tabel item dokumen material MSEG, kolom LGORT (Storage Location). Contoh 0001RM01FG01QI01 | |||
| Nama pengguna UserName | ID pengguna yang melakukan transaksi di SAP. | ||
| Deskripsi Atribut ini mencatat ID pengguna SAP milik karyawan yang mencatat dokumen atau melakukan aktivitas. Informasi ini memungkinkan penelusuran pihak yang bertanggung jawab atas tindakan tertentu dalam proses Manajemen Persediaan. Analisis berdasarkan pengguna penting untuk memahami kinerja, kepatuhan, dan kebutuhan pelatihan. Misalnya, dasbor 'Penyebab Penyesuaian Persediaan Manual' menggunakan atribut ini untuk mengetahui siapa yang paling sering melakukan penyesuaian. Informasi ini dapat membantu menemukan pengguna yang memerlukan pelatihan tambahan, mengidentifikasi aktivitas tanpa izin, atau mengenali karyawan berkinerja tinggi. Mengapa ini penting Atribut ini memperjelas tanggung jawab dan membantu menemukan pola tindakan, kebutuhan pelatihan, atau masalah kepatuhan yang terkait dengan pengguna tertentu. Sumber data Terdapat di tabel header dokumen material MKPF, kolom USNAM (Nama Pengguna). Contoh JSMITHMBROWNOPERASIONAL_GUDANG | |||
| Nomor material MaterialNumber | ID unik untuk produk atau material yang dikelola. | ||
| Deskripsi Nomor Material, yang sering disebut SKU (Stock Keeping Unit), adalah kode unik untuk produk tertentu. Nomor ini merupakan elemen dasar data induk dalam Manajemen Persediaan dan digunakan untuk melacak jumlah, nilai, serta pergerakan barang. Dalam process mining, analisis berdasarkan Nomor Material memberikan gambaran proses persediaan per produk. Anda dapat mengetahui produk mana yang paling lama menjalani pemeriksaan kualitas, paling sering dimusnahkan, atau paling banyak mengalami pemindahan internal. Pengelompokan ini penting untuk menemukan masalah khusus pada produk dan mengoptimalkan strategi persediaan untuk berbagai jenis barang. Mengapa ini penting Atribut ini memungkinkan analisis dikelompokkan berdasarkan produk, sehingga pola dan masalah pada barang tertentu dapat terlihat. Sumber data Terdapat di tabel item dokumen material MSEG, kolom MATNR. Data induknya tersimpan di tabel MARA. Contoh RM-1001FG-2050-B100-400-A | |||
| Pabrik Plant | Unit organisasi yang mewakili fasilitas tempat persediaan disimpan, seperti pabrik atau pusat distribusi. | ||
| Deskripsi Plant adalah unit organisasi utama di SAP yang dapat mewakili fasilitas produksi, lokasi penyimpanan pusat, atau kantor pusat perusahaan. Semua inventaris berada secara fisik atau logis di dalam Plant. Analisis berdasarkan Plant penting untuk membandingkan kinerja proses di berbagai lokasi. Analisis ini membantu menjawab pertanyaan seperti, “Plant mana yang memiliki waktu penyimpanan barang paling lama?” atau “Apakah tingkat selisih inventaris di Plant A lebih tinggi daripada di Plant B?” Segmentasi geografis atau organisasi ini membantu menemukan masalah khusus di lokasi tertentu dan membagikan praktik baik ke seluruh organisasi. Mengapa ini penting Memungkinkan Anda membandingkan proses dan kinerja inventaris di berbagai lokasi perusahaan. Sumber data Tersedia di tabel item dokumen material MSEG, kolom WERKS (Plant). Contoh 10001710DE01US01 | |||
| Bin penyimpanan StorageBin | Unit penyimpanan terkecil di gudang, tempat material berada secara fisik. | ||
| Deskripsi Bin penyimpanan menunjukkan koordinat tertentu di gudang, seperti lokasi rak. Detail ini biasanya digunakan jika SAP Warehouse Management (WM) atau Extended Warehouse Management (EWM) diterapkan. Atribut ini penting untuk dasbor “Pemanfaatan ruang gudang”. Anda dapat menganalisis seberapa efektif ruang gudang digunakan, menemukan area yang berpotensi padat, serta mengidentifikasi jalur penyimpanan atau pengambilan barang yang kurang efisien. Analisis perpindahan antarbin membantu mengoptimalkan tata letak gudang dan mengurangi waktu tempuh operator. Mengapa ini penting Memberikan data lokasi paling terperinci untuk menganalisis pemanfaatan ruang gudang dan efisiensi operasional. Sumber data Jika menggunakan WM, data ini dapat ditemukan di tabel transfer order seperti LTAK/LTAP. Untuk dokumen inventaris, data mungkin tersedia di MSEG-LGPBE. Lihat dokumentasi SAP S/4HANA. Contoh A-01-01-AB-05-10-CAREA-PENERIMAAN-01 | |||
| Jenis stok StockType | Menunjukkan status inventaris, misalnya bebas digunakan, dalam pemeriksaan kualitas, atau diblokir. | ||
| Deskripsi Jenis stok mengelompokkan inventaris berdasarkan kelayakan penggunaannya. Jenis utama mencakup stok bebas digunakan, stok yang menunggu pemeriksaan kualitas, dan stok yang diblokir atau tidak dapat digunakan. Perpindahan barang sering kali mengubah jenis stok. Melacak perubahan jenis stok penting untuk memahami proses ketersediaan inventaris. Data ini mendukung aktivitas seperti “Stok diposting untuk pemeriksaan kualitas” dan “Status stok diubah menjadi diblokir”. Analisis waktu yang dihabiskan pada setiap jenis stok, terutama pemeriksaan kualitas, membantu menemukan keterlambatan yang memengaruhi ketersediaan barang untuk dijual atau diproduksi. Mengapa ini penting Melacak status kelayakan penggunaan inventaris, yang penting untuk menganalisis keterlambatan pemeriksaan kualitas dan ketersediaan stok. Sumber data Tersedia di tabel item dokumen material MSEG, kolom INSMK (Stock Type). Contoh Bebas digunakanPemeriksaan kualitasStok diblokir | |||
| Nomor dokumen material MaterialDocumentNumber | Nomor unik yang mengidentifikasi dokumen material pencatat perpindahan barang. | ||
| Deskripsi Saat perpindahan barang diposting di SAP, sistem membuat dokumen material sebagai bukti perpindahan tersebut. Atribut ini menjadi pengenal unik dokumen itu. Satu dokumen material dapat memuat beberapa item atau aktivitas. Dalam process mining, nomor dokumen material menjadi pengenal transaksi utama untuk mengelompokkan peristiwa terkait yang diposting bersama. Nomor ini juga penting untuk audit dan untuk menelusuri satu tingkat lebih dalam dari analisis proses ke sistem sumber saat menyelidiki transaksi tertentu. Mengapa ini penting Berfungsi sebagai kunci transaksi untuk audit dan membantu mengelompokkan aktivitas yang dijalankan bersama. Sumber data Tersedia di tabel MKPF (header) dan MSEG (item), kolom MBLNR (Number of Material Document). Contoh 490000123450000056784900002345 | |||
| Pembaruan data terakhir LastDataUpdate | Stempel waktu yang menunjukkan kapan data untuk catatan ini terakhir diperbarui dari sistem sumber. | ||
| Deskripsi Atribut ini mencatat tanggal dan waktu ekstraksi atau pembaruan data terbaru dari sistem sumber. Metadata ini penting untuk mengetahui seberapa baru informasi yang dianalisis. Dengan begitu, pengguna dapat memahami apakah data yang dilihat hampir real-time atau berasal dari periode sebelumnya. Ketepatan waktu data penting agar analisis menghasilkan kesimpulan yang relevan dan akurat. Kolom ini membantu analis dan pengguna bisnis memastikan bahwa data masih terkini. Informasi ini juga sering ditampilkan di dasbor untuk memberi konteks pada wawasan yang disajikan. Mengapa ini penting Atribut ini memberi tahu pengguna seberapa baru data yang digunakan, sehingga analisis dapat mengacu pada informasi terkini. Sumber data Stempel waktu ini dibuat dan ditambahkan selama proses ekstraksi, transformasi, dan pemuatan data (ETL). Contoh 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
| Satuan ukuran UnitOfMeasure | Satuan untuk mengukur kuantitas material, misalnya buah atau kilogram. | ||
| Deskripsi Satuan ukuran menunjukkan satuan yang digunakan untuk atribut “Kuantitas”. Contoh umum mencakup buah (PC), kilogram (KG), liter (L), atau kotak (BOX). Informasi ini memberi konteks penting pada nilai kuantitas. Meski sering hanya berfungsi sebagai keterangan, atribut ini penting untuk menjaga kualitas data dan mendukung analisis yang perlu menyamakan satuan. Misalnya, untuk menghitung nilai total inventaris yang dibuang secara akurat, kuantitas dalam satuan berbeda perlu dipahami dan mungkin dikonversi. Mengapa ini penting Memberi konteks penting pada atribut “Kuantitas” agar volume material dapat ditafsirkan dengan tepat. Sumber data Tersedia di tabel item dokumen material MSEG, kolom MEINS (Base Unit of Measure). Contoh BuahKilogramSatuanMeter | |||
| Sistem sumber SourceSystem | Menunjukkan sistem sumber tempat data diambil. | ||
| Deskripsi Atribut ini menunjukkan sistem pencatatan asal data Manajemen Persediaan. Dalam konteks ini, sistem tersebut adalah instans SAP S/4HANA tertentu. Informasi ini penting jika data berasal dari beberapa ERP, sistem manajemen gudang, atau platform lama. Dalam analisis yang hanya menggunakan satu sistem, atribut ini mungkin tampak tetap. Namun, atribut ini menjadi penting saat data dari berbagai sumber digabungkan untuk memberikan gambaran proses yang menyeluruh. Atribut ini membantu tata kelola data, penelusuran masalah ekstraksi data, dan kejelasan asal-usul data. Mengapa ini penting Atribut ini menjelaskan asal data, yang penting untuk tata kelola data dan analisis lintas sistem. Sumber data Biasanya berupa nilai tetap yang ditetapkan selama transformasi data untuk mengidentifikasi instans SAP S/4HANA tertentu. Contoh S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
| Tanggal kedaluwarsa ExpirationDate | Tanggal saat batch material kedaluwarsa dan tidak lagi dapat digunakan. | ||
| Deskripsi Tanggal kedaluwarsa masa simpan (SLED) merupakan data induk penting untuk barang yang mudah rusak atau memiliki batas waktu penggunaan. Tanggal ini dikelola pada tingkat batch dan menentukan kapan produk tidak lagi dapat dijual atau digunakan. Atribut ini penting untuk dasbor “Analisis stok usang dan kedaluwarsa”. Dengan menganalisis aktivitas berdasarkan tanggal kedaluwarsa, perusahaan dapat menemukan batch yang berisiko kedaluwarsa dan mengambil tindakan lebih awal. Data ini juga membantu mengukur efektivitas kebijakan rotasi inventaris seperti First-Expired-First-Out (FEFO), serta menghitung kerugian akibat pembuangan stok kedaluwarsa. Mengapa ini penting Mendukung analisis stok usang dan kedaluwarsa, sehingga pemborosan dan kerugian finansial dapat dikurangi. Sumber data Tersedia di tabel induk batch MCH1 atau MCHA, kolom VFDAT (Shelf Life Expiration Date). Contoh 2024-12-312025-06-302024-09-01 | |||
| Waktu siklus pemenuhan pesanan OrderFulfillmentCycleTime | Durasi dari dimulainya pengambilan barang hingga barang dikeluarkan untuk pengiriman. | ||
| Deskripsi Metrik ini menghitung total waktu dari aktivitas “Pengambilan barang dimulai” hingga “Pengeluaran barang untuk pengiriman diposting”. Nilainya menunjukkan waktu yang dibutuhkan gudang untuk menyiapkan dan mengirim pesanan pelanggan sejak proses dimulai. Atribut ini mengukur KPI “Waktu siklus pemenuhan pesanan” secara langsung. Analisis durasi membantu perusahaan memahami kecepatan dalam memenuhi permintaan pelanggan. Anda dapat menguraikannya berdasarkan produk, gudang, atau pelanggan untuk menemukan keterlambatan dalam proses pengambilan, pengemasan, dan pengiriman barang. Hal ini berdampak langsung pada kepuasan pelanggan dan efisiensi logistik. Mengapa ini penting Mengukur kecepatan dan efisiensi arus barang keluar dari gudang, yang berpengaruh pada kepuasan pelanggan. Sumber data Atribut ini dihitung dengan mencari selisih waktu antara peristiwa “Pengambilan barang dimulai” dan “Pengeluaran barang untuk pengiriman diposting” untuk setiap batch. Contoh 7200144003600 | |||
Aktivitas pengelolaan inventaris
| Aktivitas | Deskripsi | ||
|---|---|---|---|
| Pemindahan untuk penempatan barang dicatat | Menunjukkan perpindahan fisik batch dari area penerimaan atau area penampungan ke lokasi atau bin penyimpanan akhir. SAP mencatatnya sebagai dokumen material pemindahan stok. | ||
| Mengapa ini penting Aktivitas ini menyelesaikan proses penerimaan barang. Waktu yang dibutuhkan untuk menyelesaikannya, atau waktu penempatan barang, merupakan KPI penting untuk mengukur efisiensi gudang. Sumber data Dicatat dalam tabel MATDOC sebagai pemindahan stok, sering kali antar lokasi penyimpanan (misalnya, Jenis Pergerakan 311). Jenis pergerakan tertentu dapat berbeda, bergantung pada struktur gudang. Pengumpulan data Dikenali dari dokumen pemindahan stok di MATDOC yang memindahkan stok dari lokasi penyimpanan sementara atau penerimaan ke lokasi penyimpanan akhir. Jenis peristiwa explicit | |||
| Penerimaan barang dicatat | Menandai saat batch persediaan pertama kali masuk ke gudang, biasanya dari pemasok atau produksi. SAP S/4HANA mencatat peristiwa ini secara eksplisit dengan membuat dokumen material saat barang diterima. | ||
| Mengapa ini penting Ini adalah peristiwa awal utama dalam siklus persediaan. Menganalisis waktu dari aktivitas ini ke aktivitas lain, seperti penempatan barang, penting untuk mengukur efisiensi area penerimaan. Sumber data Dicatat dalam tabel MATDOC. Peristiwa ini dikenali melalui jenis pergerakan tertentu (BWART), seperti 101 untuk penerimaan pesanan pembelian atau 103 untuk penerimaan barang ke stok yang diblokir. Pengumpulan data Diambil dari dokumen material di MATDOC dengan jenis pergerakan penerimaan barang yang sesuai. Jenis peristiwa explicit | |||
| Pengeluaran barang untuk pengiriman dicatat | Mencatat tahap akhir proses pengiriman keluar, saat kepemilikan batch dialihkan kepada pelanggan atau pengangkut. Transaksi eksplisit ini mengurangi persediaan dan mencatatnya dalam pembukuan. | ||
| Mengapa ini penting Ini adalah peristiwa penting yang menandai selesainya proses pemenuhan pesanan. Peristiwa ini diperlukan untuk mengukur ketepatan waktu pengiriman dan menghitung keseluruhan siklus pemenuhan pesanan. Sumber data Dicatat dalam tabel MATDOC. Dikenali melalui Jenis Pergerakan (BWART) untuk pengeluaran barang pada pengiriman pesanan penjualan, biasanya 601. Pengumpulan data Diambil dari dokumen material di MATDOC dengan jenis pergerakan 601. Jenis peristiwa explicit | |||
| Pengeluaran barang untuk produksi dicatat | Menunjukkan penggunaan batch persediaan untuk pesanan produksi atau proses. Transaksi ini mengurangi persediaan dan membebankan biaya material ke pesanan produksi. | ||
| Mengapa ini penting Ini adalah peristiwa utama penggunaan material yang menandai akhir siklus persediaan komponen. Peristiwa ini penting untuk menganalisis ketersediaan material bagi produksi dan pola pemakaiannya. Sumber data Dicatat dalam tabel MATDOC. Dikenali melalui Jenis Pergerakan (BWART) untuk pengeluaran barang ke pesanan, seperti 261. Pengumpulan data Diambil dari dokumen material di MATDOC dengan jenis pergerakan 261. Jenis peristiwa explicit | |||
| Penyesuaian persediaan dicatat | Mencatat perubahan jumlah stok akibat penghitungan persediaan fisik atau selisih lainnya. Peristiwa ini secara eksplisit menyesuaikan catatan stok agar sesuai dengan hasil penghitungan fisik. | ||
| Mengapa ini penting Penyesuaian ini penting untuk menjaga akurasi persediaan. Jika penyesuaian sering terjadi, mungkin ada masalah mendasar dalam penanganan stok, keamanan, atau entri data. Sumber data Dicatat dalam tabel MATDOC. Dikenali melalui Jenis Pergerakan (BWART) untuk inventarisasi fisik, seperti 701 (penambahan persediaan) atau 702 (pengurangan persediaan). Pengumpulan data Diambil dari dokumen material di MATDOC dengan jenis pergerakan penyesuaian inventarisasi fisik (misalnya, 701, 702). Jenis peristiwa explicit | |||
| Stok dimusnahkan | Menandai pemusnahan akhir batch persediaan dan menghapusnya secara permanen dari catatan persediaan. Hal ini biasanya dilakukan untuk stok yang kedaluwarsa, rusak, atau usang. | ||
| Mengapa ini penting Ini adalah peristiwa akhir yang menunjukkan kerugian finansial. Analisis pemusnahan stok membantu menemukan masalah terkait usia persediaan, prosedur penanganan, atau perkiraan permintaan. Sumber data Dicatat dalam tabel MATDOC. Dikenali melalui Jenis Pergerakan (BWART) untuk pemusnahan stok, seperti 551 (dari stok bebas digunakan), 553 (dari pemeriksaan kualitas), atau 555 (dari stok yang diblokir). Pengumpulan data Diambil dari dokumen material di MATDOC dengan jenis pergerakan pemusnahan stok (misalnya, 551). Jenis peristiwa explicit | |||
| Stok pemeriksaan kualitas dilepas | Menunjukkan bahwa batch telah lolos pemeriksaan kualitas dan kini dapat digunakan atau ditempatkan di gudang. Peristiwa ini dicatat sebagai pemindahan stok eksplisit dari stok pemeriksaan kualitas ke jenis stok lain, seperti stok bebas digunakan. | ||
| Mengapa ini penting Tonggak ini menandai selesainya proses kualitas dan membuat persediaan tersedia. Keterlambatan pada tahap ini dapat menimbulkan masalah lanjutan yang signifikan dalam produksi atau pemenuhan pesanan. Sumber data Dicatat dalam tabel MATDOC sebagai pemindahan stok. Biasanya dikenali melalui Jenis Pergerakan (BWART) 321, yang memindahkan stok dari 'Pemeriksaan Kualitas' ke 'Bebas Digunakan'. Pengumpulan data Diambil dari dokumen material di MATDOC dengan jenis pergerakan 321. Jenis peristiwa explicit | |||
| Pemindahan stok internal dicatat | Mencatat perpindahan batch persediaan antar lokasi penyimpanan atau bin di dalam pabrik yang sama. Transaksi eksplisit ini membuat dokumen material. | ||
| Mengapa ini penting Pelacakan pemindahan internal membantu menganalisis efisiensi operasional gudang, menemukan perpindahan yang tidak perlu, dan mengukur waktu tunggu pengisian ulang stok antar lokasi. Sumber data Dicatat dalam tabel MATDOC. Umumnya dikenali melalui Jenis Pergerakan (BWART) 311 untuk pemindahan antar lokasi penyimpanan. Pengumpulan data Diambil dari dokumen material di MATDOC dengan jenis pergerakan untuk pemindahan stok internal (misalnya, 311). Jenis peristiwa explicit | |||
| Pengambilan barang dimulai | Menandai awal proses pemenuhan pesanan, saat tugas gudang dibuat untuk mengambil satu batch dari lokasi penyimpanannya. Peristiwa ini biasanya tercatat saat Transfer Order atau Warehouse Task dibuat. | ||
| Mengapa ini penting Aktivitas ini memicu proses pengambilan barang. Menganalisis waktu dari peristiwa ini hingga pengambilan selesai membantu mengukur efisiensi petugas gudang dan menemukan keterlambatan. Sumber data Biasanya, data ini tidak tersedia di MATDOC. Pada sistem yang menggunakan Warehouse Management (WM/EWM), peristiwa ini disimpulkan dari stempel waktu pembuatan Transfer Order (tabel LTAK) atau Warehouse Task. Pengumpulan data Disimpulkan dari catatan pembuatan Transfer Order (di WM) atau Warehouse Task (di EWM) yang terhubung dengan batch material. Jenis peristiwa inferred | |||
| Retur penjualan diterima | Mencatat pengembalian batch yang sebelumnya dikeluarkan, dari pelanggan ke gudang. Transaksi eksplisit ini menambah persediaan. | ||
| Mengapa ini penting Pelacakan retur penting untuk memahami masalah kualitas produk dan ketidakpuasan pelanggan. Proses penanganan dan penentuan tindak lanjut retur juga dapat menjadi sumber inefisiensi. Sumber data Dicatat dalam tabel MATDOC. Dikenali melalui Jenis Pergerakan (BWART) untuk retur penjualan, seperti 651 (ke stok bebas digunakan) atau 653 (ke pemeriksaan kualitas). Pengumpulan data Diambil dari dokumen material di MATDOC dengan jenis pergerakan retur penjualan (misalnya, 651, 653). Jenis peristiwa explicit | |||
| Status batch diubah | Menunjukkan perubahan pada data induk batch, misalnya perubahan status dari 'Bebas Digunakan' menjadi 'Dibatasi'. Perubahan ini bukan pergerakan material, melainkan perubahan data induk yang dicatat oleh sistem. | ||
| Mengapa ini penting Perubahan status batch berdampak langsung pada penggunaannya dalam penjualan atau produksi. Analisis perubahan ini dapat mengungkap masalah stok yang mendekati kedaluwarsa atau pengendalian kualitas, tanpa melibatkan perpindahan fisik. Sumber data Disimpulkan dari log perubahan tabel data induk Batch (MCH1, MCHA). Tabel CDHDR dan CDPOS mencatat perubahan pada kolom status batch (MCH1-ZUSTD). Pengumpulan data Diambil dari dokumen perubahan di CDHDR/CDPOS untuk kolom status pada data induk batch (MCH1-ZUSTD). Jenis peristiwa inferred | |||
| Status stok diubah menjadi bebas digunakan | Menunjukkan perubahan status batch yang melepaskannya dari penahanan karena diblokir atau pemeriksaan kualitas, sehingga stok dapat digunakan. Perubahan ini dicatat sebagai pemindahan stok eksplisit. | ||
| Mengapa ini penting Aktivitas ini menandai berakhirnya penahanan persediaan. Anda dapat menganalisis lamanya stok diblokir untuk memperbaiki proses penyelesaian masalah. Sumber data Dicatat dalam tabel MATDOC sebagai pemindahan stok. Jenis Pergerakan (BWART) 344 memindahkan stok dari 'Diblokir' ke 'Bebas Digunakan'. Pengumpulan data Dikenali dari dokumen material di MATDOC dengan jenis pergerakan 344. Jenis peristiwa explicit | |||
| Status stok diubah menjadi diblokir | Menunjukkan perubahan status batch sehingga stok tidak dapat dikeluarkan, biasanya karena kerusakan, permintaan penahanan, atau alasan lain. SAP mencatatnya sebagai pemindahan stok eksplisit. | ||
| Mengapa ini penting Menunjukkan gangguan pada ketersediaan persediaan. Jika peristiwa pemblokiran sering terjadi, penyebabnya mungkin masalah penanganan, kondisi penyimpanan, atau kualitas pemasok. Sumber data Dicatat dalam tabel MATDOC sebagai pemindahan stok. Jenis Pergerakan (BWART) 344 biasanya memindahkan stok dari 'Diblokir' ke 'Bebas Digunakan', sedangkan 343 memindahkannya dari 'Bebas Digunakan' ke 'Diblokir'. Aktivitas ini menggunakan kode 343. Pengumpulan data Dikenali dari dokumen material di MATDOC dengan jenis pergerakan 343. Jenis peristiwa explicit | |||
| Stok dipindahkan ke pemeriksaan kualitas | Menunjukkan bahwa batch yang diterima dipindahkan ke status penahanan untuk pemeriksaan kualitas, sehingga tidak dapat digunakan sebelum dinyatakan lolos. SAP mencatatnya sebagai transaksi eksplisit yang mengubah jenis stok batch. | ||
| Mengapa ini penting Aktivitas ini memulai proses pemeriksaan kualitas. Waktu antara aktivitas ini dan pelepasan dari pemeriksaan kualitas menjadi metrik penting untuk memahami keterlambatan terkait kualitas. Sumber data Dicatat dalam tabel MATDOC. Peristiwa ini dapat berupa pergerakan penerimaan barang (misalnya, 101) dengan Jenis Stok (INSMK) bernilai 'Q' (Pemeriksaan Kualitas), atau pemindahan stok (misalnya, 322). Pengumpulan data Dikenali dari dokumen material di MATDOC yang memindahkan persediaan ke jenis stok 'Pemeriksaan Kualitas'. Jenis peristiwa explicit | |||
Panduan ekstraksi
Langkah
- Siapkan akses sistem: Pastikan Anda memiliki pengguna dengan otorisasi yang diperlukan untuk menjalankan kueri pada tampilan Core Data Services (CDS) di sistem SAP S/4HANA. Biasanya, administrator sistem yang memberikan akses ini.
- Pilih klien SQL: Pilih alat klien SQL yang dapat terhubung ke database SAP HANA. Pilihan umum mencakup SAP HANA Studio, SAP HANA Database Explorer, atau alat pihak ketiga seperti DBeaver.
- Konfigurasikan koneksi database: Buat koneksi database baru melalui klien SQL. Anda memerlukan nama host database HANA, nomor port (biasanya 3<instance_number>15), dan kredensial pengguna database.
- Siapkan kueri SQL: Salin seluruh kueri SQL dari bagian 'query' dokumen ini ke editor klien SQL.
- Atur parameter kueri: Temukan nilai placeholder dalam kueri. Ganti
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'dengan rentang tanggal yang diinginkan, misalnyaBETWEEN '20230101' AND '20230630'. Sesuaikan juga filter khusus perusahaan atau Plant, sepertiMaterialDocumentItem.Plant IN ('Plant1', 'Plant2'), dengan struktur organisasi Anda. - Jalankan kueri: Jalankan kueri SQL yang telah diubah pada database S/4HANA. Waktu eksekusi bergantung pada rentang tanggal dan volume data inventaris di sistem Anda.
- Periksa data: Setelah kueri selesai, periksa hasilnya di klien SQL untuk memastikan data terlihat benar dan lengkap. Pastikan berbagai aktivitas tercantum dan atribut utama terisi.
- Ekspor log peristiwa: Ekspor seluruh hasil dari klien SQL ke file CSV. Pastikan pengaturan ekspor menggunakan encoding UTF-8 agar karakter tidak bermasalah.
- Siapkan file untuk diunggah: Beri nama kolom di file CSV persis seperti alias dalam kueri, misalnya
InventoryBatchLot,ActivityName,EventTime, dan seterusnya. File ini siap diunggah ke alat process mining.
Konfigurasi
- Otorisasi: Pengguna yang menjalankan kueri memerlukan izin
SELECTuntuk tampilan CDS berikut:I_MaterialDocumentItem,I_BatchChangeDocument, danI_WarehouseTask. Pengguna juga memerlukan akses ke skema database tempat tampilan tersebut berada. - Filter rentang tanggal: Terapkan filter rentang tanggal pada kolom
PostingDate,ChangeDocumentCreationDate, atauWarehouseTaskCreationDate. Rentang analisis yang umum adalah 3 hingga 12 bulan. Kueri untuk beberapa tahun dapat menimbulkan masalah kinerja yang signifikan. - Filter organisasi: Untuk meningkatkan kinerja dan memfokuskan analisis, tambahkan klausa
WHEREuntuk memfilter berdasarkanPlantatauCompanyCode. Cara ini mengurangi volume data dan membatasi ekstraksi pada bagian bisnis yang relevan. - Volume data: Sistem pengelolaan inventaris menghasilkan data dalam jumlah besar. Rentang tanggal yang panjang dapat menghasilkan jutaan baris, sehingga berpotensi memengaruhi sistem sumber selama ekstraksi dan kinerja alat klien Anda.
- Extended Warehouse Management (EWM): Aktivitas “Pengambilan barang dimulai” menggunakan tampilan CDS
I_WarehouseTask, yang hanya terisi jika Anda menggunakan SAP Extended Warehouse Management. Jika organisasi Anda menggunakan modul Warehouse Management (WM) yang lebih lama atau hanya Inventory Management (IM), aktivitas ini tidak akan diekstrak.
Contoh kueri sql
SELECT
mat_doc.Batch AS "InventoryBatchLot",
CASE
WHEN mat_doc.MovementType = '101' AND mat_doc.InventoryStockType = '2' THEN 'Stock Posted to Quality Inspection'
WHEN mat_doc.MovementType = '101' THEN 'Goods Receipt Posted'
WHEN mat_doc.MovementType = '321' THEN 'Quality Inspection Stock Released'
WHEN mat_doc.MovementType = '311' THEN 'Internal Stock Transfer Posted'
WHEN mat_doc.MovementType = '344' THEN 'Stock Status Changed to Blocked'
WHEN mat_doc.MovementType IN ('343', '322') THEN 'Stock Status Changed to Unrestricted'
WHEN mat_doc.MovementType IN ('701', '702') THEN 'Inventory Adjustment Posted'
WHEN mat_doc.MovementType = '601' THEN 'Goods Issue for Delivery Posted'
WHEN mat_doc.MovementType = '261' THEN 'Goods Issue for Production Posted'
WHEN mat_doc.MovementType IN ('651', '653') THEN 'Sales Return Received'
WHEN mat_doc.MovementType = '551' THEN 'Stock Scrapped'
WHEN mat_doc.MovementType = '313' THEN 'Put-Away Transfer Posted' -- Example for two-step transfers
ELSE 'Unknown Material Movement'
END AS "ActivityName",
TO_TIMESTAMP(mat_doc.PostingDate || LPAD(mat_doc.CreationTime, 6, '0'), 'YYYYMMDDHH24MISS') AS "EventTime",
mat_doc.Material AS "MaterialNumber",
mat_doc.CreatedByUser AS "UserName",
mat_doc.MovementType AS "MovementType",
mat_doc.Plant AS "Plant",
mat_doc.StorageLocation AS "StorageLocation",
mat_doc.QuantityInEntryUnit AS "Quantity",
mat_doc.ReasonForMovement AS "MovementReasonCode"
FROM
I_MaterialDocumentItem AS mat_doc
WHERE
mat_doc.Batch IS NOT NULL AND mat_doc.Batch <> ''
AND mat_doc.PostingDate BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
-- AND mat_doc.Plant IN ('Plant1', 'Plant2') -- Placeholder: Add filters for relevant plants
UNION ALL
SELECT
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 3) AS "InventoryBatchLot",
'Batch Status Changed' AS "ActivityName",
change_doc.ChangeDocumentCreationDateTime AS "EventTime",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 1) AS "MaterialNumber",
change_doc.ChangedByUser AS "UserName",
NULL AS "MovementType",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 2) AS "Plant",
NULL AS "StorageLocation",
NULL AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_BatchChangeDocument AS change_doc
WHERE
change_doc.ChangeDocumentTable = 'MCHA' AND change_doc.ChangeDocumentTableFieldName = 'ZUSTD'
AND TO_VARCHAR(change_doc.ChangeDocumentCreationDate) BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
UNION ALL
SELECT
wh_task.Batch AS "InventoryBatchLot",
'Picking Initiated' AS "ActivityName",
wh_task.WarehouseTaskCreationDateTime AS "EventTime",
wh_task.Product AS "MaterialNumber",
wh_task.CreatedByUser AS "UserName",
NULL AS "MovementType",
wh_task.Plant AS "Plant",
wh_task.SourceStorageLocation AS "StorageLocation",
wh_task.TargetQuantity AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_WarehouseTask AS wh_task
WHERE
wh_task.Batch IS NOT NULL AND wh_task.Batch <> ''
AND wh_task.WarehouseProcessType IN ('P210', 'P220') -- Placeholder: Adjust process types based on your picking configuration
AND TO_VARCHAR(wh_task.WarehouseTaskCreationDate) BETWEEN '20230101' AND '20231231'; -- Placeholder: Set your date range Langkah
- Pastikan akses SQL langsung ke SAP HANA telah disetujui dan pengguna ekstraksi memiliki akses baca ke MATDOC serta tabel induk batch yang diperlukan sistem. Pastikan pemilik skema fisik, lalu ganti [Skema SAP HANA Anda] dengan nama skema yang disetujui.
- Pastikan kolom MATDOC dan tabel batch tersedia pada rilis SAP S/4HANA yang digunakan. Kueri di bawah memakai kolom MATDOC dan MCHA yang umum tersedia, tetapi ketersediaan dan penamaan kolom dapat berbeda menurut rilis, penerapan, dan cakupan yang diaktifkan. Sebelum menjalankan kueri, ganti setiap kolom bertanda [Konfigurasikan sesuai sistem Anda].
- Tentukan periode ekstraksi dengan mengganti [Stempel waktu mulai] dan [Stempel waktu akhir] menggunakan nilai stempel waktu ISO. Untuk ekstraksi awal, gunakan periode tiga hingga enam bulan. Setelah memvalidasi volume dan kinerja, Anda dapat memperpanjang periode.
- Jalankan kueri di klien SQL yang disetujui, SAP HANA Database Explorer, atau alat database resmi yang setara. Batasi hasil ke kode perusahaan, Plant, jenis dokumen, atau jenis pergerakan yang diperlukan dengan mengganti placeholder filter terkait.
- Periksa pemetaan jenis pergerakan di CTE aktivitas. Jenis pergerakan bergantung pada konfigurasi sistem dan bisnis. Ganti daftar contoh jenis pergerakan dengan jenis yang dikonfigurasikan di sistem target untuk penerimaan barang, pemeriksaan kualitas, pelepasan, penyimpanan, transfer internal, stok diblokir, stok bebas digunakan, penyesuaian inventaris, pengambilan barang, pengeluaran untuk pengiriman, pengeluaran untuk produksi, retur penjualan, dan pembuangan barang.
- Pastikan setiap baris keluaran memuat InventoryBatchLot, ActivityName, dan EventTime. Pastikan pengenal batch cukup konsisten untuk digunakan sebagai ID kasus ProcessMind. Jika proses bisnis perlu membedakan nilai batch yang sama berdasarkan material, Plant, atau lokasi penyimpanan, gunakan ID kasus gabungan yang telah dikonfigurasikan, bukan nilai batch saja.
- Validasi urutan peristiwa, baris duplikat, dokumen pembalikan, dokumen yang dibatalkan, dan penanganan zona waktu. MATDOC mencatat posting dokumen, sehingga catatan pembalikan dan pembatalan dapat muncul sebagai peristiwa terpisah kecuali dikecualikan atau dipetakan secara khusus.
- Ekspor hasil kueri sebagai file datar dengan satu baris untuk setiap peristiwa dan kolom InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, dan MovementReasonCode. Gunakan format ISO 8601 yang konsisten untuk stempel waktu dan pertahankan angka nol di depan pada nilai material, batch, Plant, dan lokasi penyimpanan.
- Unggah log peristiwa ke ProcessMind, lalu petakan InventoryBatchLot sebagai ID kasus, ActivityName sebagai aktivitas, dan EventTime sebagai stempel waktu peristiwa. Jangan mengandalkan ProcessMind untuk menyimpulkan aktivitas, menggabungkan catatan, atau membuat peristiwa yang tidak tersedia.
Konfigurasi
- Metode ekstraksi: Jalankan kueri SQL langsung pada data inventaris dan batch SAP HANA. Kueri membaca MATDOC dan menggabungkan data induk batch dari MCHA. Tambahkan MCH1 atau tabel batch lain hanya setelah memastikan kolom dan tingkat batch yang relevan di sistem target.
- Rentang tanggal: Mulai dengan tiga hingga enam bulan. Gunakan EventTime berdasarkan tanggal dan waktu posting dokumen material yang tersedia di MATDOC. Untuk pemuatan inkremental, gunakan jendela tumpang tindih yang terkontrol agar posting yang terlambat tetap tercakup, lalu hapus duplikat menggunakan pengenal dokumen dan item yang telah dikonfigurasikan.
- Filter wajib: Konfigurasikan kode perusahaan, Plant, jenis dokumen material, jenis pergerakan, keberadaan batch, dan tanggal posting sesuai cakupan proses. Pastikan kolom kode perusahaan dan jenis dokumen tersedia pada rilis yang terpasang sebelum menambahkannya ke kueri.
- Pemetaan aktivitas: Arti jenis pergerakan bergantung pada konfigurasi. Kelola tabel pemetaan yang disetujui atau ganti daftar jenis pergerakan dalam kueri dengan nilai yang digunakan bisnis. Jangan menganggap daftar contoh sebagai makna SAP yang berlaku universal.
- Cakupan batch: Kueri mengecualikan baris tanpa nilai batch karena ID kasusnya adalah InventoryBatchLot. Jika batch perlu diturunkan dari sumber lain, konfigurasikan sumber tersebut secara eksplisit sebelum ekstraksi.
- Tingkat perincian peristiwa: Setiap item MATDOC yang memenuhi syarat menghasilkan satu baris peristiwa. Kueri tidak menyimpulkan aktivitas pengambilan barang, keputusan kualitas, perubahan status batch, atau aktivitas lain dari catatan berikutnya.
- Perubahan data induk batch: Perubahan status batch tidak dapat diandalkan jika hanya menggunakan MATDOC. Konfigurasikan sumber dokumen perubahan atau riwayat batch untuk aktivitas Perubahan Status Batch. Kueri menyertakan cabang placeholder yang harus dihubungkan ke sumber terverifikasi sebelum dijalankan.
- Pengambilan barang: Inisiasi pengambilan barang umumnya tercatat dalam data pelaksanaan gudang, bukan posting MATDOC. Konfigurasikan sumber tugas gudang atau transfer order yang terverifikasi, lalu ganti cabang placeholder sebelum menjalankan kueri.
- Kinerja: Filter berdasarkan stempel waktu atau tanggal posting, Plant, kode perusahaan, dan jenis pergerakan yang relevan. Pilih hanya kolom yang diperlukan, hindari pemindaian seluruh riwayat tanpa batas, dan jalankan ekstraksi pada waktu beban kerja yang disetujui. Untuk volume MATDOC yang besar, gunakan ekstraksi terpartisi atau inkremental.
- Otorisasi dan prasyarat: Dapatkan konektivitas database yang disetujui, akses skema, izin baca, akses ke data inventaris SAP S/4HANA, serta akses ke sumber pelaksanaan gudang atau riwayat perubahan yang digunakan untuk dua aktivitas non-MATDOC. Pastikan akses langsung ke database sesuai dengan model operasional dan kebijakan dukungan SAP organisasi Anda.
- Zona waktu: Pastikan zona waktu database dan aplikasi. Konversikan EventTime secara konsisten sebelum mengunggahnya ke ProcessMind.
- Perlindungan data: Terapkan kontrol organisasi untuk ID pengguna, data material, data terkait pelanggan, dan kredensial database. Jangan mencantumkan kredensial dalam teks kueri.
Contoh kueri sql
WITH
params AS (
SELECT
TO_TIMESTAMP('[Start timestamp]') AS start_ts,
TO_TIMESTAMP('[End timestamp]') AS end_ts
FROM DUMMY
),
movement_map AS (
SELECT '101' AS movement_type, 'Goods Receipt Posted' AS activity_name FROM DUMMY
UNION ALL SELECT '105', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '107', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '109', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '321', 'Stock Posted to Quality Inspection' FROM DUMMY
UNION ALL SELECT '322', 'Quality Inspection Stock Released' FROM DUMMY
UNION ALL SELECT '343', 'Stock Status Changed to Unrestricted' FROM DUMMY
UNION ALL SELECT '344', 'Stock Status Changed to Blocked' FROM DUMMY
UNION ALL SELECT '311', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '301', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '311', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '701', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '702', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '703', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '704', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '705', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '706', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '601', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '602', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '261', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '262', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '651', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '653', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '654', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '551', 'Stock Scrapped' FROM DUMMY
UNION ALL SELECT '552', 'Stock Scrapped' FROM DUMMY
),
matdoc_events AS (
SELECT
m.MATNR AS MaterialNumber,
m.CHARG AS InventoryBatchLot,
COALESCE(m.BUDAT_MKPF, m.BUDAT) AS EventTime,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(m.BWART AS NVARCHAR(3)) AS MovementType,
m.WERKS AS Plant,
m.LGORT AS StorageLocation,
m.MENGE AS Quantity,
m.GRUND AS MovementReasonCode,
mm.activity_name AS ActivityName,
m.MBLNR AS MaterialDocumentNumber,
m.MJAHR AS MaterialDocumentYear,
m.ZEILE AS MaterialDocumentItem
FROM [Your SAP HANA schema].MATDOC m
INNER JOIN movement_map mm
ON CAST(m.BWART AS NVARCHAR(3)) = mm.movement_type
CROSS JOIN params p
WHERE m.CHARG IS NOT NULL
AND TRIM(m.CHARG) <> ''
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) >= p.start_ts
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) < p.end_ts
AND m.WERKS IN ([Configure based on your system])
),
batch_enriched_events AS (
SELECT
e.InventoryBatchLot,
e.ActivityName,
e.EventTime,
e.MaterialNumber,
e.UserName,
e.MovementType,
e.Plant,
e.StorageLocation,
e.Quantity,
e.MovementReasonCode,
e.MaterialDocumentNumber,
e.MaterialDocumentYear,
e.MaterialDocumentItem,
c.CUOBJ_BM AS BatchObjectNumber
FROM matdoc_events e
LEFT JOIN [Your SAP HANA schema].MCHA c
ON c.MATNR = e.MaterialNumber
AND c.CHARG = e.InventoryBatchLot
AND c.WERKS = e.Plant
),
verified_batch_status_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Batch Status Changed' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
verified_picking_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
all_events AS (
SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM batch_enriched_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_batch_status_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_picking_events
)
SELECT
InventoryBatchLot,
ActivityName,
EventTime,
MaterialNumber,
UserName,
MovementType,
Plant,
StorageLocation,
Quantity,
MovementReasonCode
FROM all_events
WHERE InventoryBatchLot IS NOT NULL
AND EventTime IS NOT NULL
ORDER BY InventoryBatchLot, EventTime, MaterialDocumentYear, MaterialDocumentNumber, MaterialDocumentItem, ActivityName; Langkah
- Buka ABAP Editor: Masuk ke sistem SAP S/4HANA Anda. Buka ABAP Editor menggunakan kode transaksi
SE38. - Buat program baru: Masukkan nama program baru di kolom 'Program', misalnya
Z_PM_INVENTORY_EXTRACT, lalu klik tombol 'Create'. Beri judul yang menjelaskan fungsi program, pilih 'Executable Program' pada kolom 'Type', lalu simpan ke dalam package. - Tentukan parameter program: Di editor program, buat layar seleksi yang akan digunakan sebagai antarmuka ekstraksi. Pengguna dapat memasukkan parameter seperti rentang tanggal dan plant untuk ekstraksi data.
- Terapkan logika ekstraksi: Salin seluruh kode ABAP dari bagian 'Query', lalu tempelkan ke ABAP Editor. Kode ini dirancang untuk memilih data bagi 14 aktivitas inventaris yang diperlukan dari berbagai tabel SAP.
- Pahami logika utama: Program memilih data untuk setiap aktivitas inventaris dari tabel sumbernya, seperti
MKPFdanMSEGuntuk pergerakan material, atauCDHDRdanCDPOSuntuk perubahan data master. Hasil setiap pemilihan kemudian digabungkan denganUNION ALLke dalam satu tabel internal yang mewakili log peristiwa. - Atur keluaran file: Bagian akhir kode menulis data gabungan dari tabel internal ke file. Kode menggunakan pernyataan
OPEN DATASETuntuk membuat file di server aplikasi SAP. Tentukan jalur server yang valid dan pastikan pengguna sistem SAP memiliki izin untuk menulis ke sana. - Jalankan program: Simpan dan aktifkan program ABAP (Ctrl+F3). Tekan F8 untuk menjalankannya. Di layar seleksi, masukkan rentang tanggal yang diinginkan dan filter lain yang relevan, seperti Plant atau Company Code.
- Jalankan sebagai pekerjaan latar belakang: Untuk volume data besar, jalankan program sebagai pekerjaan latar belakang agar sesi tidak timeout. Dari layar eksekusi (F8), buka menu
Program -> Execute in Background. Jadwalkan pekerjaan di luar jam sibuk. - Ambil file keluaran: Setelah pekerjaan selesai, cari file keluaran di server aplikasi SAP. Gunakan kode transaksi
AL11untuk menelusuri direktori server dan menemukan file. Gunakan transaksiCG3Yuntuk mengunduh file dari server aplikasi ke komputer Anda. - Siapkan file untuk diunggah: Buka file yang diunduh dengan editor teks atau aplikasi spreadsheet. Pastikan formatnya CSV dengan baris header, koma sebagai pemisah, dan tanda kutip ganda sebagai pembatas teks. Periksa apakah nama kolom sudah sesuai sebelum mengunggah file ke alat process mining.
Konfigurasi
- Rentang tanggal posting: Ini parameter yang paling penting. Sebaiknya ekstrak data dalam kelompok yang mudah dikelola, misalnya 3 hingga 6 bulan setiap kali, agar kinerja tetap baik dan sistem tidak timeout.
- Filter Plant: Sangat disarankan untuk memfilter satu atau beberapa Plant (
WERKS) tertentu. Menjalankan ekstraksi untuk semua plant sekaligus dapat menghabiskan banyak sumber daya. - Filter Company Code: Anda dapat menambahkan filter opsional untuk Company Code (
BUKRS) guna membatasi cakupan data, terutama jika organisasi Anda menggunakan beberapa company code dalam sistem yang sama. - Jalur file di server aplikasi: Program ABAP memerlukan jalur direktori yang sudah ditentukan dan valid di server aplikasi SAP. Pastikan pengguna sistem SAP (
SY-UNAME) memiliki izin tingkat OS untuk menulis file ke direktori tersebut. - Otorisasi: Pengguna yang menjalankan ekstraksi ini memerlukan otorisasi untuk transaksi
SE38(membuat dan menjalankan program), akses untuk menampilkan tabelMKPF,MSEG,MCH1,CDHDR,CDPOS,LTAK, danLTAP, serta izin untuk menjadwalkan pekerjaan latar belakang (SM36/SM37).
Contoh kueri abap
REPORT Z_PM_INVENTORY_EXTRACT.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_budat FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: s_werks FOR mseg-werks.
PARAMETERS: p_fpath TYPE string DEFAULT '/usr/sap/trans/tmp/inventory_log.csv' OBLIGATORY.
" ====================================================================
" DATA STRUCTURES
" ====================================================================
TYPES: BEGIN OF ty_event_log,
InventoryBatchLot TYPE charg,
ActivityName TYPE string,
EventTime TYPE string,
MaterialNumber TYPE matnr,
UserName TYPE xubname,
MovementType TYPE bwart,
Plant TYPE werks_d,
StorageLocation TYPE lgort_d,
Quantity TYPE menge_d,
MovementReasonCode TYPE grund,
END OF ty_event_log.
DATA: lt_event_log TYPE TABLE OF ty_event_log.
" ====================================================================
" DATA SELECTION
" ====================================================================
START-OF-SELECTION.
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Receipt Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('101', '103', '105', '501', '521', '561')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~shkzg
WHEN 'H' THEN 'Stock Posted to Quality Inspection'
WHEN 'S' THEN 'Quality Inspection Stock Released'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '321' " For QI to Unrestricted
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Put-Away Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '311' AND mseg~shkzg = 'H' " Assume put-away is the credit side
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Internal Stock Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('301', '311', '313', '315')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~bwart
WHEN '343' THEN 'Stock Status Changed to Blocked'
WHEN '344' THEN 'Stock Status Changed to Unrestricted'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('343', '344')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Inventory Adjustment Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('701', '702', '711', '712')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Delivery Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '601'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Production Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '261'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Sales Return Received' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('651', '653')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Stock Scrapped' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '551'
UNION ALL
SELECT
ltap~charg AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CONCAT( ltak~bdatu, ltak~bzeit ) AS EventTime,
ltap~matnr AS MaterialNumber,
ltak~bname AS UserName,
ltak~bwart AS MovementType,
ltap~werks AS Plant,
ltap~lgort AS StorageLocation,
ltap~nista AS Quantity,
'' AS MovementReasonCode
FROM ltap
JOIN ltak ON ltak~tanum = ltap~tanum
WHERE ltak~bdatu IN s_budat
AND ltap~werks IN s_werks
AND ltap~charg IS NOT NULL AND ltap~charg <> ''
UNION ALL
SELECT
SUBSTRING( cdhdr~objectid, 5, 18 ) AS InventoryBatchLot, " Object ID for BATCH is MATNR+WERKS+CHARG
'Batch Status Changed' AS ActivityName,
CONCAT( cdhdr~udate, cdhdr~utime ) AS EventTime,
SUBSTRING( cdhdr~objectid, 1, 4 ) AS MaterialNumber,
cdhdr~username AS UserName,
'' AS MovementType,
'' AS Plant,
'' AS StorageLocation,
0 AS Quantity,
'' AS MovementReasonCode
FROM cdhdr
JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
AND cdpos~objectid = cdhdr~objectid
AND cdpos~changenr = cdhdr~changenr
WHERE cdhdr~udate IN s_budat
AND cdhdr~objectclas = 'BATCH'
AND cdpos~tabname = 'MCH1'
AND cdpos~fname = 'ZUSTD'
INTO TABLE @lt_event_log.
" ====================================================================
" WRITE OUTPUT FILE
" ====================================================================
DATA: lv_string TYPE string.
DATA: lo_conv TYPE REF TO cl_abap_conv_out_ce.
lo_conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'Error opening file.' TYPE 'E'.
RETURN.
ENDIF.
" Write Header
lv_string = 'InventoryBatchLot,ActivityName,EventTime,MaterialNumber,UserName,MovementType,Plant,StorageLocation,Quantity,MovementReasonCode'.
TRANSFER lv_string TO p_fpath.
" Write Data
LOOP AT lt_event_log ASSIGNING FIELD-SYMBOL(<fs_log>).
CONCATENATE
<fs_log>-InventoryBatchLot
<fs_log>-ActivityName
<fs_log>-EventTime
<fs_log>-MaterialNumber
<fs_log>-UserName
<fs_log>-MovementType
<fs_log>-Plant
<fs_log>-StorageLocation
<fs_log>-Quantity
<fs_log>-MovementReasonCode
INTO lv_string
SEPARATED BY ','.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
WRITE: 'Extraction complete. File written to:', p_fpath. Siap memulai?
Gunakan templat ini untuk menyiapkan data dengan yakin dan mendapatkan wawasan berharga tentang operasional pengelolaan inventaris Anda. Mulailah mengoptimalkan efisiensi dan mengurangi biaya hari ini.
Optimalkan pengelolaan inventaris di SAP S/4HANA
Temukan inefisiensi, kurangi waktu siklus hingga 30%, dan hemat biaya.
Tidak perlu kartu kredit • Siap digunakan dalam hitungan menit