Templat data pemeliharaan aset Anda
Templat data pemeliharaan aset Anda
- Atribut yang disarankan untuk dikumpulkan
- Aktivitas pemeliharaan penting untuk dilacak
- Panduan teknis ekstraksi untuk SAP PM
Atribut pemeliharaan aset
| Nama | Deskripsi | ||
|---|---|---|---|
| Nama aktivitas Activity | Tugas atau perubahan status tertentu yang terjadi. | ||
| Deskripsi Menunjukkan langkah yang dilakukan dalam proses pemeliharaan, seperti 'Perintah pemeliharaan dibuat', 'Pengeluaran barang diposting', atau 'Operasi perintah dikonfirmasi'. Data ini biasanya diambil dari tabel pengelolaan status (JEST) untuk perubahan status, atau tabel transaksi (AFRU untuk konfirmasi, MKPF untuk pergerakan material). Atribut ini menentukan simpul pada peta proses. Mengapa ini penting Atribut ini menjelaskan 'apa' yang terjadi, dan penting untuk menemukan alur serta variasi proses. Sumber data Diambil dari JEST (Status), AFRU (Konfirmasi), QMEL (Notifikasi) Contoh Perintah pemeliharaan dibuatPerintah dirilisSelesai secara teknis | |||
| Pembaruan data terakhir LastDataUpdate | Stempel waktu ekstraksi data terbaru. | ||
| Deskripsi Menunjukkan kapan data terakhir diperbarui dalam model data process mining. Dengan informasi ini, analis dapat mengetahui seberapa mutakhir hasil analisis dan memeriksa kesegaran data pada dasbor yang memantau tunggakan terkini atau kepatuhan terhadap SLA. Mengapa ini penting Penting untuk tata kelola data dan membangun kepercayaan terhadap dasbor. Sumber data Stempel waktu ETL Contoh 2023-11-01T12:00:00Z | |||
| Perintah kerja pemeliharaan MaintenanceWorkOrder | Pengenal unik untuk perintah kerja pemeliharaan. | ||
| Deskripsi Perintah Kerja Pemeliharaan adalah dokumen utama di SAP Plant Maintenance (tabel AUFK, kolom AUFNR). Dokumen ini menghubungkan kebutuhan pemeliharaan (Notifikasi) dengan sumber daya pelaksana, material, dan biaya. Dalam analisis process mining, dokumen ini berfungsi sebagai ID Kasus untuk merekonstruksi siklus hidup pekerjaan pemeliharaan dari awal hingga selesai secara teknis dan bisnis. Mengapa ini penting Kunci unik ini menghubungkan semua aktivitas, biaya, dan stempel waktu, sehingga alur proses dapat divisualisasikan. Sumber data Tabel SAP AUFK, Kolom AUFNR Contoh 00004001234540012345000040098765 | |||
| Sistem sumber SourceSystem | Sistem asal data. | ||
| Deskripsi Mengidentifikasi klien atau instans SAP tertentu, misalnya 'SAP_PM_PROD'. Jika ada beberapa sistem ERP, atribut ini membantu membedakan data dengan ID yang sama tetapi berasal dari badan hukum atau lingkungan sistem yang berbeda. Mengapa ini penting Memastikan keunikan dan asal-usul data di lingkungan dengan beberapa sistem. Sumber data Konfigurasi sistem / Log ekstraksi Contoh SAP_ECC_P01SAP_S4H_100 | |||
| Stempel waktu peristiwa EventTimestamp | Tanggal dan waktu persis saat aktivitas terjadi. | ||
| Deskripsi Mencatat waktu persis terjadinya suatu peristiwa. Untuk perubahan status, waktunya diambil dari pembaruan status sistem. Untuk operasi, waktunya berasal dari konfirmasi. Stempel waktu yang akurat penting untuk menghitung waktu siklus dan waktu tunggu, serta menemukan hambatan di antara langkah proses seperti 'Perencanaan' dan 'Pelaksanaan'. Mengapa ini penting Diperlukan untuk mengurutkan peristiwa dengan benar dan menghitung semua KPI berbasis durasi. Sumber data JEST (UDATE/UTIME), AFRU (ISDD/ISDZ), MKPF (CPUDT/CPUTM) Contoh 2023-10-15T08:30:00Z2023-10-15T14:45:12Z | |||
| Grup perencana ResponsiblePlannerGroup | Grup perencana yang bertanggung jawab memproses perintah. | ||
| Deskripsi Grup Perencana (INGRP) mengidentifikasi tim atau departemen yang bertanggung jawab merencanakan pekerjaan pemeliharaan. Atribut ini dipetakan ke 'Departemen' dan penting untuk dasbor 'Pemanfaatan Sumber Daya dan Penjadwalan', yang membantu menemukan tim perencana yang menjadi hambatan pada tahap persiapan. Mengapa ini penting Mengidentifikasi tim administrasi yang bertanggung jawab atas proses perencanaan. Sumber data Tabel SAP AUFK, Kolom INGRP Contoh M01ELEMEC | |||
| Jenis perintah pemeliharaan MaintenanceOrderType | Mengelompokkan perintah kerja, misalnya Preventif atau Korektif. | ||
| Deskripsi Jenis Perintah (AUART) di SAP PM membedakan sifat pekerjaan pemeliharaan. Jenis yang umum mencakup PM01 (Korektif), PM02 (Preventif), dan PM03 (Peremajaan). Atribut ini penting untuk 'Pemantau Dampak Perintah Kerja Darurat' dan untuk mengelompokkan variasi proses, karena alur kerja preventif sangat berbeda dari alur reaktif. Mengapa ini penting Penting untuk membandingkan pekerjaan terencana dengan pekerjaan yang tidak direncanakan. Sumber data Tabel SAP AUFK, Kolom AUART Contoh PM01PM02PM03 | |||
| Lokasi fungsional FunctionalLocation | Lokasi bertingkat tempat aset dipasang. | ||
| Deskripsi Menunjukkan lokasi dalam struktur teknis tempat tugas pemeliharaan dilakukan (TPLNR). Berbeda dengan Peralatan yang dapat dipindahkan, Lokasi Fungsional bersifat tetap. Atribut ini mendukung dasbor 'Waktu Siklus Inspeksi Teknis' dengan membandingkan kinerja di berbagai area pabrik, misalnya ruang ketel dan jalur pengemasan. Mengapa ini penting Memungkinkan analisis kinerja pemeliharaan berdasarkan lokasi dan hierarki. Sumber data Tabel SAP IFLOT, Kolom TPLNR (atau melalui AUFK-TPLNR) Contoh PLANT1-BLD2-LN01US-TX-DAL-01 | |||
| Nomor notifikasi NotificationNumber | Notifikasi pemeliharaan yang memicu perintah ini. | ||
| Deskripsi Nomor Notifikasi (QMNUM) menghubungkan Perintah Kerja dengan permintaan awal (Notifikasi). Hubungan ini diperlukan untuk menghitung seluruh waktu tunggu, dari 'Permintaan Pemeliharaan Diterima' hingga pekerjaan selesai. Tanpa hubungan ini, analisis tidak mencakup tahap awal deteksi dan pelaporan dalam siklus pemeliharaan. Mengapa ini penting Menghubungkan tahap pelaksanaan kembali ke tahap permintaan/deteksi. Sumber data Tabel SAP AUFK, kolom QMNUM Contoh 1000050010000501 | |||
| Nomor peralatan EquipmentNumber | Pengenal aset fisik tertentu yang sedang dipelihara. | ||
| Deskripsi Nomor Peralatan (EQUNR) mengidentifikasi mesin atau aset tertentu. Dengan mengelompokkan data berdasarkan kolom ini, analis dapat membuat dasbor 'Biaya dan Throughput Pemeliharaan Aset' untuk menemukan peralatan yang sering mengalami kerusakan dan membutuhkan perbaikan mahal. Atribut ini mendukung analisis pemeliharaan yang berfokus pada keandalan. Mengapa ini penting Menghubungkan kinerja proses dengan aset fisik tertentu. Sumber data Tabel SAP AUFK, Kolom EQUNR Contoh 10004567PUMP-001HVAC-202 | |||
| Pabrik pemeliharaan MaintenancePlant | Pabrik logistik yang bertanggung jawab atas pemeliharaan. | ||
| Deskripsi Pabrik (WERKS) adalah unit organisasi utama dalam logistik. Atribut ini memisahkan data berdasarkan fasilitas fisik. Atribut ini penting untuk membandingkan kinerja antar lokasi dan dipetakan ke 'Unit Bisnis' agar dasbor dapat difilter berdasarkan organisasi. Mengapa ini penting Filter organisasi utama untuk membandingkan kinerja fasilitas. Sumber data Tabel SAP AUFK, Kolom WERKS Contoh 100020003000 | |||
| Pengguna pembuat CreatedByUser | Nama pengguna yang membuat perintah kerja. | ||
| Deskripsi Menunjukkan pengguna (ERNAM) yang membuat perintah kerja. Dalam model umum, data ini dipetakan ke 'Pengguna'. Anda dapat menganalisis pembuatan manual dibandingkan otomatis, serta mengaudit aktivitas 'Perintah Pemeliharaan Dibuat'. Mengapa ini penting Mendukung analisis perilaku pengguna dan audit. Sumber data Tabel SAP AUFK, kolom ERNAM Contoh JSMITHBSERVICEDDAVIS | |||
| Prioritas pemeliharaan MaintenancePriority | Tingkat urgensi yang ditetapkan untuk perintah kerja. | ||
| Deskripsi Menunjukkan prioritas (PRIOK) tugas pemeliharaan, seperti '1-Sangat Tinggi', '2-Tinggi', atau '3-Sedang'. Kolom ini menjadi masukan langsung untuk KPI 'Rasio Perintah Kerja Darurat'. Analisis alur berdasarkan prioritas membantu mengetahui apakah perintah berprioritas tinggi benar-benar diproses lebih cepat daripada pekerjaan rutin. Mengapa ini penting Faktor utama untuk analisis SLA dan identifikasi pekerjaan darurat. Sumber data Tabel SAP AFKO, Kolom PRIOK (atau AUFK melalui tampilan) Contoh 1-Darurat2-Tinggi3-Sedang4-Rendah | |||
| Pusat kerja utama MainWorkCenter | Pusat kerja atau kru utama yang ditugaskan untuk melaksanakan perintah. | ||
| Deskripsi Pusat Kerja Utama (VAPLZ) menunjukkan kelompok teknisi atau mesin yang akan melakukan pekerjaan fisik. Atribut ini dipetakan ke 'Tim' dan penting untuk menganalisis efisiensi pelaksanaan, misalnya waktu rata-rata perbaikan tiap kru. Atribut ini juga membantu membedakan tenaga kerja internal dari kontraktor eksternal. Mengapa ini penting Memungkinkan analisis kinerja berdasarkan sumber daya. Sumber data Tabel SAP AFKO, Kolom VAPLZ (atau AUFK-VAPLZ, bergantung pada konfigurasi) Contoh MECH_01ELEC_TEAMEXT_CONT | |||
| Status sistem SystemStatus | Status teknis perintah kerja saat ini (misalnya, REL, TECO). | ||
| Deskripsi Rangkaian teks atau daftar status sistem aktif (dari JEST) yang saat ini berlaku untuk perintah kerja. Nilai umum mencakup CRTD (Dibuat), REL (Dirilis), TECO (Selesai secara teknis), dan CLSD (Ditutup). Data ini membantu memfilter kasus yang masih terbuka dan yang sudah ditutup di 'Pemantau Backlog dan Pekerjaan Berlangsung'. Mengapa ini penting Penanda utama tahap siklus hidup perintah kerja. Sumber data Modul fungsi SAP STATUS_TEXT_EDIT atau tabel JEST Contoh REL CNFTECOCRTD MACM | |||
| Tanggal target selesai TargetFinishDate | Tanggal penyelesaian pekerjaan pemeliharaan yang dijadwalkan. | ||
| Deskripsi Tanggal ini (biasanya Basic Finish Date - GLTRP) menjadi tenggat penyelesaian perintah kerja. Tanggal tersebut dibandingkan dengan waktu penyelesaian aktual untuk menghitung KPI 'Tingkat Kepatuhan SLA'. Tanggal ini menjadi acuan untuk menentukan apakah perintah kerja selesai tepat waktu atau terlambat. Mengapa ini penting Menjadi acuan untuk semua perhitungan On-Time Delivery (OTD). Sumber data Tabel SAP AFKO, kolom GLTRP Contoh 2023-12-012023-12-15 | |||
| Apakah pekerjaan darurat IsEmergencyWork | Penanda yang menunjukkan apakah perintah kerja bersifat darurat. | ||
| Deskripsi Atribut boolean yang dihitung berdasarkan Prioritas Pemeliharaan. Jika Prioritas bernilai '1' (atau kode khusus untuk Darurat dalam konfigurasi), penanda ini bernilai true. Dengan begitu, Anda dapat memfilter data dan membuat KPI 'Rasio Perintah Kerja Darurat' tanpa logika rumit di lapisan dashboard. Mengapa ini penting Memudahkan pemfilteran untuk analisis pemeliharaan reaktif yang kritis. Sumber data Dihitung dari MaintenancePriority Contoh truefalse | |||
| Apakah pengerjaan ulang IsRework | Penanda yang menunjukkan apakah perintah kerja mencakup aktivitas pengerjaan ulang. | ||
| Deskripsi Nilai boolean hasil perhitungan yang menunjukkan apakah terjadi pengulangan dalam proses. Contohnya, aktivitas 'Tugas Pemeliharaan Dilaksanakan' terjadi lebih dari sekali, atau status berubah kembali dari 'Selesai secara teknis' menjadi 'Dalam proses'. Data ini mendukung KPI 'Tingkat Pengerjaan Ulang Pemeliharaan' dan membantu menemukan masalah kualitas. Mengapa ini penting Mendukung analisis pengendalian kualitas secara langsung. Sumber data Dihitung dari alur proses Contoh truefalse | |||
| Jam kerja tenaga kerja yang direncanakan PlannedLaborHours | Perkiraan jam kerja untuk perintah kerja. | ||
| Deskripsi Total pekerjaan yang direncanakan (ARBEI) dari operasi perintah kerja. Bandingkan nilai ini dengan Durasi Aktivitas aktual di dashboard 'Kinerja Perencanaan dan Estimasi' untuk menilai ketepatan perencanaan pemeliharaan. Mengapa ini penting Metrik dasar untuk menganalisis ketepatan perencanaan. Sumber data Tabel SAP AFKO (jumlah pekerjaan terencana per operasi) Contoh 4.08.512.0 | |||
| Total biaya aktual TotalActualCost | Total biaya aktual yang dibukukan ke perintah kerja. | ||
| Deskripsi Akumulasi biaya tenaga kerja, material, dan jasa (dari tabel PMCO). Atribut ini mendukung dashboard 'Biaya dan Produktivitas Pemeliharaan Aset', sehingga manajer dapat melihat dampak finansial dari aktivitas pemeliharaan. Data ini penting untuk menilai apakah memperbaiki atau mengganti aset lebih hemat biaya. Mengapa ini penting Menambahkan dimensi finansial pada data proses operasional. Sumber data Tabel SAP PMCO (jumlah nilai tipe 04 - Aktual) Contoh 150.002500.500.00 | |||
Aktivitas pemeliharaan aset
| Aktivitas | Deskripsi | ||
|---|---|---|---|
| Operasi perintah dikonfirmasi | Mencatat waktu aktual yang digunakan teknisi untuk operasi tertentu. Aktivitas ini merekam pekerjaan yang benar-benar dilakukan pada aset. | ||
| Mengapa ini penting Aktivitas ini menjadi sumber data utama untuk menghitung waktu rata-rata perbaikan dan biaya tenaga kerja. Sumber data Tabel AFRU (Konfirmasi Perintah). Pengumpulan data Dicatat saat transaksi IW41 dijalankan Jenis peristiwa explicit | |||
| Pengeluaran barang diposting | Mencatat pemakaian fisik suku cadang atau material untuk perintah kerja. Aktivitas ini diambil dari header dokumen material yang terhubung ke perintah. | ||
| Mengapa ini penting Memastikan suku cadang tersedia dan telah diambil. Hal ini berdampak langsung pada analisis waktu tunggu ketersediaan suku cadang. Sumber data Tabel MSEG/MKPF, Jenis Pergerakan 261 (Pengeluaran Barang untuk Perintah). Pengumpulan data Dicatat saat transaksi MIGO/MB1A dijalankan Jenis peristiwa explicit | |||
| Penyelesaian bisnis ditetapkan | Menandai penutupan administratif akhir perintah kerja dan mencegah posting biaya lebih lanjut. Aktivitas ini diambil dari perubahan status menjadi CLSD (Ditutup). | ||
| Mengapa ini penting Menandai akhir siklus hidup perintah dan penting untuk akurasi data serta kepatuhan pencatatan. Sumber data Tabel JCDS, Status I0046 (CLSD). Pengumpulan data Dicatat saat status berubah menjadi CLSD di JCDS Jenis peristiwa explicit | |||
| Penyelesaian teknis ditetapkan | Menandai pekerjaan pemeliharaan telah selesai secara fisik dan teknis. Aktivitas ini diambil dari perubahan status menjadi TECO (Selesai Secara Teknis). | ||
| Mengapa ini penting Ini adalah titik akhir paling penting untuk analisis operasional, yang menandakan aset telah dipulihkan dan pemeliharaan selesai. Sumber data Tabel JCDS, Status I0045 (TECO). Pengumpulan data Dicatat saat status berubah menjadi TECO di JCDS Jenis peristiwa explicit | |||
| Perintah pemeliharaan dibuat | Menandai pembuatan objek perintah kerja pemeliharaan di sistem. Aktivitas ini diambil langsung dari stempel waktu pembuatan pada tabel Data Induk Perintah. | ||
| Mengapa ini penting Ini adalah peristiwa utama yang menjadi acuan kasus, menandai peralihan dari permintaan ke perencanaan dan pelaksanaan. Sumber data Tabel AUFK, kolom ERDAT (Tanggal) dan ERFZEIT (Waktu). Pengumpulan data Dicatat saat transaksi IW31 dijalankan Jenis peristiwa explicit | |||
| Perintah pemeliharaan dirilis | Menandakan perencanaan telah selesai dan perintah siap dilaksanakan. Aktivitas ini diambil dengan memantau perubahan status menjadi REL di log status sistem. | ||
| Mengapa ini penting Tonggak ini memisahkan tahap perencanaan dari tahap pelaksanaan. Pemisahan ini penting untuk mengukur waktu perencanaan dan estimasi. Sumber data Tabel JCDS (Dokumen Perubahan Status), Status I0002 (REL). Pengumpulan data Dicatat saat status berubah menjadi REL di JCDS Jenis peristiwa explicit | |||
| Biaya perintah diselesaikan | Menandakan biaya yang terkumpul pada perintah telah dialihkan ke objek pengendali, misalnya Pusat Biaya. Aktivitas ini diambil dari dokumen pengendalian. | ||
| Mengapa ini penting Melacak penutupan keuangan dan mendukung KPI Durasi Penyelesaian Keuangan. Sumber data Tabel COBK (Objek CO: Header Dokumen), terhubung ke Perintah. Pengumpulan data Dicatat saat transaksi penyelesaian KO88 dijalankan Jenis peristiwa explicit | |||
| Komponen material ditambahkan | Mencatat penambahan suku cadang atau material ke daftar komponen perintah kerja. Aktivitas ini diambil dari pembuatan item reservasi. | ||
| Mengapa ini penting Menandai awal siklus pengadaan suku cadang yang dibutuhkan dan mendukung dasbor waktu pengadaan suku cadang. Sumber data Tabel RESB, kolom BDTER (Tanggal Kebutuhan) atau stempel waktu pembuatan. Pengumpulan data Dicatat saat item ditambahkan ke RESB Jenis peristiwa explicit | |||
| Notifikasi pemeliharaan dibuat | Mencatat pembuatan awal notifikasi pemeliharaan, yang sering menjadi pemicu dibuatnya perintah kerja. Aktivitas ini diambil dari stempel waktu pembuatan pada tabel QMEL dan menghubungkan permintaan awal dengan perintah pelaksanaan. | ||
| Mengapa ini penting Aktivitas ini menandai awal proses pemeliharaan dari ujung ke ujung, sehingga waktu respons antara deteksi kerusakan dan pembuatan perintah dapat dihitung. Sumber data Tabel QMEL, kolom ERDAT (Tanggal Pembuatan) dan MZEIT (Waktu). Terhubung ke perintah melalui QMEL-AUFNR. Pengumpulan data Dicatat saat data dibuat di tabel QMEL Jenis peristiwa explicit | |||
| Pembacaan pengukuran dicatat | Mencatat entri dokumen pengukuran, seperti pembacaan penghitung atau penilaian kondisi. Aktivitas ini sering menjadi peristiwa Inspeksi Teknis. | ||
| Mengapa ini penting Penting untuk pemeliharaan berbasis kondisi dan pelacakan waktu siklus inspeksi teknis. Sumber data Tabel IMRG (Dokumen Pengukuran), terhubung ke Peralatan atau Lokasi Fungsional. Pengumpulan data Dicatat saat dokumen pengukuran dibuat Jenis peristiwa explicit | |||
| Penyelesaian teknis dibatalkan | Mencatat pencabutan status Penyelesaian Teknis, yang menandakan perintah dibuka kembali. Peristiwa ini membentuk alur pengerjaan ulang dalam model proses. | ||
| Mengapa ini penting Indikator utama KPI Tingkat Pengerjaan Ulang Pemeliharaan, yang membantu menemukan penutupan terlalu dini atau masalah kualitas. Sumber data Tabel JCDS, perubahan Status I0045 (TECO) menjadi Tidak Aktif. Pengumpulan data Dicatat saat status TECO dinonaktifkan Jenis peristiwa explicit | |||
| Perintah kerja dijadwalkan | Menandakan operasi dijadwalkan pada kapasitas atau tanggal tertentu. Aktivitas ini disimpulkan dari penetapan status Dispatch pada operasi. | ||
| Mengapa ini penting Mengukur efisiensi alokasi sumber daya dan mendukung dasbor pemanfaatan sumber daya dan penjadwalan. Sumber data Tabel JCDS (Dokumen Perubahan Status) untuk Operasi (ObjType OV), Status I0009 (DSPT). Pengumpulan data Bandingkan kolom status sebelum dan sesudah Jenis peristiwa inferred | |||
| Permintaan pembelian dibuat | Menandakan permintaan pengadaan barang atau jasa dari pihak luar telah dibuat. Aktivitas ini menghubungkan perintah pemeliharaan internal dengan rantai pasok eksternal. | ||
| Mengapa ini penting Penting untuk menganalisis keterlambatan akibat pemasok eksternal atau pengadaan material yang tidak tersedia di stok. Sumber data Tabel EBAN, terhubung melalui Penetapan Akun ke AUFK-AUFNR. Pengumpulan data Dicatat saat data EBAN dibuat Jenis peristiwa explicit | |||
| Prioritas pemeliharaan diubah | Mencatat perubahan tingkat prioritas perintah kerja, misalnya saat dinaikkan menjadi Darurat. Data ini diambil dari Dokumen Perubahan yang terkait dengan data induk perintah. | ||
| Mengapa ini penting Melacak perubahan prioritas membantu menjelaskan penyimpangan proses dan mendukung pemantau dampak perintah kerja darurat dengan mengidentifikasi kenaikan prioritas yang bersifat reaktif. Sumber data Tabel CDPOS/CDHDR untuk Kelas Objek AUFTRAG, kolom PRIOK. Pengumpulan data Dicatat dalam Dokumen Perubahan (CDPOS) Jenis peristiwa explicit | |||
Panduan ekstraksi
Langkah
Tentukan antarmuka sumber data: Tentukan cara mengakses antarmuka SQL SAP S/4HANA. Biasanya, akses dilakukan melalui SAP HANA Studio, ABAP Development Tools (ADT) di Eclipse, atau string koneksi DBaaS jika basis data HANA terhubung ke lapisan analitik Anda.
Pastikan CDS View tersedia: Pastikan CDS view Core Data Services standar aktif di sistem S/4HANA Anda. View utama yang diperlukan adalah I_MaintenanceOrder, I_MaintenanceOrderOperation, I_MaintenanceNotification, I_MaintOrderConfirmation, dan I_MeasurementDocument. Anda juga perlu mengakses tabel riwayat status sistem JCDS dan tabel dokumen perubahan (CDHDR/CDPOS) untuk menyusun kembali seluruh riwayat peristiwa, karena CDS view standar sering kali hanya menampilkan status terkini.
Siapkan lingkungan SQL: Buka editor SQL. Pastikan pengguna Anda memiliki izin SELECT pada view SQL DDL (biasanya di skema SAPABAP1 atau skema serupa) untuk objek yang disebutkan di atas.
Jalankan kueri ekstraksi: Salin skrip SQL yang disediakan ke editor. Ganti placeholder [Nomor Klien Anda] dengan ID klien SAP Anda (misalnya, 100). Jika Anda memfilter berdasarkan rentang tanggal tertentu, perbarui filter EventTimestamp di klausa WHERE.
Transformasi data: Kueri ini menangani sebagian besar transformasi, seperti mengubah tipe stempel waktu dan memetakan kode status ke teks yang mudah dibaca. Namun, pastikan kolom EventTimestamp menggunakan format ISO 8601 (YYYY-MM-DDTHH:MM:SS) saat diekspor jika sistem tujuan Anda memerlukannya.
Ekspor hasil: Jalankan kueri dan ekspor hasilnya ke file CSV atau Parquet. Pastikan pengodean UTF-8 digunakan agar karakter khusus dalam nama pengguna atau deskripsi tetap terbaca.
Validasi pemetaan kolom: Buka sampel hasil ekspor dan pastikan kolom MaintenanceWorkOrder, Activity, dan EventTimestamp terisi lengkap. Periksa apakah kolom Activity memuat teks yang ditentukan dalam persyaratan (misalnya, Maintenance Order Created, Goods Issue Posted).
Unggah ke ProcessMind: Impor file datar yang sudah divalidasi ke ProcessMind. Petakan kolom Activity ke kolom Activity ID, MaintenanceWorkOrder ke kolom Case ID, dan EventTimestamp ke kolom Timestamp.
Konfigurasi
- Filter klien: Sistem SAP mendukung banyak klien. Selalu filter berdasarkan
MANDTatauClient(misalnya, '100') untuk menghindari data duplikat atau kebocoran data antar-klien. - Rentang tanggal: Sebaiknya filter
CreationDatePerintah Pemeliharaan untuk 6 hingga 12 bulan terakhir. Mengueri seluruh riwayatJCDS(Status) atauCDPOS(Dokumen Perubahan) tanpa filter tanggal dapat menyebabkan kueri kehabisan waktu. - Kunci bahasa: Secara default, kueri menggunakan bahasa Inggris ('E'). Jika organisasi Anda menggunakan bahasa utama lain untuk deskripsi teks, sesuaikan filter bahasa.
- Akses sistem: Memerlukan akses ke skema ABAP Core Data Services atau tabel HANA yang mendasarinya. Akses ke tabel mentah JCDS dan CDHDR sangat penting untuk analisis riwayat status, karena CDS view saja sering kali hanya menampilkan rekam kondisi saat ini.
- Jenis perintah kerja: Kueri mengambil semua jenis perintah kerja. Anda dapat memfilter
MaintenanceOrderType(misalnya, hanya PM01, PM02) jika ingin menganalisis skenario pemeliharaan tertentu saja.
Contoh kueri sql
/* Activity 1: Maintenance Notification Created */
SELECT
CAST(N.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(N.CreationDate, ' '), N.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
N.MaintenanceOrderType,
N.MaintenancePriority,
N.Equipment AS EquipmentNumber,
N.FunctionalLocation,
N.MaintenancePlant,
N.MaintenancePlannerGroup AS ResponsiblePlannerGroup,
N.MainWorkCenter,
N.MaintenanceNotification AS NotificationNumber,
CAST(NULL AS DATE) AS TargetFinishDate,
N.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceNotification N
JOIN I_MaintenanceOrder O ON N.MaintenanceOrder = O.MaintenanceOrder
WHERE N.MaintenanceOrder IS NOT NULL AND N.MaintenanceOrder <> ''
UNION ALL
/* Activity 2: Maintenance Order Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Created' AS Activity,
O.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrder O
UNION ALL
/* Activity 3: Maintenance Priority Changed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Priority Changed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(H.UDATE, ' '), H.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
H.USERNAME AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM CDHDR H
JOIN CDPOS P ON H.OBJECTCLAS = P.OBJECTCLAS AND H.OBJECTID = P.OBJECTID AND H.CHANGENR = P.CHANGENR
JOIN I_MaintenanceOrder O ON O.MaintenanceOrder = H.OBJECTID
WHERE H.OBJECTCLAS = 'ORDER'
AND P.TABNAME = 'AFKO'
AND P.FNAME = 'PRIOK'
UNION ALL
/* Activity 4: Maintenance Order Released */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Maintenance Order Released' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0002' /* REL Status */
AND J.INACT = ' '
UNION ALL
/* Activity 5: Material Component Added */
SELECT
CAST(C.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Material Component Added' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(C.CreationDate, ' '), COALESCE(C.CreationTime, '000000')), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
O.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintenanceOrderComponent C
JOIN I_MaintenanceOrder O ON C.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 6: Purchase Requisition Created */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Purchase Requisition Created' AS Activity,
PR.CreationDate AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
PR.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_PurchasingDocumentItem PR
JOIN I_MaintenanceOrder O ON PR.ServiceMaintenanceOrder = O.MaintenanceOrder
WHERE PR.PurchasingDocumentCategory = 'B' /* Requisition */
UNION ALL
/* Activity 7: Goods Issue Posted */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Goods Issue Posted' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(MD.CreationDate, ' '), MD.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
MD.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaterialDocumentItem MD
JOIN I_MaintenanceOrder O ON MD.MaintenanceOrder = O.MaintenanceOrder
WHERE MD.GoodsMovementType = '261'
UNION ALL
/* Activity 8: Work Order Scheduled (Operation Dispatched) */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Work Order Scheduled' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrderOperation OP ON J.OBJNR = OP.MaintenanceOrderOperationInternalID
JOIN I_MaintenanceOrder O ON OP.MaintenanceOrder = O.MaintenanceOrder
WHERE J.STAT = 'I0019' /* DSP Dispatched Status */
AND J.INACT = ' '
UNION ALL
/* Activity 9: Order Operation Confirmed */
SELECT
CAST(CNF.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Operation Confirmed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(CNF.CreationDate, ' '), CNF.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
CNF.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MaintOrderConfirmation CNF
JOIN I_MaintenanceOrder O ON CNF.MaintenanceOrder = O.MaintenanceOrder
WHERE CNF.IsReversed = ' '
UNION ALL
/* Activity 10: Measurement Reading Recorded */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Measurement Reading Recorded' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(M.CreationDate, ' '), M.CreationTime), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
M.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_MeasurementDocument M
JOIN I_MaintenanceOrder O ON M.MaintenanceOrder = O.MaintenanceOrder
UNION ALL
/* Activity 11: Technical Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = ' '
UNION ALL
/* Activity 12: Technical Completion Reversed */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Technical Completion Reversed' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0045' /* TECO Status */
AND J.INACT = 'X' /* Inactive indicates it was removed/reversed */
AND J.CHIND = 'U' /* Update indicator */
UNION ALL
/* Activity 13: Order Cost Settled */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Order Cost Settled' AS Activity,
JE.CreationDateTime AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
JE.CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM I_ActualPlanJrnlEntryItem JE
JOIN I_MaintenanceOrder O ON JE.OrderID = O.MaintenanceOrder
WHERE JE.BusinessTransactionType = 'KOAO' /* Settlement */
UNION ALL
/* Activity 14: Business Completion Set */
SELECT
CAST(O.MaintenanceOrder AS VARCHAR(20)) AS MaintenanceWorkOrder,
'Business Completion Set' AS Activity,
TO_TIMESTAMP(CONCAT(CONCAT(J.UDATE, ' '), J.UTIME), 'YYYYMMDD HH24MISS') AS EventTimestamp,
'SAP S/4HANA' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
O.MaintenanceOrderType,
O.MaintenancePriority,
O.Equipment AS EquipmentNumber,
O.FunctionalLocation,
O.MaintenancePlant,
O.ResponsiblePlannerGroup,
O.MainWorkCenter,
O.MaintenanceNotification AS NotificationNumber,
O.BasicEndDateTime AS TargetFinishDate,
J.USNAM AS CreatedByUser,
O.SystemStatusName AS SystemStatus
FROM JCDS J
JOIN I_MaintenanceOrder O ON J.OBJNR = CONCAT('OR', O.MaintenanceOrder)
WHERE J.STAT = 'I0046' /* CLSD Status */
AND J.INACT = ' ' Langkah
- Pastikan akses baca langsung tersedia untuk AUFK, AFVC, JEST, QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG, serta tabel dokumen perubahan dan dokumen pengendalian yang relevan. Pastikan nama fisik dan pemetaan kolom yang tepat di basis data SAP Anda, karena ketersediaan kolom dan struktur tabel yang direplikasi berbeda-beda menurut penerapan.
- Konfigurasikan koneksi ekstraksi, kredensial, tanggal mulai ekstraksi, tanggal akhir ekstraksi, dan filter khusus perusahaan. Untuk validasi awal, gunakan rentang berjalan tiga hingga enam bulan. Perluas rentang setelah pemeriksaan kinerja dan kelengkapan berhasil.
- Ekstrak atribut header perintah kerja dari AUFK, atribut operasi dari AFVC, dan catatan status dari JEST. Gabungkan catatan terkait perintah kerja menggunakan kolom nomor perintah kerja yang dipakai dalam skema SAP Anda. Dalam banyak penerapan SAP, JEST hanya menyimpan status saat ini. Untuk mendapatkan stempel waktu status historis, gunakan sumber riwayat status atau dokumen perubahan. Konfigurasikan [Tabel riwayat status Anda] dan kolom stempel waktunya jika JEST tidak menyimpan riwayat perubahan status.
- Ekstrak pembuatan notifikasi dari QMEL, pembuatan komponen dari RESB, pembuatan permintaan pembelian dari EBAN, informasi pengeluaran barang dari MSEG dan MKPF, konfirmasi dari AFRU, pembacaan pengukuran dari IMRG, serta catatan penyelesaian pengendalian dari [Tabel dokumen pengendalian Anda]. Ekstrak perubahan prioritas dari [Tabel dokumen perubahan perintah kerja Anda] dan [Tabel item dokumen perubahan Anda]. Sumber-sumber ini diperlukan karena AUFK, AFVC, dan JEST saja tidak dapat menyediakan seluruh 14 aktivitas yang diminta.
- Samakan zona waktu dan tipe data semua stempel waktu sumber. Konversikan kolom tanggal dan waktu SAP, atau kolom stempel waktu basis data, ke EventTimestamp. Pertahankan presisi stempel waktu yang tersedia di sistem. Terapkan rentang ekstraksi yang dikonfigurasi pada EventTimestamp, bukan hanya pada tanggal pembuatan perintah kerja.
- Buat satu baris peristiwa untuk setiap kejadian di sumber. Jangan mengandalkan ProcessMind untuk menyimpulkan peristiwa. Isi nilai Activity persis seperti yang ditentukan dalam kueri, lalu lengkapi MaintenanceWorkOrder, EventTimestamp, SourceSystem, LastDataUpdate, dan atribut rekomendasi yang tersedia. Simpan ID sumber jika berguna untuk menyelidiki duplikasi.
- Hapus duplikasi hanya untuk peristiwa sumber yang identik dengan menggunakan kunci sumber yang stabil. Jangan gabungkan perubahan status, konfirmasi, pergerakan material, pembacaan pengukuran, atau dokumen penyelesaian yang terpisah dan terjadi pada waktu berbeda. Jika beberapa catatan sumber mewakili satu peristiwa bisnis, dokumentasikan prioritas sumber yang dipilih dalam spesifikasi ekstraksi.
- Pastikan semua 14 nilai aktivitas muncul sebagai baris tersendiri, setiap baris memiliki ID kasus dan stempel waktu, serta stempel waktunya berada dalam rentang ekstraksi yang diminta. Bandingkan jumlahnya dengan laporan SAP atau jumlah catatan tabel sumber menggunakan filter yang sama.
- Ekspor hasil sebagai CSV UTF-8 atau format log peristiwa lain yang didukung ProcessMind. Gunakan satu baris per peristiwa, sertakan kolom wajib dengan nama yang dikonfigurasi secara persis, pertahankan stempel waktu ISO 8601 jika didukung, lalu unggah file atau konfigurasikan koneksi basis data di ProcessMind. Tetapkan MaintenanceWorkOrder sebagai ID kasus, Activity sebagai kolom aktivitas, dan EventTimestamp sebagai kolom stempel waktu.
Konfigurasi
- Tabel sumber dan pemetaan: AUFK menyediakan data header perintah kerja, AFVC menyediakan data operasi, dan JEST menyediakan data status sistem. QMEL, RESB, EBAN, MSEG, MKPF, AFRU, IMRG, sumber dokumen perubahan, dan sumber dokumen pengendalian juga diperlukan untuk menghasilkan seluruh 14 aktivitas. Pastikan nama kolom yang tepat di basis data SAP Anda sebelum menjalankan ekstraksi.
- Kolom keluaran wajib: MaintenanceWorkOrder, Activity, EventTimestamp, SourceSystem, dan LastDataUpdate harus tersedia di setiap baris peristiwa.
- Kolom keluaran yang disarankan: Isi MaintenanceOrderType, MaintenancePriority, EquipmentNumber, FunctionalLocation, MaintenancePlant, ResponsiblePlannerGroup, MainWorkCenter, NotificationNumber, TargetFinishDate, CreatedByUser, dan SystemStatus jika tersedia.
- Rentang tanggal: Mulai dengan tiga hingga enam bulan. Gunakan batas awal inklusif dan batas akhir eksklusif agar peristiwa tidak terduplikasi di antara proses ekstraksi bertahap. Untuk pengisian data historis, bagi ekstraksi per bulan atau periode lain yang didukung basis data.
- Filter: Konfigurasikan [Filter Kode Perusahaan], [Filter Jenis Perintah Kerja], [Filter Pabrik Pemeliharaan], [Filter Jenis Notifikasi], dan [Filter Jenis Dokumen] sesuai cakupan pelaporan. Jangan gunakan filter yang mengecualikan perintah kerja tanpa notifikasi, operasi, komponen, permintaan pembelian, konfirmasi, pengukuran, atau dokumen penyelesaian.
- Riwayat status: JEST biasanya mencatat penetapan status, tetapi perubahan status historis mungkin memerlukan [Tabel riwayat status Anda] atau dokumen perubahan. Konfigurasikan sumber yang memuat stempel waktu perubahan status dan riwayat transisinya.
- Riwayat prioritas: Perubahan prioritas memerlukan [Tabel dokumen perubahan perintah kerja Anda] dan [Tabel item dokumen perubahan Anda], beserta ID objek, nama kolom, nilai lama, nilai baru, dan stempel waktu perubahan yang relevan.
- Nilai sistem sumber: Ganti [ID sistem SAP Anda] dengan nama sistem sumber stabil yang digunakan organisasi Anda.
- Pembaruan data terakhir: Ganti [Stempel waktu ekstraksi Anda] dengan stempel waktu yang dibuat pada awal atau akhir proses ekstraksi. Gunakan nilai yang sama untuk semua baris dalam proses tersebut.
- Kinerja: Buat indeks atau partisi pada kolom penggabungan dan filter jika diizinkan, batasi rentang ekstraksi, pilih hanya kolom yang diperlukan, proses rentang besar secara bertahap, dan simpan hasil ekstraksi sumber sementara jika penggabungan langsung lintas skema berjalan lambat.
- Prasyarat: Konektivitas basis data, izin baca untuk semua tabel sumber yang dikonfigurasi, akses ke data Plant Maintenance, Materials Management, Controlling, dan pengukuran yang relevan, serta persetujuan untuk mengekstrak data operasional. Pastikan tidak ada batasan replikasi atau lisensi pada platform basis data.
Contoh kueri sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_ts,
CAST('[End date and time]' AS TIMESTAMP) AS end_ts,
CAST('[Your SAP system identifier]' AS VARCHAR(100)) AS source_system,
CAST('[Your extraction timestamp]' AS TIMESTAMP) AS last_data_update
),
order_base AS (
SELECT
a.[Order number field] AS MaintenanceWorkOrder,
a.[Order type field] AS MaintenanceOrderType,
a.[Priority field] AS MaintenancePriority,
a.[Equipment field] AS EquipmentNumber,
a.[Functional location field] AS FunctionalLocation,
a.[Maintenance plant field] AS MaintenancePlant,
a.[Planner group field] AS ResponsiblePlannerGroup,
a.[Main work center field] AS MainWorkCenter,
a.[Notification number field] AS NotificationNumber,
a.[Target finish date field] AS TargetFinishDate,
a.[Created by field] AS CreatedByUser,
a.[System status field] AS SystemStatus,
a.[Creation date field] AS OrderCreationDate,
a.[Creation time field] AS OrderCreationTime
FROM AUFK a
WHERE a.[Order number field] IS NOT NULL
AND a.[Company code field] = '[Your company code filter]'
),
base_events AS (
SELECT
o.MaintenanceWorkOrder,
'Maintenance Notification Created' AS Activity,
CAST(q.[Notification creation timestamp field] AS TIMESTAMP) AS EventTimestamp,
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN QMEL q ON q.[Notification number field] = o.NotificationNumber
CROSS JOIN params p
WHERE q.[Notification creation timestamp field] >= p.start_ts
AND q.[Notification creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Order Created',
CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o CROSS JOIN params p
WHERE CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP) >= p.start_ts
AND CAST(o.OrderCreationDate || ' ' || o.OrderCreationTime AS TIMESTAMP) < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Priority Changed',
CAST(c.[Change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, c.[New priority value field], o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN [Your order change document table] h ON h.[Order object identifier field] = o.MaintenanceWorkOrder
JOIN [Your change document item table] c ON c.[Change document number field] = h.[Change document number field]
CROSS JOIN params p
WHERE c.[Changed field name field] = '[Your priority field name]'
AND CAST(c.[Change timestamp field] AS TIMESTAMP) >= p.start_ts
AND CAST(c.[Change timestamp field] AS TIMESTAMP) < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Maintenance Order Released',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'REL'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'REL'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Material Component Added',
CAST(r.[Reservation creation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN RESB r ON r.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE r.[Reservation line creation timestamp field] >= p.start_ts
AND r.[Reservation line creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Purchase Requisition Created',
CAST(e.[Purchase requisition creation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN EBAN e ON e.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE e.[Purchase requisition creation timestamp field] >= p.start_ts
AND e.[Purchase requisition creation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Goods Issue Posted',
CAST(m.[Material document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN MSEG m ON m.[Order number field] = o.MaintenanceWorkOrder
JOIN MKPF k ON k.[Material document number field] = m.[Material document number field]
AND k.[Material document year field] = m.[Material document year field]
CROSS JOIN params p
WHERE m.[Movement type field] IN ('201', '261')
AND k.[Material document timestamp field] >= p.start_ts
AND k.[Material document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Work Order Scheduled',
CAST(v.[Dispatch status timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN AFVC v ON v.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE v.[Dispatch status field] = '[Your dispatch status value]'
AND v.[Dispatch status timestamp field] >= p.start_ts
AND v.[Dispatch status timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Order Operation Confirmed',
CAST(f.[Confirmation timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN AFRU f ON f.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE f.[Confirmation timestamp field] >= p.start_ts
AND f.[Confirmation timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Measurement Reading Recorded',
CAST(i.[Measurement document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN IMRG i ON i.[Equipment field] = o.EquipmentNumber
CROSS JOIN params p
WHERE i.[Measurement document timestamp field] >= p.start_ts
AND i.[Measurement document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Technical Completion Set',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'TECO'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'TECO'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Technical Completion Reversed',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, s.[Resulting system status field]
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Previous status code field] = 'TECO'
AND s.[Status code field] <> 'TECO'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Order Cost Settled',
CAST(c.[Controlling document timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, o.SystemStatus
FROM order_base o
JOIN [Your controlling document table] c ON c.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE c.[Controlling document timestamp field] >= p.start_ts
AND c.[Controlling document timestamp field] < p.end_ts
UNION ALL
SELECT o.MaintenanceWorkOrder, 'Business Completion Set',
CAST(s.[Status change timestamp field] AS TIMESTAMP),
o.MaintenanceOrderType, o.MaintenancePriority, o.EquipmentNumber,
o.FunctionalLocation, o.MaintenancePlant, o.ResponsiblePlannerGroup,
o.MainWorkCenter, o.NotificationNumber, o.TargetFinishDate,
o.CreatedByUser, 'CLSD'
FROM order_base o
JOIN [Your status history table] s ON s.[Order number field] = o.MaintenanceWorkOrder
CROSS JOIN params p
WHERE s.[Status code field] = 'CLSD'
AND s.[Status change timestamp field] >= p.start_ts
AND s.[Status change timestamp field] < p.end_ts
)
SELECT
e.MaintenanceWorkOrder,
e.Activity,
e.EventTimestamp,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaintenanceOrderType,
e.MaintenancePriority,
e.EquipmentNumber,
e.FunctionalLocation,
e.MaintenancePlant,
e.ResponsiblePlannerGroup,
e.MainWorkCenter,
e.NotificationNumber,
e.TargetFinishDate,
e.CreatedByUser,
e.SystemStatus
FROM base_events e
CROSS JOIN params p
WHERE e.MaintenanceWorkOrder IS NOT NULL
AND e.EventTimestamp IS NOT NULL
AND e.EventTimestamp >= p.start_ts
AND e.EventTimestamp < p.end_ts
ORDER BY e.MaintenanceWorkOrder, e.EventTimestamp, e.Activity; Siap untuk memulai?
Gunakan sumber daya ini untuk mulai memetakan alur kerja pemeliharaan dan menemukan peluang penghematan biaya. Kerangka kerja kami membantu Anda menyiapkan struktur data yang tepat agar operasional terlihat jelas.
Atasi hambatan pemeliharaan aset di SAP sekarang
Kurangi waktu siklus pemeliharaan Anda hingga 30 persen mulai sekarang
Tidak perlu kartu kredit... Penyiapan hanya 5 menit