Templat data manajemen transportasi Anda
Templat data manajemen transportasi Anda
- Atribut yang disarankan untuk dikumpulkan
- Aktivitas utama yang perlu dilacak
- Panduan ekstraksi data untuk SAP Transportation Management
Atribut manajemen transportasi
| Nama | Deskripsi | ||
|---|---|---|---|
| Nama aktivitas ActivityName | Nama peristiwa atau langkah bisnis tertentu yang terjadi dalam proses transportasi. | ||
| Deskripsi Nama Aktivitas menjelaskan satu tugas atau tahap dalam siklus pengiriman, seperti 'Shipment Planned', 'Goods Picked Up', atau 'Goods Delivered'. Aktivitas ini menjadi simpul dalam peta proses yang ditemukan. Dengan menganalisis urutan dan frekuensi aktivitas, Anda dapat menemukan alur proses standar, penyimpangan, hambatan, dan pengulangan pekerjaan. Atribut ini menjadi dasar penemuan proses dan pemeriksaan kesesuaian dalam manajemen transportasi. Mengapa ini penting Atribut ini menentukan langkah-langkah dalam proses transportasi sehingga alur pengiriman dari awal hingga akhir dapat divisualisasikan dan dianalisis. Sumber data Atribut ini biasanya diturunkan dari kode peristiwa atau perubahan status yang tercatat di pengelola peristiwa pelacakan pelaksanaan SAP TM. Sumbernya dapat berupa tabel yang mencatat perubahan status objek bisnis atau pesan peristiwa tertentu. Contoh Pengiriman direncanakanPengangkut ditetapkanBarang dijemputBarang terkirimBukti pengiriman diterima | |||
| Pengiriman ShipmentId | Pengenal unik untuk satu pengangkutan barang, yang menjadi kasus utama dalam analisis. | ||
| Deskripsi Shipment ID adalah kunci utama yang mengelompokkan semua aktivitas dan peristiwa transportasi terkait. ID ini mewakili satu proses transportasi dari awal hingga akhir, mulai dari permintaan awal hingga bukti pengiriman dan pembayaran. Dalam process mining, atribut ini penting untuk menyusun tampilan kasus agar analis dapat menelusuri seluruh perjalanan setiap pengiriman. Atribut ini memungkinkan analisis variasi proses, waktu siklus, dan hasil untuk tiap pengiriman, sehingga kinerja transportasi dapat dipahami secara menyeluruh. Mengapa ini penting Ini adalah pengenal kasus utama yang menghubungkan semua peristiwa dan titik data dengan pesanan transportasi tertentu. Pengenal ini penting untuk analisis proses dari awal hingga akhir. Sumber data Pengenal ini adalah nomor Freight Order atau Freight Booking di SAP TM. Nomor tersebut dapat ditemukan di tabel seperti /SCMTMS/D_TORROT dan /SCMTMS/D_TRQROT. Contoh 610000432161000056786100009876 | |||
| Waktu peristiwa EventTime | Stempel waktu yang menunjukkan kapan aktivitas atau peristiwa tertentu terjadi. | ||
| Deskripsi Waktu peristiwa memberikan tanggal dan waktu yang akurat untuk setiap aktivitas dalam proses transportasi. Data waktu ini menjadi dasar untuk menghitung waktu siklus, durasi, dan waktu tunggu di antara langkah-langkah proses. Dalam analisis, atribut ini digunakan untuk mengurutkan peristiwa dengan benar, menyusun log kronologis, dan melakukan analisis kinerja berbasis waktu. Atribut ini penting untuk menemukan keterlambatan, mengukur efisiensi proses, dan membandingkan kinerja dengan jadwal atau perjanjian tingkat layanan. Mengapa ini penting Stempel waktu penting untuk mengurutkan peristiwa secara kronologis dan menghitung semua metrik kinerja, seperti waktu siklus dan ketepatan waktu pengiriman. Sumber data Data diambil dari tabel pengelola peristiwa di SAP TM, seperti /SAPTRX/EH_EVMSG, yang menyimpan stempel waktu untuk peristiwa yang dilaporkan. Contoh 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| Moda transportasi ModeOfTransport | Cara barang diangkut, misalnya melalui jalan darat, kereta api, udara, atau laut. | ||
| Deskripsi Atribut ini menunjukkan moda transportasi yang digunakan. Tiap moda memiliki struktur biaya, waktu tempuh, dan kerumitan proses yang berbeda. Misalnya, pengiriman kargo udara internasional mencakup aktivitas seperti pemeriksaan bea cukai, sedangkan pengiriman truk dalam negeri tidak. Analisis proses berdasarkan moda transportasi membantu Anda menentukan perbaikan yang sesuai. Analisis ini juga penting untuk mengendalikan biaya, terutama untuk membandingkan penggunaan angkutan premium, seperti pengiriman udara ekspres, dengan moda standar yang lebih ekonomis. Pengelompokan ini membantu Anda memahami dan mengendalikan biaya transportasi. Mengapa ini penting Memungkinkan analisis biaya, waktu, dan variasi proses berdasarkan moda transportasi. Informasi ini penting untuk mengoptimalkan biaya dan mengetahui penggunaan angkutan premium. Sumber data Kolom penting pada Freight Order atau Freight Booking ini biasanya berlabel Transportation Mode atau MOT. Contoh 01 (Darat)02 (Kereta api)04 (Udara)05 (Laut) | |||
| Nama perusahaan pengangkut CarrierName | Nama perusahaan pengangkut atau penyedia layanan logistik yang ditugaskan untuk pengiriman. | ||
| Deskripsi Nama perusahaan pengangkut menunjukkan perusahaan yang bertanggung jawab memindahkan barang secara fisik. Informasi ini penting untuk menganalisis kinerja karena tingkat layanan, biaya, dan keandalan tiap perusahaan pengangkut bisa berbeda. Dalam process mining, atribut ini digunakan untuk mengelompokkan dan membandingkan kinerja berbagai perusahaan pengangkut. Anda dapat membuat kartu penilaian, memantau tingkat ketepatan waktu pengiriman tiap perusahaan, membandingkan biaya, serta mengetahui perusahaan mana yang paling sering terkait dengan keterlambatan atau sengketa. Informasi ini penting untuk mengelola perusahaan pengangkut dan pengadaan secara strategis. Mengapa ini penting Memudahkan perbandingan kinerja antarperusahaan pengangkut, yang penting untuk memilih perusahaan pengangkut, mengendalikan biaya, dan meningkatkan tingkat layanan. Sumber data Informasi ini tersimpan di dokumen Freight Order atau Freight Booking. Data tersebut terhubung melalui fungsi mitra bisnis untuk perusahaan pengangkut. Contoh DHL ExpressFedEx FreightMaersk LineUnion Pacific Railroad | |||
| Tanggal pengiriman yang diminta RequestedDeliveryDate | Tanggal dan waktu pengiriman yang diminta pelanggan atau tercantum dalam pesanan penjualan. | ||
| Deskripsi Tanggal pengiriman yang diminta menjadi batas waktu sasaran untuk aktivitas 'Barang Terkirim'. Tanggal ini menjadi acuan utama untuk mengukur ketepatan waktu pengiriman. Tanggal ini penting untuk menghitung KPI 'Tingkat ketepatan waktu pengiriman'. Dengan membandingkan waktu pengiriman aktual dengan tanggal yang diminta, organisasi dapat mengetahui apakah tingkat layanan yang disepakati telah terpenuhi. Analisis selisih waktu membantu menemukan penyebab keterlambatan yang berulang, seperti kinerja perusahaan pengangkut, keterlambatan perencanaan, atau penahanan oleh bea cukai. Mengapa ini penting Menjadi acuan untuk mengukur ketepatan waktu pengiriman, KPI penting bagi kepuasan pelanggan dan kinerja operasional. Sumber data Tanggal ini biasanya diteruskan dari pesanan penjualan atau pesanan pemindahan stok sebelumnya di SAP ERP. Tanggal dan waktunya tersimpan di kolom Freight Unit atau Freight Order. Contoh 2023-05-20T17:00:00Z2023-06-01T12:00:00Z2023-06-15T23:59:59Z | |||
| Tepat waktu IsOnTimeDelivery | Penanda boolean yang menunjukkan apakah barang dikirim pada atau sebelum tanggal pengiriman yang diminta. | ||
| Deskripsi Atribut hasil perhitungan ini membandingkan waktu aktivitas 'Barang Terkirim' dengan 'Tanggal pengiriman yang diminta'. Nilainya true jika barang tiba tepat waktu atau lebih awal, dan false jika terlambat. Atribut ini menyederhanakan analisis kinerja dengan menunjukkan hasil yang jelas untuk tiap pengiriman. Atribut ini menjadi dasar dashboard Kinerja Ketepatan Waktu Pengiriman dan KPI terkait. Analis dapat dengan mudah memfilter pengiriman yang terlambat dan menelusuri penyebab utama kinerja yang buruk. Mengapa ini penting Mengukur secara langsung apakah pengiriman memenuhi komitmen waktu, sehingga KPI ketepatan waktu pengiriman lebih mudah dihitung dan ditampilkan. Sumber data Atribut ini tidak tersimpan di SAP TM. Anda perlu menghitungnya saat transformasi data dengan membandingkan waktu peristiwa pengiriman aktual dengan Tanggal pengiriman yang diminta. Contoh truefalse | |||
| Total biaya angkutan TotalFreightCost | Total biaya pengiriman yang dihitung atau ditagihkan. | ||
| Deskripsi Total biaya angkutan menunjukkan dampak finansial suatu pengiriman. Nilainya dapat berupa biaya yang dihitung oleh sistem manajemen transportasi atau jumlah akhir pada tagihan perusahaan pengangkut setelah penyelesaian. Atribut ini menambahkan dimensi finansial ke analisis proses. Analis dapat menemukan variasi proses dengan biaya tertinggi, menghitung biaya akibat keterlambatan atau perubahan rute, serta membandingkan efisiensi biaya antarperusahaan pengangkut atau moda transportasi. Atribut ini menjadi dasar dashboard untuk memantau pengeluaran transportasi dan menganalisis biaya layanan. Mengapa ini penting Menambahkan dimensi finansial ke proses sehingga Anda dapat menganalisis pengeluaran transportasi, biaya per pengiriman, dan dampak finansial dari proses yang tidak efisien. Sumber data Data diambil dari Freight Settlement Document di SAP TM setelah biaya dihitung. Data ini dapat ditemukan di tabel seperti /SCMTMS/D_SFIRHD. Contoh 250.751200.005430.50 | |||
| Waktu selesai EndTime | Stempel waktu yang menunjukkan kapan aktivitas tertentu selesai. | ||
| Deskripsi StartTime menunjukkan awal peristiwa, sedangkan EndTime menandai waktu berakhirnya. Atribut ini berguna terutama untuk aktivitas yang memiliki durasi, seperti 'Customs Clearance' atau 'Goods Loading'. Selisih antara EndTime dan StartTime menunjukkan waktu pemrosesan aktivitas tersebut. Dalam analisis process mining, data waktu mulai dan selesai memungkinkan analisis durasi aktivitas yang lebih terperinci. Dengan begitu, waktu pemrosesan dapat dibedakan dari waktu tunggu. Anda dapat mengetahui letak inefisiensi dengan tepat, baik saat tugas dikerjakan maupun saat serah terima antartugas. Mengapa ini penting Memungkinkan penghitungan waktu pemrosesan aktivitas secara akurat dan membedakan waktu kerja aktif dari waktu tunggu di antara peristiwa. Sumber data Seperti StartTime, data ini diambil dari tabel pengelola peristiwa. Data ini dapat merujuk pada peristiwa 'completed' terpisah untuk aktivitas tertentu. Contoh 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| Alasan keterlambatan DelayReason | Kode atau keterangan yang menjelaskan penyebab keterlambatan pengiriman. | ||
| Deskripsi Atribut alasan keterlambatan mencatat penyebab penyimpangan dari jadwal, seperti 'Cuaca buruk', 'Ditahan bea cukai', atau 'Keterlambatan perusahaan pengangkut'. Informasi ini biasanya dilaporkan secara manual atau melalui pesan peristiwa dari perusahaan pengangkut. Atribut ini membantu menemukan penyebab utama masalah. Analis tidak hanya mengetahui bahwa pengiriman terlambat, tetapi juga alasannya. Dengan mengelompokkan dan menghitung alasan keterlambatan, organisasi dapat menemukan masalah yang berulang dan memusatkan upaya perbaikan pada hal yang paling berdampak, seperti meningkatkan komunikasi dengan perusahaan pengangkut atau mengoptimalkan rute untuk menghindari kemacetan. Mengapa ini penting Menjelaskan penyebab keterlambatan pengiriman sehingga Anda dapat menelusuri akar masalah, mengurangi pengecualian, dan meningkatkan ketepatan waktu. Sumber data Informasi ini dapat dicatat sebagai kode peristiwa dan alasan dalam kerangka kerja manajemen peristiwa SAP TM saat peristiwa 'Kedatangan/Keberangkatan Terlambat' dilaporkan. Contoh WEATHER_DELAYCUSTOMS_INSPECTIONPORT_CONGESTIONMECHANICAL_FAILURE | |||
| Alasan sengketa DisputeReason | Alasan yang dicantumkan saat tagihan angkutan disengketakan. | ||
| Deskripsi Sengketa dibuat saat tagihan perusahaan pengangkut tidak sesuai dengan biaya yang diperkirakan di SAP TM. Atribut ini mencatat penyebab selisih, misalnya 'Tarif tidak sesuai', 'Tagihan duplikat', atau 'Biaya tambahan tidak disetujui'. Analisis alasan sengketa penting untuk dashboard Kesalahan dan Sengketa Tagihan Angkutan. Analisis ini membantu menemukan penyebab utama ketidakakuratan tagihan, baik karena masalah data induk, kesalahan perusahaan pengangkut, maupun kendala operasional. Dengan informasi ini, organisasi dapat mengambil tindakan terarah untuk mengurangi sengketa, mempercepat siklus pembayaran, dan mengurangi beban administrasi. Mengapa ini penting Menunjukkan penyebab utama kesalahan tagihan angkutan sehingga Anda dapat mengurangi sengketa tagihan dan memperbaiki proses penyelesaian. Sumber data Informasi ini dicatat dalam kasus manajemen sengketa yang terkait dengan Freight Settlement Document. Contoh Tarif tidak sesuaiBerat tidak sesuaiBiaya demurrage tidak disetujuiTagihan duplikat | |||
| Dalam sengketa IsDisputed | Penanda boolean yang menunjukkan apakah tagihan angkutan untuk pengiriman menimbulkan sengketa. | ||
| Deskripsi Penanda hasil perhitungan ini menunjukkan pengiriman yang memiliki sengketa penyelesaian angkutan. Nilainya true jika sengketa dibuat, dan false jika tidak. Nilai ini dapat ditentukan dari adanya aktivitas 'Sengketa Angkutan Dibuat' atau kolom 'Alasan sengketa' yang terisi. Atribut ini menyederhanakan analisis proses penyelesaian angkutan. Anda dapat menghitung KPI Tingkat Selisih Tagihan Angkutan dengan mudah dan memfilter semua pengiriman yang disengketakan. Analis kemudian dapat memeriksa ciri umum pengiriman tersebut, seperti perusahaan pengangkut, rute, atau jenis biaya, untuk menemukan penyebab utama kesalahan tagihan. Mengapa ini penting Memudahkan Anda menemukan penyelesaian angkutan yang bermasalah, menghitung tingkat sengketa, dan menelusuri penyebab utama kesalahan tagihan. Sumber data Atribut ini tidak tersimpan di SAP TM. Anda perlu menghitungnya berdasarkan ada tidaknya kasus sengketa yang terhubung dengan Freight Settlement Document. Contoh truefalse | |||
| Nama pengguna UserName | ID atau nama pengguna yang menjalankan suatu aktivitas. | ||
| Deskripsi Atribut ini menunjukkan karyawan atau pengguna yang bertanggung jawab menjalankan aktivitas manual, seperti 'Shipment Planned' atau 'Invoice Verified'. Atribut ini menghubungkan langkah proses dengan orang atau tim yang mengerjakannya. Dengan menganalisis aktivitas berdasarkan pengguna, Anda dapat memahami pembagian beban kerja, menemukan kebutuhan pelatihan, dan mengenali kinerja terbaik. Informasi ini juga penting untuk kepatuhan dan audit karena mencatat dengan jelas siapa melakukan apa dan kapan. Analisis ini dapat menunjukkan perbedaan cara pengguna menjalankan tugas yang sama. Mengapa ini penting Mengaitkan langkah proses manual dengan pengguna tertentu sehingga beban kerja, kinerja individu, dan peluang pelatihan dapat dianalisis. Sumber data Biasanya terdapat di tabel log perubahan atau header dokumen transportasi, seperti kolom 'Dibuat Oleh' atau 'Diubah Oleh' (misalnya, ERNAM, AENAM). Contoh CB998030SMITHJPLANNER_EU | |||
| Negara asal OriginCountry | Negara tempat pengiriman dimulai. | ||
| Deskripsi Atribut ini menunjukkan negara asal perjalanan transportasi, berdasarkan alamat lokasi penjemputan pertama. Analisis proses berdasarkan negara asal membantu menemukan perbedaan kinerja, biaya, dan kerumitan antarwilayah. Analisis ini dapat menunjukkan negara dengan waktu pemeriksaan bea cukai lebih lama, biaya perusahaan pengangkut lebih tinggi, atau keterlambatan lebih sering. Pengelompokan geografis ini penting untuk mengelola rantai pasok global dan menyesuaikan strategi logistik dengan tiap wilayah. Mengapa ini penting Memungkinkan analisis kinerja pengiriman berdasarkan wilayah geografis untuk menemukan hambatan, pemicu biaya, atau variasi proses di tiap wilayah. Sumber data Informasi ini merupakan bagian dari alamat lokasi asal pada pemberhentian pertama di Freight Order. Contoh DEUSCNMX | |||
| Negara tujuan DestinationCountry | Negara tempat pengiriman diterima. | ||
| Deskripsi Atribut ini menunjukkan negara tujuan akhir pengiriman, berdasarkan alamat lokasi pengantaran terakhir. Seperti halnya negara asal, analisis berdasarkan negara tujuan penting untuk memahami tantangan logistik di tiap wilayah. Analisis ini dapat menunjukkan tujuan yang lebih sering mengalami keterlambatan atau memiliki biaya pengantaran tahap akhir yang lebih tinggi. Informasi ini berguna untuk mengoptimalkan jaringan, menetapkan perkiraan waktu pengiriman yang realistis, dan mengelola kepatuhan perdagangan internasional. Mengapa ini penting Memungkinkan analisis kinerja proses berdasarkan tujuan dan membantu menemukan masalah di wilayah pengiriman tertentu, otoritas bea cukai, atau perusahaan pengangkut untuk tahap akhir. Sumber data Informasi ini merupakan bagian dari alamat lokasi tujuan pada pemberhentian terakhir di Freight Order. Contoh FRCAGBJP | |||
| Pembaruan data terakhir LastDataUpdate | Stempel waktu ekstraksi atau penyegaran data terbaru untuk kumpulan data process mining. | ||
| Deskripsi Atribut ini menunjukkan seberapa baru data yang dianalisis. Atribut ini mencatat tanggal dan waktu terakhir data diambil dari sistem sumber, seperti SAP TM, ke alat process mining. Metadata ini penting untuk setiap dashboard atau analisis karena memberi konteks tentang kebaruan wawasan yang ditampilkan. Pengguna dapat mengetahui apakah informasi yang dilihat bersifat real-time atau berasal dari periode sebelumnya. Hal ini penting untuk mengambil keputusan yang tepat waktu dan berdasarkan informasi terkini. Mengapa ini penting Memberi konteks penting tentang kebaruan data agar pengguna mengetahui seberapa mutakhir analisis yang ditampilkan. Sumber data Informasi ini biasanya dibuat dan disimpan oleh alat ETL (Extract, Transform, Load) atau pipeline data selama proses pemasukan data. Contoh 2023-10-27T08:00:00Z2023-10-26T08:00:00Z | |||
| Sistem sumber SourceSystem | Sistem asal data peristiwa. | ||
| Deskripsi Atribut ini menunjukkan sistem sumber yang menghasilkan data, misalnya SAP TM, SAP ERP, atau portal pengangkut eksternal. Informasi ini memberi konteks tentang asal data dan membantu memahami titik integrasi data. Dalam lanskap sistem yang kompleks, mengetahui sistem sumber penting untuk memvalidasi data, mengatasi masalah integrasi, dan memahami kontribusi tiap sistem terhadap proses secara keseluruhan. Misalnya, informasi ini dapat membedakan peristiwa yang dilaporkan oleh sistem internal dengan peristiwa dari penyedia logistik pihak ketiga. Mengapa ini penting Menunjukkan asal data. Informasi ini penting untuk tata kelola data, pemecahan masalah, dan memahami orkestrasi proses di berbagai sistem. Sumber data Informasi ini sering tersimpan sebagai bagian dari log sistem atau dapat diketahui dari antarmuka maupun pengguna yang membuat entri data. Contoh SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| Status pengiriman ShipmentStatus | Status keseluruhan pengiriman saat data diekstrak. | ||
| Deskripsi Status pengiriman menunjukkan posisi pengiriman dalam siklusnya, misalnya 'Dalam perencanaan', 'Dalam pelaksanaan', 'Terkirim', atau 'Dibatalkan'. Status ini mencerminkan kondisi terakhir yang diketahui untuk kasus tersebut. Atribut ini berguna untuk memfilter dan menganalisis pengiriman berdasarkan hasilnya. Misalnya, analis dapat memilih hanya pengiriman yang selesai untuk mengukur waktu siklus dari awal hingga akhir, atau hanya pengiriman yang dibatalkan untuk memahami penyebabnya. Informasi ini memberi konteks penting saat menafsirkan alur proses. Mengapa ini penting Menunjukkan hasil keseluruhan tiap pengiriman. Anda dapat memfilter dan menganalisis pengiriman yang selesai, dibatalkan, atau masih dalam perjalanan. Sumber data Kolom ini berisi status keseluruhan pada header dokumen Freight Order atau Freight Booking di SAP TM. Contoh Dalam perencanaanSiap diangkutDalam pelaksanaanSelesai dilaksanakanDibatalkan | |||
| Tanggal penjemputan terjadwal ScheduledPickupDate | Tanggal dan waktu yang direncanakan bagi perusahaan pengangkut untuk mengambil barang dari lokasi pengiriman. | ||
| Deskripsi Tanggal penjemputan terjadwal adalah waktu yang disepakati untuk memulai pengangkutan fisik. Ini menjadi tonggak penting dalam tahap pelaksanaan pengiriman. Atribut ini penting untuk memantau ketepatan waktu tahap pertama perjalanan. Dengan membandingkan waktu penjemputan terjadwal dengan waktu aktual aktivitas 'Barang Dijemput', perusahaan dapat menghitung keterlambatan penjemputan. Hasilnya membantu menilai kinerja dan keandalan lokasi pengiriman maupun perusahaan pengangkut. Mengapa ini penting Menjadi acuan untuk mengukur ketepatan waktu penjemputan dan menemukan keterlambatan sejak awal perjalanan fisik pengiriman. Sumber data Tanggal dan waktu rencana ini tersimpan pada urutan pemberhentian Freight Order di SAP TM. Contoh 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
Aktivitas manajemen transportasi
| Aktivitas | Deskripsi | ||
|---|---|---|---|
| Barang dijemput | Aktivitas ini menandai dimulainya pengangkutan fisik barang. Aktivitas ini tercatat saat pengangkut melaporkan bahwa barang telah dimuat dan berangkat dari lokasi pengirim. | ||
| Mengapa ini penting Ini adalah tahap penting dalam pelaksanaan yang menandai dimulainya perjalanan barang. Tahap ini penting untuk melacak ketepatan waktu dan memberikan informasi pengiriman yang akurat. Sumber data Peristiwa ini biasanya dicatat di SAP Event Management, yang terintegrasi dengan SAP TM, sebagai peristiwa 'Keberangkatan' atau 'Akhir Pemuatan'. Peristiwa ini memperbarui status pelaksanaan Freight Order. Peristiwa tersebut juga dapat dicatat langsung di Freight Order. Pengumpulan data Gunakan stempel waktu peristiwa pelaksanaan 'Departure' yang dilaporkan untuk lokasi asal Freight Order. Jenis peristiwa explicit | |||
| Barang terkirim | Aktivitas ini menandai tibanya pengiriman di tujuan akhir dan selesainya pengangkutan fisik. Aktivitas ini tercatat saat pengangkut melaporkan bahwa barang telah dibongkar di lokasi penerima. | ||
| Mengapa ini penting Ini adalah tahap terpenting untuk mengukur ketepatan waktu pengiriman dan kepuasan pelanggan. Tahap ini juga biasanya memicu proses penagihan dan penyelesaian pembayaran. Sumber data Peristiwa ini dicatat di SAP TM sebagai peristiwa pelaksanaan 'Arrival at Destination' atau 'Unloading End', yang memperbarui status pelaksanaan Freight Order. Data sering diterima dari pengangkut. Pengumpulan data Gunakan stempel waktu peristiwa pelaksanaan 'Arrival at Destination' yang dilaporkan untuk pemberhentian terakhir Freight Order. Jenis peristiwa explicit | |||
| Bukti pengiriman diterima | Aktivitas ini terjadi saat dokumen Proof of Delivery (POD) yang telah ditandatangani diterima dari pengangkut dan dicatat di sistem. Dokumen ini mengonfirmasi bahwa penerima telah menerima barang. | ||
| Mengapa ini penting Penerimaan POD merupakan prasyarat penting untuk menagih pelanggan dan menyelesaikan pembayaran biaya pengiriman kepada pengangkut. Keterlambatan pada tahap ini langsung memengaruhi siklus kas. Sumber data Aktivitas ini biasanya diketahui dari perubahan status Freight Order, misalnya saat status POD berubah menjadi 'Received'. Waktu perubahan kolom status ini menjadi waktu aktivitas. Pengumpulan data Catat stempel waktu saat status Proof of Delivery pada Freight Order diperbarui menjadi 'Received'. Jenis peristiwa inferred | |||
| Pembayaran diproses | Aktivitas terakhir ini mengonfirmasi bahwa pengangkut telah dibayar atas jasa transportasi. Peristiwa ini biasanya terjadi di sistem ERP yang terhubung setelah tagihan terverifikasi diterima dari SAP TM. | ||
| Mengapa ini penting Tahap ini menandai akhir sebenarnya dari seluruh siklus transportasi. Tahap ini penting untuk mengukur durasi proses secara keseluruhan dan KPI ketepatan waktu pembayaran. Sumber data Informasi ini tersimpan di sistem ERP, misalnya S/4HANA Finance. Data dapat ditautkan kembali ke Freight Settlement Document melalui nomor tagihan. Pembaruan status dapat dikirim kembali ke SAP TM, atau data dapat diambil dari tabel ERP seperti BKPF dan BSEG. Pengumpulan data Ambil tanggal pelunasan pembayaran dari sistem ERP, lalu tautkan ke pengiriman melalui referensi tagihan. Jenis peristiwa explicit | |||
| Pengangkut ditetapkan | Aktivitas ini menunjukkan bahwa penyedia jasa transportasi atau pengangkut tertentu telah dipilih dan ditetapkan untuk pengiriman. Penetapan dapat dilakukan secara manual, melalui perencanaan otomatis, atau lewat proses tender. | ||
| Mengapa ini penting Pengangkut harus ditetapkan sebelum pengiriman dapat dikonfirmasi dan dilaksanakan. Dengan melacak tahap ini, Anda dapat menganalisis proses pemilihan pengangkut dan memastikan pemesanan dilakukan tepat waktu. Sumber data Aktivitas ini tercatat saat kolom pengangkut (pihak dengan peran 'Carrier') diisi pada Freight Order atau Freight Booking. Dalam proses tender, aktivitas ini terjadi saat Freight Request for Quotation diberikan kepada pemenang. Pengumpulan data Temukan stempel waktu saat fungsi mitra pengangkut pertama kali diisi atau dikonfirmasi pada Freight Order. Jenis peristiwa inferred | |||
| Pengiriman dibatalkan | Aktivitas ini menandai pembatalan pengiriman setelah diminta atau direncanakan. Aktivitas ini menjadi titik akhir bagi proses yang tidak berlanjut ke tahap pelaksanaan. | ||
| Mengapa ini penting Dengan melacak pembatalan, Anda dapat mengetahui penyebab proses tidak berlanjut, seperti perubahan permintaan pelanggan atau kesalahan perencanaan. Tingkat pembatalan yang tinggi dapat menandakan masalah mendasar dalam pengelolaan pesanan atau perencanaan. Sumber data Peristiwa ini diketahui dari perubahan status siklus Forwarding Order atau Freight Order menjadi 'Cancelled'. Waktu perubahan status tersebut menandai waktu peristiwa. Pengumpulan data Catat stempel waktu saat status siklus dokumen diubah menjadi 'Cancelled'. Jenis peristiwa inferred | |||
| Pengiriman direncanakan | Aktivitas ini menandakan bahwa kebutuhan transportasi telah disatukan menjadi rencana pengiriman yang konkret. Aktivitas ini tercatat saat Freight Order (untuk transportasi darat atau kereta api) atau Freight Booking (untuk laut atau udara) dibuat dan disimpan, lengkap dengan rute dan sumber daya yang direncanakan. | ||
| Mengapa ini penting Pencapaian tahap ini penting untuk memulai pelaksanaan logistik. Waktu dari permintaan hingga aktivitas ini menjadi KPI utama untuk mengukur efisiensi perencanaan. Sumber data Peristiwa ini terjadi saat dokumen Freight Order atau Freight Booking dibuat. Peristiwa ini juga dapat diketahui dari perubahan status dokumen, misalnya status perencanaan berubah menjadi 'Planned'. Tabel yang relevan biasanya mencakup /SCMTMS/D_TORROT untuk data header. Pengumpulan data Gunakan stempel waktu pembuatan dokumen Freight Order atau Freight Booking. Jenis peristiwa explicit | |||
| Penyelesaian biaya pengiriman dibuat | Aktivitas ini menandai pembuatan Freight Settlement Document (FSD), yang menghitung biaya transportasi yang harus dibayarkan kepada pengangkut. Dokumen ini menjadi dokumen utama untuk pencatatan akrual dan verifikasi tagihan. | ||
| Mengapa ini penting Tahap ini memulai proses penyelesaian keuangan dalam proses transportasi. Dengan menganalisis waktu dari pengiriman hingga pembuatan dokumen penyelesaian, Anda dapat menemukan hambatan dalam pemrosesan keuangan. Sumber data Peristiwa ini tercatat secara langsung saat Freight Settlement Document dibuat. Waktu pembuatannya tersedia di tabel header dokumen, /SCMTMS/D_SFIRHD. Pengumpulan data Gunakan tanggal dan waktu pembuatan Freight Settlement Document. Jenis peristiwa explicit | |||
| Permintaan transportasi diterima | Aktivitas ini menandai dimulainya proses transportasi, yaitu saat kebutuhan transportasi dibuat. Di SAP TM, aktivitas ini biasanya tercatat saat Forwarding Order (FWO) atau Order-based Transportation Requirement (OTR) dibuat. | ||
| Mengapa ini penting Ini adalah peristiwa awal utama dalam proses pengiriman dari awal hingga akhir. Waktu dari aktivitas ini hingga perencanaan selesai penting untuk mengukur efisiensi perencanaan. Sumber data Peristiwa ini tercatat saat Forwarding Order (jenis dokumen FWO) atau dokumen kebutuhan transportasi lainnya dibuat. Waktu pembuatan pada tabel header, seperti /SCMTMS/D_TORROT, digunakan sebagai waktu peristiwa. Pengumpulan data Catat tanggal dan waktu pembuatan dokumen Forwarding Order atau Transportation Requirement. Jenis peristiwa explicit | |||
| Deklarasi pabean diajukan | Untuk pengiriman internasional, aktivitas ini menandai pengajuan dokumen kepabeanan yang diwajibkan kepada pihak berwenang. Pengajuan ini diperlukan untuk memperoleh izin ekspor atau impor barang. | ||
| Mengapa ini penting Pengajuan deklarasi pabean tepat waktu sangat penting untuk mencegah keterlambatan di perbatasan. Aktivitas ini membantu memantau efisiensi proses pengurusan kepabeanan. Sumber data Peristiwa ini dapat dicatat sebagai peristiwa pelaksanaan khusus yang dilaporkan oleh broker kepabeanan, atau dari perubahan status di sistem manajemen kepabeanan terintegrasi seperti SAP GTS. Freight Order kemudian diperbarui. Pengumpulan data Catat stempel waktu peristiwa pelaksanaan 'Customs Declaration Filed' atau perubahan status terkait. Jenis peristiwa explicit | |||
| Lolos pemeriksaan pabean | Aktivitas ini menunjukkan bahwa pihak berwenang telah menyetujui pengiriman dan barang dapat melanjutkan perjalanan. Ini merupakan tahap penting dalam logistik internasional karena menghilangkan salah satu hambatan utama. | ||
| Mengapa ini penting Pemeriksaan pabean sering menjadi penyebab utama keterlambatan dalam rantai pasok global. Melacak durasi dan tingkat keberhasilan aktivitas ini penting untuk mempercepat waktu transit internasional. Sumber data Aktivitas ini dicatat sebagai peristiwa pelaksanaan 'Customs Clearance', yang biasanya dilaporkan oleh broker kepabeanan atau penyedia informasi pengiriman eksternal, lalu diperbarui dalam pelacakan pelaksanaan Freight Order. Pengumpulan data Gunakan stempel waktu peristiwa pelaksanaan 'Customs Clearance' yang dilaporkan dan terkait dengan Freight Order. Jenis peristiwa explicit | |||
| Pengiriman dikonfirmasi oleh pengangkut | Peristiwa ini menunjukkan bahwa pengangkut setuju melaksanakan transportasi sesuai rencana. Konfirmasi biasanya diterima melalui pesan EDI, pembaruan di portal pengangkut, atau entri manual yang memperbarui status Freight Order. | ||
| Mengapa ini penting Konfirmasi pengangkut menegaskan komitmen terhadap rencana pengiriman dan mengurangi ketidakpastian. Keterlambatan konfirmasi dapat membahayakan seluruh jadwal pengiriman. Sumber data Peristiwa ini diketahui dari perubahan kolom status konfirmasi pada Freight Order atau Freight Booking. Nilai status tertentu, seperti 'Confirmed', akan ditetapkan dalam pengelolaan status dokumen. Pengumpulan data Lacak perubahan pada kolom status konfirmasi di dokumen Freight Order. Jenis peristiwa inferred | |||
| Rute pengiriman diubah | Aktivitas ini menandakan perubahan rute atau jadwal pengiriman yang tidak direncanakan setelah pengiriman dikonfirmasi. Perubahan dapat terjadi akibat gangguan, permintaan pelanggan, atau masalah logistik. | ||
| Mengapa ini penting Perubahan rute sering menambah biaya dan menyebabkan keterlambatan. Dengan mengetahui frekuensi dan alasan perubahan, Anda dapat meningkatkan akurasi perencanaan dan kestabilan operasional. Sumber data Peristiwa ini diketahui dengan mendeteksi perubahan signifikan pada tahapan, lokasi, atau tanggal dalam Freight Order setelah pelaksanaan dimulai. Dokumen perubahan (tabel CDHDR dan CDPOS) dapat dianalisis untuk keperluan ini. Pengumpulan data Deteksi perubahan pada kolom rute utama di dokumen Freight Order setelah peristiwa 'Shipment Confirmed by Carrier'. Jenis peristiwa inferred | |||
| Sengketa biaya pengiriman dibuat | Peristiwa ini menunjukkan adanya selisih antara tagihan pengangkut dan biaya yang dihitung dalam Freight Settlement Document. Hal ini memulai alur kerja penyelesaian sengketa. | ||
| Mengapa ini penting Sengketa menunda pembayaran kepada pengangkut dan memerlukan upaya administratif untuk diselesaikan. Dengan melacak aktivitas ini, Anda dapat menemukan akar ketidakakuratan tagihan, seperti tarif yang salah atau biaya tambahan. Sumber data Peristiwa ini dapat diketahui dari perubahan status pada Freight Settlement Document, saat status 'Dispute' ditetapkan. Peristiwa ini juga dapat melibatkan pembuatan dokumen kasus sengketa terpisah. Pengumpulan data Catat stempel waktu saat status sengketa ditetapkan pada Freight Settlement Document. Jenis peristiwa inferred | |||
| Tagihan diverifikasi | Aktivitas ini menandakan bahwa tagihan pengangkut telah berhasil dicocokkan dengan Freight Settlement Document dan disetujui untuk dibayar. Ini adalah tahap terakhir sebelum proses pembayaran dimulai di sistem ERP. | ||
| Mengapa ini penting Aktivitas ini menyelesaikan proses audit dan verifikasi biaya pengiriman. Keterlambatan pada tahap ini dapat menunda pembayaran kepada pengangkut dan berpotensi merusak hubungan kerja. Sumber data Peristiwa ini diketahui dari perubahan status pada Freight Settlement Document, seperti 'Ready for Accrual' atau 'Transferred for Posting', yang menunjukkan bahwa dokumen telah dikirim ke sistem ERP untuk pembayaran. Pengumpulan data Lacak stempel waktu saat status siklus FSD berubah untuk menunjukkan bahwa dokumen siap dibayar atau telah dibukukan. Jenis peristiwa inferred | |||
Panduan ekstraksi data
Langkah
- Identifikasi dan aktifkan API CDS View: Masuk ke sistem SAP S/4HANA Anda. Gunakan transaksi
/IWFND/MAINT_SERVICEuntuk memastikan layanan OData yang diperlukan bagi CDS view inti sudah aktif. Periksa layanan yang terkait dengan I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder, dan I_FreightSettlementDocument. Jika belum aktif, minta administrator SAP mengaktifkannya dari sistem backend. - Siapkan koneksi API: Minta URL dasar layanan OData kepada administrator SAP. Siapkan aplikasi klien untuk terhubung ke API, misalnya skrip Python yang menggunakan pustaka requests, alat ETL komersial, atau Postman. Konfigurasikan autentikasi, biasanya Basic Authentication (nama pengguna dan kata sandi) atau OAuth 2.0 untuk koneksi yang lebih aman.
- Tentukan cakupan ekstraksi: Tentukan cakupan data yang akan diekstrak, misalnya rentang 6 bulan terakhir. Pilih unit organisasi yang relevan sebagai filter, seperti Company Code, atau jenis dokumen tertentu seperti Freight Order Type. Dengan begitu, data yang diambil sesuai dengan proses yang Anda analisis.
- Buat kueri dasar pengiriman: Mulai dengan membuat kueri pada CDS view I_TransportationOrder. View ini menjadi objek utama untuk pengiriman, yang juga dikenal sebagai Freight Order atau Freight Booking. Gunakan parameter OData
$selectuntuk memilih kolom yang diperlukan, termasuk atribut yang disarankan seperti CarrierName, ModeOfTransport, dan RequestedDeliveryDate. Terapkan$filteruntuk membatasi data berdasarkan tanggal dan parameter cakupan lainnya. - Kueri peristiwa pelaksanaan dan transportasi: Gunakan CDS view C_TranspOrdExecutionEvent untuk mengambil peristiwa logistik utama. Filter view ini berdasarkan nilai
EventCodetertentu yang mewakili aktivitas seperti 'Barang Dijemput' (DEPARTURE) dan 'Barang Tiba' (ARRIVAL_AT_DESTINATION). Gabungkan data ini dengan data pengiriman dasar menggunakan UUID TransportationOrder. - Kueri objek bisnis terkait: Untuk mengambil data proses secara lengkap, kueri CDS view lain yang terkait. Kueri I_ForwardingOrder untuk aktivitas 'Permintaan Transportasi Diterima', dan I_FreightSettlementDocument untuk aktivitas keuangan seperti 'Penyelesaian Biaya Angkut Dibuat', 'Sengketa Biaya Angkut Dibuat', dan 'Faktur Diverifikasi'.
- Ekstrak aktivitas berdasarkan status: Banyak aktivitas bukan peristiwa tersendiri, melainkan perubahan status pada dokumen utama. Untuk aktivitas seperti 'Pengangkut Ditugaskan', 'Pengiriman Dikonfirmasi oleh Pengangkut', dan 'Pengiriman Dibatalkan', kueri view I_TransportationOrder dan gunakan
LastChangeDateTimeyang terkait dengan kolom status sebagai waktu peristiwa. Anda perlu memetakan kode status ke aktivitas bisnis dengan cermat. - Gabungkan dan transformasikan data: Satukan data dari semua sumber ke dalam satu struktur log peristiwa. Untuk setiap aktivitas yang diekstrak, buat satu baris berisi kolom wajib: ShipmentId, ActivityName, dan EventTime. Pastikan setiap baris untuk pengiriman tersebut memuat semua atribut yang disarankan dari kueri pengiriman dasar. Secara konsep, langkah ini setara dengan operasi SQL
UNION ALL. - Tangani peristiwa kompleks dan eksternal: Data untuk aktivitas seperti 'Bea Cukai Diselesaikan' atau 'Pembayaran Diproses' mungkin tersimpan di kolom tertentu atau di sistem eksternal. Logika kueri yang diberikan menggunakan kolom standar sebagai pendekatan. Anda mungkin perlu menyesuaikan kueri agar menggabungkan CDS view khusus kepabeanan atau mencocokkan data dengan ekstraksi ERP terpisah berdasarkan nomor Freight Settlement Document.
- Siapkan format untuk ProcessMind: Simpan hasil gabungan sebagai file CSV. Pastikan nama kolom sesuai dengan persyaratan unggah, misalnya dengan memetakan kolom
ShipmentIdke kolomCaseIddi pengaturan alat. Pastikan format stempel waktu konsisten, sebaiknya UTC (YYYY-MM-DDTHH:MM:SSZ).
Konfigurasi
- Tampilan CDS inti: Ekstraksi terutama menggunakan I_TransportationOrder (untuk pesanan pengangkutan), C_TranspOrdExecutionEvent (untuk peristiwa pelaksanaan), I_ForwardingOrder (untuk permintaan transportasi), dan I_FreightSettlementDocument (untuk penyelesaian).
- Filter rentang tanggal: Filter tanggal penting untuk mengendalikan volume data. Gunakan
CreationDateTimepada I_TransportationOrder atauActualBusinessDateTimepada C_TranspOrdExecutionEvent. Untuk analisis awal, disarankan menggunakan rentang 3 hingga 6 bulan. - Filter jenis dokumen: Agar analisis lebih terarah, filter jenis dokumen tertentu menggunakan kolom
TransportationOrderType. Dengan begitu, Anda dapat memisahkan skenario logistik yang berbeda, seperti pengiriman keluar standar dan pemindahan stok. - Filter organisasi: Jika sesuai, filter berdasarkan
PurchasingOrganizationatau kolom tingkat organisasi lainnya untuk membatasi data pada unit bisnis atau wilayah tertentu. - Paginasi API: Untuk set data besar, gunakan parameter OData
$topdan$skipuntuk mengambil data dalam beberapa halaman yang lebih kecil. Cara ini mencegah waktu tunggu API habis dan mengurangi penggunaan memori di sisi klien. Ukuran halaman 1.000 hingga 5.000 baris biasanya efektif. - Prasyarat: Pengguna atau akun layanan yang menjalankan ekstraksi memerlukan otorisasi ke layanan OData terkait (objek otorisasi S_SERVICE) dan data bisnis dalam tampilan CDS. Layanan terkait harus diaktifkan di SAP Gateway (
/IWFND/MAINT_SERVICE).
Contoh kueri sql
WITH Shipments AS (
SELECT
TransportationOrder AS ShipmentId,
CarrierName,
TranspOrdExecutionBlockRsnCode,
TransportationMode AS ModeOfTransport,
ShippingType AS ShipmentType,
CreationDateTime AS ShipmentCreationTime,
LastChangeDateTime,
LifeCycleStatus,
ConfirmationStatus,
OverallExecutionStatus,
DeliveryOverallStatus,
PlannedDepDateTimeReqByCust AS RequestedDeliveryDate,
TotalChargesAmountInTransacCrcy AS TotalFreightCost
FROM I_TransportationOrder
WHERE
CreationDateTime >= '[START_DATE]' AND CreationDateTime <= '[END_DATE]'
-- AND TransportationOrderType IN ('[Your_Type_1]', '[Your_Type_2]')
)
SELECT
fwo.PurchasingDocument AS ShipmentId,
'Transportation Request Received' AS ActivityName,
fwo.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM I_ForwardingOrder AS fwo
LEFT JOIN Shipments s ON fwo.PurchasingDocument = s.ShipmentId
WHERE fwo.CreationDateTime >= '[START_DATE]' AND fwo.CreationDateTime <= '[END_DATE]'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Planned' AS ActivityName,
s.ShipmentCreationTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
UNION ALL
SELECT
s.ShipmentId,
'Carrier Assigned' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CarrierName IS NOT NULL
UNION ALL
SELECT
s.ShipmentId,
'Shipment Confirmed By Carrier' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.ConfirmationStatus = 'C' -- 'Confirmed'
UNION ALL
SELECT
s.ShipmentId,
'Goods Picked Up' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'DEPARTURE'
UNION ALL
SELECT
s.ShipmentId,
'Customs Declaration Filed' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsRelevance IS NOT NULL -- This is a proxy, system config dependent
UNION ALL
SELECT
s.ShipmentId,
'Customs Cleared' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsOverallStatus = '4' -- 'Customs Cleared'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Rerouted' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.TranspOrdExecutionBlockRsnCode = '[Your Rerouting Reason Code]'
UNION ALL
SELECT
s.ShipmentId,
'Goods Delivered' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'ARRIVAL_AT_DESTINATION'
UNION ALL
SELECT
s.ShipmentId,
'Proof Of Delivery Received' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.DeliveryOverallStatus = 'C' -- 'POD Received'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Settlement Created' AS ActivityName,
fsd.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Dispute Created' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.DisputeStatus = '1' -- 'In Dispute'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Invoice Verified' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.OverallLifeCycleStatus = '06' -- 'Posted for Accruals'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Cancelled' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.LifeCycleStatus = 'X' -- 'Cancelled'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Payment Processed' AS ActivityName,
fsd.LastChangeDateTime AS EventTime, -- Approximation, actual payment is in ERP
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.InvoiceProcessingStatus = 'C' -- 'Completely Invoiced' Langkah
- Pastikan akses baca langsung ke skema SAP TM HANA tersedia melalui klien SQL, tampilan basis data, atau layanan ekstraksi yang disetujui. Dapatkan string koneksi, kredensial, nama skema, dan otorisasi yang diperlukan untuk membaca tabel SAP TM terkait. Jangan membuat kueri langsung ke lingkungan produksi tanpa persetujuan keamanan dan perubahan yang berlaku.
- Pastikan nama tabel fisik dan kolom di sistem Anda. Kueri di bawah menggunakan /SCMTMS/D_TORROT dan /SCMTMS/D_TOSTOP sebagai tabel inti. Namun, data status, mitra, tanggal, biaya, kepabeanan, dokumen, dan pembayaran dapat tersimpan di tabel atau ekstensi tambahan, bergantung pada rilis dan penerapan SAP TM. Ganti hanya placeholder yang terdokumentasi setelah memvalidasinya dengan katalog sistem dan model data.
- Tentukan periode ekstraksi menggunakan [Start timestamp] dan [End timestamp]. Untuk analisis awal, rentang berjalan tiga hingga enam bulan umumnya sesuai. Gunakan rentang yang lebih panjang hanya setelah memastikan kinerja kueri dan masa retensi riwayat peristiwa.
- Tentukan kunci kasus pengiriman. Kueri menggunakan TOR_ID dari /SCMTMS/D_TORROT sebagai pengenal pengiriman. Jika penerapan Anda menggunakan pengenal stabil yang berbeda, ganti kunci kasus secara konsisten di setiap cabang aktivitas dan, jika tersedia, simpan pengenal dokumen asli sebagai atribut audit tambahan.
- Petakan setiap aktivitas bisnis ke kondisi sumber yang jelas. ProcessMind membaca log peristiwa apa adanya, sehingga kueri membuat satu baris untuk setiap aktivitas yang diekstrak. Kueri tidak menyimpulkan tonggak dari urutan dokumen, stempel waktu yang hilang, atau perubahan status.
- Validasi pemetaan status dan stempel waktu bersama perencana transportasi dan pemilik proses bisnis. Pastikan nilai yang mewakili pembuatan permintaan, perencanaan, penetapan pengangkut, konfirmasi pengangkut, penjemputan, pengajuan dokumen kepabeanan, penyelesaian kepabeanan, pengalihan rute, pengiriman, penerimaan POD, penyelesaian biaya angkut, sengketa, verifikasi faktur, pembatalan, dan pembayaran sudah benar.
- Jalankan kueri di klien SQL yang disetujui. Pastikan hasilnya berisi satu baris per peristiwa,
ShipmentIdtidak kosong,ActivityNametidak kosong, danEventTimevalid. Periksa apakah ada baris duplikat akibat join satu-ke-banyak, lalu sesuaikan pemetaan sumber atau logika agregasi jika perlu. - Tambahkan atribut yang disarankan jika kolom sumber terkait tersedia. Kueri menyertakan placeholder umum untuk kolom yang tidak dapat ditentukan dengan aman tanpa metadata khusus sistem. Ganti placeholder tersebut hanya dengan kolom atau tampilan yang sudah diverifikasi dan disetujui.
- Terapkan aturan kualitas data akhir. Hapus baris tanpa pengenal kasus atau stempel waktu peristiwa, seragamkan stempel waktu ke satu zona waktu, simpan stempel waktu sumber untuk keperluan audit, dan pastikan
EndTimetidak lebih awal daripadaEventTime. Jangan membuat peristiwa buatan untuk catatan sumber yang hilang. - Ekspor hasil sebagai CSV UTF-8 atau format tabular lain yang didukung ProcessMind. Gunakan nama kolom wajib secara persis: ShipmentId, ActivityName, dan EventTime. Sertakan EndTime dan atribut yang disarankan jika terisi. Unggah file atau hubungkan hasil kueri yang disetujui ke ProcessMind, lalu pastikan kolom pengenal kasus Shipment dan Nama Aktivitas dipetakan dengan benar.
Konfigurasi
- Tabel sumber inti: Gunakan /SCMTMS/D_TORROT untuk data utama pesanan transportasi atau Freight Order, dan /SCMTMS/D_TOSTOP untuk data pemberhentian dan pencapaian tahapan. Validasi semua objek sumber tambahan di sistem SAP TM tujuan sebelum penerapan.
- Pengenal kasus: Gunakan pengenal pengiriman atau Freight Order yang stabil. Kueri contoh menggunakan TOR_ID sebagai ShipmentId. Pastikan pengenal ini tetap sama dalam perencanaan, pelaksanaan, penyelesaian, dan catatan pembayaran ERP.
- Pemetaan aktivitas: Konfigurasikan kondisi sumber yang jelas untuk semua 15 aktivitas wajib. Setiap aktivitas harus menghasilkan satu baris fisik di log peristiwa. ProcessMind tidak menyimpulkan aktivitas dari baris lain.
- Rentang tanggal: Mulai dengan riwayat tiga hingga enam bulan. Terapkan kondisi EventTime sedini mungkin di setiap cabang sumber. Untuk pemuatan bertahap, gunakan penanda batas waktu yang terkontrol dan sertakan periode tumpang tindih singkat untuk menangkap pembaruan yang terlambat.
- Filter bisnis: Konfigurasikan filter company code, purchasing organization, sales organization, jenis dokumen, moda transportasi, pengangkut, pabrik, lokasi, dan status sesuai penerapan Anda. Gunakan placeholder seperti [Company code filter] jika kolom yang sesuai belum diverifikasi.
- Penanganan stempel waktu: Samakan zona waktu stempel waktu sumber. Jika sumber menyimpan tanggal dan waktu secara terpisah, gabungkan keduanya menggunakan konversi khusus sistem yang didukung rilis HANA Anda. Simpan stempel waktu sumber asli jika diperlukan untuk audit.
- Atribut yang disarankan: Isi CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, dan IsOnTimeDelivery dari kolom sumber yang sudah diverifikasi atau calculation view yang disetujui. Biarkan nilainya kosong jika sumber tidak menyediakan nilai yang dapat diandalkan.
- Kinerja: Batasi periode, pilih hanya kolom yang diperlukan, terapkan filter sebelum penggabungan, hindari pemindaian seluruh tabel tanpa batas, dan tinjau rencana eksekusi HANA. Untuk kumpulan data besar, gunakan kondisi yang memperhitungkan partisi, ekstraksi bertahap, tabel staging, atau calculation view yang disetujui.
- Pengendalian duplikat: Penggabungan satu-ke-banyak dapat menghasilkan beberapa baris untuk satu aktivitas. Gunakan kunci peristiwa, kunci dokumen sumber, atau aturan agregasi deterministik yang sudah diverifikasi. Jangan menghapus duplikat secara sembarang karena dapat menghilangkan peristiwa berulang yang sah.
- Prasyarat: Otorisasi database yang diperlukan, akses ke data SAP TM, akses ke data ERP atau penyelesaian yang terhubung, alat ekstraksi yang disetujui, serta konfirmasi bahwa modul SAP TM, integrasi, dan pengembangan khusus terkait sudah aktif.
- Pemetaan khusus sistem: Kode status, peran mitra, pencapaian tahapan kepabeanan, status penyelesaian, status faktur, dan status pembayaran berbeda-beda menurut rilis dan konfigurasi. Catat pemetaan dalam dokumen konfigurasi yang terkontrol dan uji kembali setelah peningkatan versi.
Contoh kueri sql
WITH
base_tor AS (
SELECT
r.TOR_ID AS ShipmentId,
r.TOR_ID AS SourceDocumentId,
r.CREATED_AT AS RequestEventTime,
r.CREATED_AT AS PlannedEventTime,
r.CREATED_AT AS CarrierAssignedEventTime,
r.CREATED_AT AS CarrierConfirmedEventTime,
r.CREATED_AT AS PickupEventTime,
r.CREATED_AT AS CustomsFiledEventTime,
r.CREATED_AT AS CustomsClearedEventTime,
r.CREATED_AT AS ReroutedEventTime,
r.CREATED_AT AS DeliveredEventTime,
r.CREATED_AT AS PodReceivedEventTime,
r.CREATED_AT AS SettlementCreatedEventTime,
r.CREATED_AT AS DisputeCreatedEventTime,
r.CREATED_AT AS InvoiceVerifiedEventTime,
r.CREATED_AT AS CancelledEventTime,
r.CREATED_AT AS PaymentProcessedEventTime,
r.CREATED_AT AS EndTime,
CAST(NULL AS NVARCHAR(255)) AS CarrierName,
CAST(NULL AS TIMESTAMP) AS RequestedDeliveryDate,
CAST(NULL AS NVARCHAR(50)) AS ModeOfTransport,
CAST(NULL AS DECIMAL(19, 2)) AS TotalFreightCost,
CAST(NULL AS NVARCHAR(5)) AS IsOnTimeDelivery
FROM "/SCMTMS/D_TORROT" r
WHERE r.CREATED_AT >= TO_TIMESTAMP('[Start timestamp]')
AND r.CREATED_AT < TO_TIMESTAMP('[End timestamp]')
AND ('[Company code filter]' = '[Company code filter]' OR r.TOR_ID IS NOT NULL)
),
stop_data AS (
SELECT
s.TOR_ID AS ShipmentId,
MIN(s.STOP_SEQ) AS FirstStopSequence,
MAX(s.STOP_SEQ) AS LastStopSequence
FROM "/SCMTMS/D_TOSTOP" s
GROUP BY s.TOR_ID
),
source_data AS (
SELECT
b.ShipmentId,
b.SourceDocumentId,
b.RequestEventTime,
b.PlannedEventTime,
b.CarrierAssignedEventTime,
b.CarrierConfirmedEventTime,
b.PickupEventTime,
b.CustomsFiledEventTime,
b.CustomsClearedEventTime,
b.ReroutedEventTime,
b.DeliveredEventTime,
b.PodReceivedEventTime,
b.SettlementCreatedEventTime,
b.DisputeCreatedEventTime,
b.InvoiceVerifiedEventTime,
b.CancelledEventTime,
b.PaymentProcessedEventTime,
b.EndTime,
b.CarrierName,
b.RequestedDeliveryDate,
b.ModeOfTransport,
b.TotalFreightCost,
CASE
WHEN b.DeliveredEventTime IS NOT NULL
AND b.RequestedDeliveryDate IS NOT NULL
AND b.DeliveredEventTime <= b.RequestedDeliveryDate THEN 'true'
WHEN b.DeliveredEventTime IS NOT NULL
AND b.RequestedDeliveryDate IS NOT NULL THEN 'false'
ELSE NULL
END AS IsOnTimeDelivery
FROM base_tor b
LEFT JOIN stop_data s
ON s.ShipmentId = b.ShipmentId
),
event_log AS (
SELECT ShipmentId, 'Transportation Request Received' AS ActivityName, RequestEventTime AS EventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE RequestEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Planned', PlannedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PlannedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Carrier Assigned', CarrierAssignedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CarrierAssignedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Confirmed By Carrier', CarrierConfirmedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CarrierConfirmedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Goods Picked Up', PickupEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PickupEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Customs Declaration Filed', CustomsFiledEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CustomsFiledEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Customs Cleared', CustomsClearedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CustomsClearedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Rerouted', ReroutedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE ReroutedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Goods Delivered', DeliveredEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE DeliveredEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Proof Of Delivery Received', PodReceivedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PodReceivedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Freight Settlement Created', SettlementCreatedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE SettlementCreatedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Freight Dispute Created', DisputeCreatedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE DisputeCreatedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Invoice Verified', InvoiceVerifiedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE InvoiceVerifiedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Cancelled', CancelledEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CancelledEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Payment Processed', PaymentProcessedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PaymentProcessedEventTime IS NOT NULL
)
SELECT
ShipmentId,
ActivityName,
EventTime,
EndTime,
CarrierName,
RequestedDeliveryDate,
ModeOfTransport,
TotalFreightCost,
IsOnTimeDelivery,
SourceDocumentId
FROM event_log
WHERE ShipmentId IS NOT NULL
AND EventTime IS NOT NULL
ORDER BY ShipmentId, EventTime, ActivityName; Langkah
- Tentukan kebutuhan data: Pastikan logika yang tepat untuk masing-masing dari 15 aktivitas wajib dan semua atribut. Petakan setiap aktivitas ke perubahan status, peristiwa pembuatan, atau hubungan dokumen tertentu di sistem SAP TM Anda. Misalnya, tentukan status pelaksanaan yang menandakan 'Barang Dijemput'.
- Buka lingkungan pengembangan ABAP: Masuk ke SAP GUI, lalu buka ABAP Editor menggunakan kode transaksi
SE38. Masukkan nama program baru, misalnyaZTM_PROCESS_EXTRACT, lalu klik 'Create'. Isi judul dan tetapkan jenis program sebagai 'Executable Program'. - Buat layar seleksi: Tentukan layar seleksi yang akan dilihat pengguna di dalam program. Sertakan parameter untuk memfilter data, seperti rentang tanggal pembuatan Freight Order (
SO_CREDT), serta select-options untuk jenis dokumen (SO_TYPE) atau pengangkut (SO_CARR). - Tentukan struktur keluaran: Buat struktur tabel internal yang sesuai dengan format log peristiwa yang diwajibkan. Struktur ini harus mencakup ShipmentId, ActivityName, EventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, dan IsOnTimeDelivery.
- Terapkan logika pemilihan data: Tulis logika ABAP utama untuk memilih data bagi masing-masing dari 15 aktivitas. Biasanya, langkah ini melibatkan kueri ke beberapa tabel SAP TM. Mulailah dengan memilih dokumen pengiriman utama, seperti Freight Order, dalam rentang tanggal yang ditentukan.
- Ekstrak peristiwa perencanaan dan pelaksanaan: Untuk setiap dokumen pengiriman yang dipilih, misalnya Freight Order, kueri tabel dan objek bisnis terkait untuk menemukan stempel waktu berbagai peristiwa. Gunakan tabel
/SCMTMS/D_TORROTuntuk pembuatan Freight Order ('Pengiriman Direncanakan'), penugasan pengangkut ('Pengangkut Ditugaskan'), dan perubahan status pelaksanaan yang menunjukkan 'Barang Dijemput' dan 'Barang Dikirim'. Pembuatan Forwarding Order sebelumnya (/SCMTMS/D_TRQROT) dapat menandai aktivitas 'Permintaan Transportasi Diterima'. - Ekstrak konfirmasi pengangkut dan pengalihan rute: Kueri tabel status atau dokumen perubahan (CDHDR/CDPOS) yang terkait dengan Freight Order untuk mengetahui kapan status
CONFIRMATIONditetapkan. Status ini menandai 'Pengiriman Dikonfirmasi oleh Pengangkut'. Untuk menangkap 'Rute Pengiriman Diubah', cari perubahan penting pada informasi rute. - Ekstrak peristiwa kepabeanan: Jika Anda menggunakan SAP Global Trade Services (GTS) atau modul serupa, peristiwa kepabeanan ('Deklarasi Kepabeanan Diajukan', 'Bea Cukai Diselesaikan') biasanya dicatat melalui dokumen tertaut. Logika perlu membaca alur dokumen (
/SCMTMS/D_TORDOC) Freight Order untuk menemukan dokumen terkait beserta waktu pembuatan atau perubahan statusnya. - Ekstrak peristiwa penyelesaian dan sengketa: Kueri tabel header Freight Settlement Document (
/SCMTMS/D_SFIRHD) beserta item dan status terkait untuk menangkap peristiwa 'Penyelesaian Biaya Angkut Dibuat', 'Sengketa Biaya Angkut Dibuat', dan 'Faktur Diverifikasi'. Hubungkan data ini kembali ke ShipmentId asal. - Gabungkan data: Buat satu catatan di tabel internal akhir untuk setiap peristiwa yang ditemukan. Isi ActivityName dengan nama aktivitas terkait, EventTime dengan stempel waktu peristiwa, dan ShipmentId dengan ID Freight Order atau Freight Booking. Isi atribut lainnya dari dokumen sumber.
- Format dan ekspor file: Setelah tabel internal akhir terisi, format datanya sebagai file datar. Gunakan perintah
OPEN DATASET,LOOP AT... TRANSFER..., danCLOSE DATASETuntuk menulis isi tabel internal ke file CSV atau TXT di server aplikasi SAP. File dapat diakses melalui transaksi AL11. - Jadwalkan dan ambil file: Jadwalkan program ABAP sebagai pekerjaan latar belakang menggunakan transaksi SM36 agar ekstraksi berjalan otomatis. Setelah itu, unduh file yang dihasilkan dari server aplikasi ke komputer lokal menggunakan transaksi
CG3Yuntuk diunggah ke ProcessMind.
Konfigurasi
- Rentang tanggal: Layar seleksi harus mencakup rentang tanggal wajib untuk tanggal pembuatan dokumen transportasi inti, misalnya Freight Order. Untuk analisis awal, disarankan rentang 3 hingga 6 bulan agar data cukup mewakili proses tanpa membuat waktu eksekusi terlalu lama.
- Filter jenis dokumen: Sediakan filter untuk jenis dokumen transportasi, misalnya Freight Order atau Freight Booking. Filter ini penting untuk memusatkan analisis pada proses tertentu, seperti angkutan darat atau laut.
- Filter pengangkut: Izinkan pengguna memfilter pengangkut tertentu. Dengan begitu, kinerja tiap mitra logistik dapat dianalisis.
- Filter organisasi: Sertakan filter untuk unit organisasi yang relevan, seperti Purchasing Organization atau Company Code, agar ekstraksi terbatas pada area bisnis tertentu.
- Optimasi kinerja: Untuk kumpulan data besar, pastikan kode ABAP menggunakan kolom database berindeks dalam klausa
WHERE, menghindari loop bersarang jika memungkinkan, dan hanya memilih kolom yang diperlukan dari database untuk mengurangi penggunaan memori. - Prasyarat: Pengguna yang menjalankan laporan memerlukan otorisasi untuk menjalankan program ABAP. Pengembang memerlukan otorisasi
S_DEVELOP. Program juga memerlukan otorisasi untuk mengakses sistem file di server aplikasi (objekS_DATASET) serta akses ke tabel database TM dan objek BOPF terkait.
Contoh kueri abap
REPORT ztm_process_extract.
*&---------------------------------------------------------------------*
*& Data Structures
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_s_event_log,
shipmentid TYPE /scmtms/tor_id,
activityname TYPE string,
eventtime TYPE timestamp,
endtime TYPE timestamp,
carriername TYPE string,
requesteddeliverydate TYPE timestamp,
modeoftransport TYPE /scmtms/mot,
totalfreightcost TYPE /scmtms/chargeable_weight,
isontimedelivery TYPE abap_bool,
END OF ty_s_event_log.
DATA: lt_event_log TYPE TABLE OF ty_s_event_log.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: so_credt FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: so_torid FOR /scmtms/d_torrot-tor_id.
SELECT-OPTIONS: so_carr FOR /scmtms/d_torrot-lsp_id.
*&---------------------------------------------------------------------*
*& Main Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
DATA: ls_event_log TYPE ty_s_event_log.
" Select base data: Freight Orders (Shipments)
SELECT tor_id, tor_cat, lsp_id, mot_code, cretd_tst, btd_tstmp_end
FROM /scmtms/d_torrot
INTO TABLE @DATA(lt_tor_root)
WHERE CAST( cretd_tst AS DATS ) IN @so_credt
AND tor_id IN @so_torid
AND lsp_id IN @so_carr.
IF lt_tor_root IS INITIAL.
MESSAGE 'No data found for the given selection.' TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
" Loop through each shipment to build the event log
LOOP AT lt_tor_root INTO DATA(ls_tor_root).
" 1. Transportation Request Received (Approximation from FWO creation)
SELECT SINGLE created_at_utc FROM /scmtms/d_trqrot
WHERE db_key IN ( SELECT trq_root_key FROM /scmtms/d_tordoc
WHERE parent_key = @ls_tor_root-db_key AND bo_node_cat = 'TRQ_ROOT' )
INTO @DATA(lv_trq_created_ts).
IF sy-subrc = 0.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Transportation Request Received'.
ls_event_log-eventtime = lv_trq_created_ts.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 2. Shipment Planned
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Planned'.
ls_event_log-eventtime = ls_tor_root-cretd_tst.
APPEND ls_event_log TO lt_event_log.
" 3. Carrier Assigned
IF ls_tor_root-lsp_id IS NOT INITIAL.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Carrier Assigned'.
ls_event_log-eventtime = ls_tor_root-cretd_tst. " Approximated with creation time
APPEND ls_event_log TO lt_event_log.
ENDIF.
" Get statuses from /SCMTMS/D_TORSTA
SELECT status, tstmp FROM /scmtms/d_torsta
INTO TABLE @DATA(lt_statuses)
WHERE parent_key = @ls_tor_root-db_key.
" 4. Shipment Confirmed By Carrier
READ TABLE lt_statuses WITH KEY status = 'CONFIRMED' INTO DATA(ls_conf_status).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Confirmed By Carrier'.
ls_event_log-eventtime = ls_conf_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 5. Goods Picked Up
READ TABLE lt_statuses WITH KEY status = 'LOADING_END' INTO DATA(ls_pickup_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Goods Picked Up'.
ls_event_log-eventtime = ls_pickup_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 6. Customs Declaration Filed (Placeholder logic)
" 7. Customs Cleared (Placeholder logic)
" 8. Shipment Rerouted (Placeholder logic, needs change documents)
" 9. Goods Delivered
READ TABLE lt_statuses WITH KEY status = 'UNLOADING_END' INTO DATA(ls_delivery_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Goods Delivered'.
ls_event_log-eventtime = ls_delivery_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 10. Proof Of Delivery Received
READ TABLE lt_statuses WITH KEY status = 'POD_RECEIVED' INTO DATA(ls_pod_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Proof Of Delivery Received'.
ls_event_log-eventtime = ls_pod_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 11. Freight Settlement Created
SELECT SINGLE created_at_utc FROM /scmtms/d_sfirhd
WHERE db_key IN ( SELECT sfir_root_key FROM /scmtms/d_tordoc
WHERE parent_key = @ls_tor_root-db_key AND bo_node_cat = 'SFIR_ROOT' )
INTO @DATA(lv_fsd_created_ts).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Freight Settlement Created'.
ls_event_log-eventtime = lv_fsd_created_ts.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 12. Freight Dispute Created (Needs logic based on dispute status in SFIR)
" 13. Invoice Verified (Needs logic based on invoice status in SFIR)
" 14. Shipment Cancelled
READ TABLE lt_statuses WITH KEY status = 'CANCELLED' INTO DATA(ls_cancel_status).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Cancelled'.
ls_event_log-eventtime = ls_cancel_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 15. Payment Processed (Data is typically in the ERP system, not TM)
ENDLOOP.
" Final step: Write lt_event_log to a file on the application server
DATA(lv_filepath) = '/usr/sap/trans/[YourInstance]/[YourFileName].csv'.
OPEN DATASET lv_filepath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
" Write header
DATA(lv_header) = 'ShipmentId,ActivityName,EventTime'.
TRANSFER lv_header TO lv_filepath.
" Write data
LOOP AT lt_event_log INTO ls_event_log.
DATA(lv_line) = |{ ls_event_log-shipmentid },{ ls_event_log-activityname },{ ls_event_log-eventtime }|.
TRANSFER lv_line TO lv_filepath.
ENDLOOP.
CLOSE DATASET lv_filepath.
ELSE.
MESSAGE 'Error opening file on application server.' TYPE 'E'.
ENDIF.
ENDFOR. Siap memulai?
Gunakan templat ini untuk mulai memperbaiki proses transportasi dan mengirim barang lebih cepat dengan biaya lebih rendah. Temukan insight proses Anda hari ini.
Atasi hambatan dalam Transportation Management sekarang
Temukan inefisiensi, optimalkan rute, dan pangkas waktu siklus hingga 30%.
Tidak perlu kartu kredit. Penyiapan hanya perlu beberapa menit.