Stok Yönetimi Veri Şablonunuz
Stok Yönetimi Veri Şablonunuz
- Toplanması önerilen öznitelikler
- Süreç keşfi için izlenecek temel etkinlikler
- SAP S/4HANA'ya göre uyarlanmış veri çıkarma rehberi
Stok Yönetimi Öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Olay zamanı EventTime | Stok faaliyetinin sisteme kaydedildiği kesin tarih ve saattir. | ||
| Açıklama Olay zamanı, bir faaliyetin tam olarak ne zaman gerçekleştiğini kaydeden zaman damgasıdır. Bu veri noktası, her stok partisi için süreç akışını yeniden oluşturmak üzere olayları kronolojik sıraya koymak açısından gereklidir. Zaman temelli tüm Process Mining analizlerinin temelini oluşturur. Çevrim süreleri, teslim süreleri ve süreler gibi temel performans göstergelerini hesaplamak için Olay zamanı verisinin doğru olması gerekir. Farklı dönemlerde süreç performansını analiz etmenize, darboğazların ne zaman oluştuğunu belirlemenize ve bir partinin serbest bırakılmadan önce kalite incelemesinde geçirdiği süre gibi süreç gecikmelerini anlamanıza yardımcı olur. Neden önemli? Bu zaman damgası olayları kronolojik sıraya koyar ve tüm süre ile performans hesaplamalarının temelini oluşturur. Nereden alınır? Genellikle malzeme belgesi başlık tablosu MKPF'deki kayıt tarihi (MKPF-BUDAT) ile giriş saatinin (MKPF-CPUTM) birleşimidir. Örnekler 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| Stok partisi/lotu InventoryBatchLot | Bir ürünün belirli miktarını tanımlayan ve yaşam döngüsünü izlemek için vaka kimliği olarak kullanılan benzersiz tanımlayıcıdır. | ||
| Açıklama Stok partisi veya lot numarası, belirli ve ayrı bir ürün miktarıyla ilgili tüm faaliyetleri gruplayan temel vaka kimliğidir. Bu sayede bir stok miktarının depoya ilk kabulünden çeşitli dahili hareketler ve durum değişiklikleri üzerinden satış, üretim veya elden çıkarma amacıyla çıkışına kadar olan yolculuğunu kronolojik olarak eksiksiz biçimde görüntüleyebilirsiniz. Süreç analizinde bu öznitelik temel bir role sahiptir. Her parti için uçtan uca akışı izlemenize, çevrim sürelerini doğru ölçmenize, süreç farklılıklarını belirlemenize ve farklı partilerin nasıl işlendiğini anlamanıza imkan verir. Parti düzeyinde analiz, ilaç, yiyecek ve içecek ile kimya gibi izlenebilirlik, kalite kontrolü ve son kullanma tarihi yönetiminin önemli olduğu sektörlerde özellikle gereklidir. Neden önemli? İlgili tüm stok olaylarını tek bir vakaya bağlayan temel kimliktir ve uçtan uca süreç analizini mümkün kılar. Nereden alınır? Genellikle CHARG alanında, MCHA (Parti Ana Kaydı) veya MCH1 (Partiler) gibi SAP tablolarında bulunan Parti Numarasıdır. Örnekler B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Faaliyet ActivityName | Stok yönetimi sürecinin belirli bir anında gerçekleşen iş olayının adıdır. | ||
| Açıklama Faaliyet özniteliği, bir partinin stok yaşam döngüsündeki tek bir adımı veya olayı tanımlar. Bu olaylar mal kabulü, stok taşıma, kalite incelemesi yapma veya malzeme çıkışı gibi temel iş faaliyetlerini temsil eder. Her faaliyet, belirli bir zamanda stok partisinde gerçekleşen bir işlemin kaydıdır. Faaliyetleri analiz etmek, Process Mining'in temelini oluşturur. Süreç akışını görselleştirmenize, sık ve nadir yolları belirlemenize, faaliyetlerin geciktiği darboğazları tespit etmenize ve yeniden işleme döngülerini analiz etmenize imkan verir. 'Stok hurdaya ayrıldı' veya 'Kalite incelemesi' gibi faaliyetlerin sırasını ve sıklığını anlamak, işletmelerin süreç iyileştirme ve operasyonel verimlilik alanlarını belirlemesine yardımcı olur. Neden önemli? Süreçteki adımları tanımlar ve stok yaşam döngüsünü görselleştirip analiz etmenizi sağlar. Nereden alınır? Türetilmiş bir özniteliktir. Genellikle SAP Hareket Türleri (MSEG-BWART) veya İşlem Kodları (MKPF-TCODE2), kullanıcıların kolayca anlayabileceği adlara eşlenir. Örnekler Mal kabulü kaydedildiYerleştirme transferi kaydedildiTeslimat için mal çıkışı kaydedildiStok hurdaya ayrıldı | |||
| Depolama konumu StorageLocation | Bir Tesis içinde stokun fiziksel olarak depolandığı belirli konumdur. | ||
| Açıklama Depolama Konumu, bir Tesis içindeki malzeme stoklarını birbirinden ayırmayı sağlayan organizasyon birimidir. Örneğin bir tesiste ham maddeler, mamul ürünler ve kalite incelemesindeki stoklar için ayrı depolama konumları bulunabilir. Bu öznitelik, Tesise göre daha ayrıntılı bir konum görünümü sunar. Kabul alanından ana depoya yapılan transferin teslim süresi gibi farklı stok alanları arasındaki hareketleri anlamak için kullanılır. Depolama konumuna göre kullanım oranını ve hareket sıklığını analiz etmek, depo düzenini ve dahili lojistiği iyileştirmeye yardımcı olur. Neden önemli? Bir tesis içindeki stok konumunu ayrıntılı biçimde gösterir ve dahili hareketleri ile depolama verimliliğini analiz etmeye yardımcı olur. Nereden alınır? Malzeme belgesi kalem tablosu MSEG'de LGORT (Depolama Konumu) alanında bulunur. Örnekler 0001RM01FG01QI01 | |||
| Hareket türü MovementType | SAP'de bir mal hareketinin nasıl kaydedileceğini belirleyen üç haneli anahtardır. | ||
| Açıklama Hareket Türü, SAP Stok Yönetimi'nde bir malzeme hareketinin özelliklerini belirleyen önemli bir kontrol anahtarıdır. Hangi hesapların güncelleneceğini, işlem ekranı düzeninin nasıl görüneceğini ve hangi miktar veya değer alanlarının güncelleneceğini belirtir. Örneğin '101' mal kabulü, '311' transfer kaydı ve '551' hurdaya ayırma için kullanılır. Bu öznitelik, kullanıcıların kolayca anlayabileceği 'Faaliyet' adını türetmek için çoğu zaman kaynak olarak kullanılır. Süreçleri Hareket Türüne göre analiz etmek, stok akışının ayrıntılı ve teknik bir görünümünü sağlar. Süreç haritasının doğruluğunu kontrol etmek ve darboğazlara veya sapmalara neden olabilecek belirli işlem türlerini belirlemek için gereklidir. Neden önemli? Her stok olayının kesin ve teknik bir sınıflandırmasını sağlar. Faaliyetleri türetmek ve ayrıntılı analiz yapmak için gereklidir. Nereden alınır? Malzeme belgesi kalem tablosu MSEG'de BWART (Hareket Türü) alanında bulunur. Örnekler 101311261551601 | |||
| Kullanıcı adı UserName | SAP'de işlemi gerçekleştiren kişinin kullanıcı kimliğidir. | ||
| Açıklama Bu öznitelik, belgeyi kaydeden veya etkinliği gerçekleştiren çalışanın SAP kullanıcı kimliğini içerir. Stok yönetimi sürecindeki belirli işlemlerden kimin sorumlu olduğunu göstererek izlenebilirlik sağlar. Kullanıcı bazında analiz, performansı, uyumluluğu ve eğitim ihtiyaçlarını anlamak için gereklidir. Örneğin, "Manuel Stok Düzeltmelerinin Etkenleri" Dashboardu, en fazla düzeltmeyi kimin yaptığını görmek için bu özniteliği kullanır. Ek eğitim alması gereken kullanıcıları belirlemeye, yetkisiz işlemleri ortaya çıkarmaya veya yüksek performans gösteren çalışanları tanımaya yardımcı olabilir. Neden önemli? Sorumluluk sağlar ve kullanıcıya özgü davranışları, eğitim ihtiyaçlarını veya uyumluluk sorunlarını belirlemeye yardımcı olur. Nereden alınır? Malzeme belgesi başlık tablosu MKPF'de USNAM (Kullanıcı adı) alanında bulunur. Örnekler JSMITHMBROWNWAREHOUSE_OPS | |||
| Malzeme numarası MaterialNumber | Yönetilen ürün veya malzemeyi tanımlayan benzersiz kimliktir. | ||
| Açıklama Genellikle SKU (Stok Tutma Birimi) olarak adlandırılan Malzeme Numarası, belirli bir ürüne atanan benzersiz koddur. Stok yönetiminde malların miktarını, değerini ve hareketlerini izlemek için kullanılan temel bir ana veri öğesidir. Process Mining'de Malzeme Numarasına göre analiz yapmak, stok süreçlerini ürün merkezli bir bakışla incelemenizi sağlar. Hangi ürünlerin en uzun kalite inceleme sürelerine sahip olduğu, hangilerinin en sık hurdaya ayrıldığı veya hangilerinde dahili transfer hacminin en yüksek olduğu gibi soruları yanıtlamaya yardımcı olur. Bu ayrıştırma, ürüne özgü sorunları belirlemek ve farklı mal türleri için stok stratejilerini iyileştirmek açısından gereklidir. Neden önemli? Analizi ürüne göre ayrıştırmanızı ve belirli ürünlere özgü örüntüleri ve sorunları ortaya çıkarmanızı sağlar. Nereden alınır? Malzeme belgesi kalem tablosu MSEG'de MATNR alanında bulunur. Ana veriler MARA tablosundadır. Örnekler RM-1001FG-2050-B100-400-A | |||
| Miktar Quantity | Stok hareketine dahil olan malzemenin miktarıdır. | ||
| Açıklama Bu öznitelik, belirli bir etkinlikte taşınan, alınan, çıkarılan veya düzeltilen malzeme miktarını gösterir. Malzemenin temel ölçü birimiyle kaydedilir. Miktarın analiz edilmesi, stok süreçlerinin ölçeğini ve etkisini anlamak için önemlidir. "SKU Bazında Mal Çıkışı Hacmi" gibi, işlenen ürün hacmini görselleştiren Dashboardların oluşturulmasını sağlar. Ayrıca "Hurdaya Ayrılan/Tasfiye Edilen Stok Oranı" gibi temel performans göstergelerini hesaplamak için kullanılır ve süreç analizine yalnızca olayları saymanın ötesinde nicel bir boyut kazandırır. Neden önemli? Her faaliyetteki malzeme hacmini nicel olarak gösterir ve işlem hacmi, hurda miktarı ile düzeltmelerin etkisini analiz etmenizi sağlar. Nereden alınır? Malzeme belgesi kalem tablosu MSEG'de MENGE (Miktar) alanında bulunur. Örnekler 10012.55000-10 | |||
| Stok hareketi neden kodu MovementReasonCode | Bir stok hareketinin nedenini belirten koddur. | ||
| Açıklama Hareket Nedeni kodu, mal hareketinin neden gerçekleştirildiği hakkında ek bağlam sağlar. Stok düzeltmeleri, iadeler veya hurdaya ayırma gibi planlanmamış hareketleri açıklamak için sıkça kullanılır. Bu öznitelik, kök neden analizi için çok değerlidir. "Manuel Stok Düzeltmelerinin Etkenleri" Dashboardunda neden koduna göre yapılan analiz, hasar, hırsızlık veya veri giriş hataları gibi farkların neden oluştuğunu ortaya çıkarabilir. Bu içgörü, işletmelerin yalnızca belirtileri düzeltmek yerine temel sorunları ele almasına yardımcı olur. Neden önemli? Planlanmamış stok hareketlerinin ardındaki nedeni açıklar ve hedefli kök neden analizi yapmanızı sağlar. Nereden alınır? Malzeme belgesi kalem tablosu MSEG'de GRUND (Hareket Nedeni) alanında bulunur. Örnekler 00010005102 | |||
| Tesis Plant | Fabrika veya dağıtım merkezi gibi stokun bulunduğu tesisi temsil eden organizasyon birimidir. | ||
| Açıklama Tesis, SAP'de üretim tesisi, merkezi depolama konumu veya şirket merkezi gibi birimleri temsil edebilen temel bir organizasyon birimidir. Tüm stoklar fiziksel veya mantıksal olarak bir Tesis içinde bulunur. Tesise göre analiz yapmak, farklı fiziksel konumlardaki süreç performansını karşılaştırmak için temel bir yaklaşımdır. 'Hangi tesiste put-away çevrim süresi en uzun?' veya 'Tesis A'daki stok farkı oranı Tesis B'dekinden yüksek mi?' gibi soruları yanıtlamaya yardımcı olur. Bu coğrafi veya organizasyonel ayrıştırma, konuma özgü sorunları belirlemek ve en iyi uygulamaları kuruluş genelinde paylaşmak için önemlidir. Neden önemli? Farklı şirket konumlarındaki stok süreçlerini ve performansını karşılaştırmanızı sağlar. Nereden alınır? Malzeme belgesi kalem tablosu MSEG'de WERKS (Tesis) alanında bulunur. Örnekler 10001710DE01US01 | |||
| Depolama gözü StorageBin | Malzemelerin fiziksel olarak bulunduğu depodaki en ayrıntılı depolama birimidir. | ||
| Açıklama Depolama Bölmesi, depodaki raf konumu gibi belirli bir koordinatı ifade eder. Bu ayrıntı düzeyi genellikle SAP Warehouse Management (WM) veya Extended Warehouse Management (EWM) uygulandığında kullanılır. Bu öznitelik, "Depo Depolama Alanı Kullanımı" Dashboardu için önemlidir. Depo alanının ne kadar verimli kullanıldığını analiz etmeyi, olası yoğunluk noktalarını belirlemeyi ve verimsiz yerleştirme veya toplama rotalarını ortaya çıkarmayı sağlar. Depolama bölmeleri arasındaki hareketlerin analiz edilmesi, depo yerleşiminin optimize edilmesine ve operatörlerin hareket süresinin azaltılmasına yardımcı olur. Neden önemli? En ayrıntılı konum verisini sağlar ve depo alanı kullanımını ve operasyonel verimliliği analiz etmenize imkan verir. Nereden alınır? WM kullanılıyorsa LTAK/LTAP gibi transfer emri tablolarında bulunabilir. Stok belgeleri için MSEG-LGPBE alanında yer alabilir. SAP S/4HANA belgelerine başvurun. Örnekler A-01-01-AB-05-10-CRCV-AREA-01 | |||
| Kaynak sistem SourceSystem | Verilerin çıkarıldığı kaynak sistemi tanımlar. | ||
| Açıklama Bu öznitelik, stok yönetimi verilerinin geldiği kayıt sistemini belirtir. Bu bağlamda söz konusu sistem, belirli SAP S/4HANA örneğidir. Bu bilgi, verilerin birden fazla ERP, depo yönetim sistemi veya eski platformdan alınabildiği ortamlarda önemlidir. Tek sistemli bir analizde sabit görünse de farklı kaynaklardan gelen verileri birleştirerek bütünsel bir süreç görünümü oluştururken büyük önem taşır. Veri yönetişimine ve veri çıkarma sorunlarını gidermeye yardımcı olur, veri soyunun açıkça izlenmesini sağlar. Neden önemli? Verilerin kaynağı hakkında bağlam sağlar; bu bilgi, veri yönetişimi ve çok sistemli analiz için gereklidir. Nereden alınır? Genellikle veri dönüştürme sürecinde belirli SAP S/4HANA örneğini tanımlamak üzere sabit bir değer olarak atanır. Örnekler S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
| Malzeme belgesi numarası MaterialDocumentNumber | Mal hareketini kaydeden malzeme belgesini tanımlayan benzersiz numaradır. | ||
| Açıklama SAP'de bir mal hareketi kaydedildiğinde sistem, hareketin kanıtı olarak bir malzeme belgesi oluşturur. Bu öznitelik, söz konusu belgenin benzersiz tanımlayıcısıdır. Tek bir malzeme belgesi birden fazla kalem veya faaliyet içerebilir. Process Mining'de Malzeme Belgesi Numarası, birlikte kaydedilen ilgili olayları gruplamak için kullanılabilen önemli bir işlem kimliğidir. Ayrıca denetim yapmak ve süreç analizinden belirli işlemleri incelemek üzere kaynak sisteme geçiş yapmak için gereklidir. Neden önemli? Denetim için işlem anahtarı görevi görür ve birlikte gerçekleştirilen faaliyetleri gruplamanızı sağlar. Nereden alınır? MKPF (başlık) ve MSEG (kalem) tablolarında, MBLNR (Malzeme Belgesi Numarası) alanında bulunur. Örnekler 490000123450000056784900002345 | |||
| Ölçü birimi UnitOfMeasure | Malzeme miktarının ölçüldüğü birimdir (ör. adet, kilogram). | ||
| Açıklama Ölçü Birimi, 'Miktar' özniteliğinin hangi birimle ifade edildiğini belirtir. Yaygın örnekler arasında adet (PC), kilogram (KG), litre (L) ve kutu (BOX) bulunur. Bu bilgi, miktar alanı için gerekli bağlamı sağlar. Basit bir tanımlayıcı olarak kullanılsa da farklı birimlerin ortak bir standarda dönüştürülmesi gereken analizlerde ve veri kalitesini korumada önemlidir. Örneğin hurdaya ayrılan stokun toplam değerini doğru hesaplamak için farklı birimlerdeki miktarların anlaşılması ve gerektiğinde dönüştürülmesi gerekir. Neden önemli? 'Miktar' özniteliği için gerekli bağlamı sağlar ve malzeme hacimlerinin doğru yorumlanmasına yardımcı olur. Nereden alınır? Malzeme belgesi kalem tablosu MSEG'de MEINS (Temel Ölçü Birimi) alanında bulunur. Örnekler PCKGEAM | |||
| Sipariş karşılama çevrim süresi OrderFulfillmentCycleTime | Toplamanın başlamasından malların teslimat için çıkışının yapılmasına kadar geçen uçtan uca süredir. | ||
| Açıklama Bu, 'Toplama başlatıldı' faaliyeti ile 'Teslimat için mal çıkışı kaydedildi' faaliyeti arasındaki toplam süreyi ölçen hesaplanmış bir metriktir. Süreç başladıktan sonra deponun müşteri siparişini hazırlayıp sevk etmesi için gereken toplam süreyi gösterir. Bu öznitelik, 'Sipariş karşılama çevrim süresi' KPI'ının doğrudan ölçümüdür. Bu süreyi analiz etmek, işletmelerin müşteri talebine ne kadar hızlı yanıt verdiğini anlamasına yardımcı olur. Toplama, paketleme ve sevkiyat sürecindeki gecikmelerin nerede oluştuğunu belirlemek için ürün, depo veya müşteriye göre ayrıştırılabilir; bu gecikmeler müşteri memnuniyetini ve lojistik verimliliği doğrudan etkiler. Neden önemli? Depodan çıkış sürecinin hızını ve verimliliğini ölçer; bu da müşteri memnuniyetini belirleyen önemli faktörlerden biridir. Nereden alınır? Bu, her parti için 'Picking Initiated' ve 'Goods Issue for Delivery Posted' olayları arasındaki zaman farkı hesaplanarak türetilen bir hesaplanmış özniteliktir. Örnekler 7200144003600 | |||
| Son kullanma tarihi ExpirationDate | Malzeme partisinin son kullanma tarihi dolduğunda artık kullanılamayacağı tarihtir. | ||
| Açıklama Raf Ömrü Son Kullanma Tarihi (SLED), bozulabilir veya zamana duyarlı ürünler için önemli bir ana veridir. Parti düzeyinde yönetilir ve bir ürünün ne zaman artık satılamayacağını veya tüketilemeyeceğini belirler. Bu öznitelik, "Kullanım Dışı ve Son Kullanma Tarihi Geçmiş Stok Analizi" Dashboardu için gereklidir. İşletmeler, etkinlikleri son kullanma tarihi bağlamında analiz ederek son kullanma riski taşıyan partileri belirleyebilir ve önleyici tedbirler alabilir. Ayrıca İlk Son Kullanma Tarihi, İlk Çıkar (FEFO) gibi stok rotasyonu politikalarının etkinliğini ölçmeye ve son kullanma tarihi geçmiş stokların hurdaya ayrılmasından kaynaklanan kayıpları hesaplamaya yardımcı olur. Neden önemli? Kullanım dışı ve son kullanma tarihi geçmiş stokları analiz etmenizi, israfı ve finansal kaybı azaltmanızı sağlar. Nereden alınır? Parti ana tablosu MCH1 veya MCHA'da VFDAT (Raf Ömrü Son Kullanma Tarihi) alanında bulunur. Örnekler 2024-12-312025-06-302024-09-01 | |||
| Son veri güncellemesi LastDataUpdate | Bu kayda ait verilerin kaynak sistemden en son ne zaman yenilendiğini gösteren zaman damgasıdır. | ||
| Açıklama Bu öznitelik, kaynak sistemden gerçekleştirilen en son veri çıkarma veya güncelleme işleminin tarihini ve saatini kaydeder. Analiz edilen bilgilerin güncelliği hakkında önemli meta veriler sağlar. Kullanıcıların neredeyse gerçek zamanlı verilere mi yoksa önceki bir döneme ait anlık görüntüye mi baktığını anlamasına yardımcı olur. Her analizde verilerin güncelliğini bilmek, geçerli ve doğru sonuçlara ulaşmak için önemlidir. Bu alan, analistlerin ve iş kullanıcılarının verilerin güncel olduğunu doğrulamasını sağlar. Sunulan içgörülere bağlam kazandırmak için Dashboardlarda sıkça gösterilir. Neden önemli? Kullanıcılara verilerin güncelliği hakkında bilgi verir ve analizlerin güncel bilgilere dayanmasını sağlar. Nereden alınır? Bu zaman damgası, veri çıkarma, dönüştürme ve yükleme (ETL) sürecinde oluşturulur ve eklenir. Örnekler 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
| Stok türü StockType | Stokun serbest kullanımda, kalite incelemesinde veya blokeli durumda olması gibi durumunu belirtir. | ||
| Açıklama Stok Türü, envanteri kullanılabilirliğine göre sınıflandırır. Temel türler serbest kullanıma uygun stok, kalite kontrolü bekleyen kalite incelemesi stoku ve kullanıma kapalı blokeli stoktur. Mal hareketleri çoğu zaman stok türünün değiştirilmesini içerir. Stok türündeki değişiklikleri izlemek, stok kullanılabilirliği sürecini anlamak için temel bir yaklaşımdır. 'Stok kalite incelemesine kaydedildi' ve 'Stok durumu bloke olarak değiştirildi' gibi faaliyetleri doğrudan destekler. Her stok türünde geçirilen süreyi, özellikle 'kalite incelemesi' süresini analiz etmek, malların satış veya üretim için kullanılabilirliğini etkileyen gecikmeleri belirlemek açısından önemlidir. Neden önemli? Stokun kullanılabilirlik durumunu izler ve kalite incelemesindeki gecikmeleri ve stok kullanılabilirliğini analiz etmek için gereklidir. Nereden alınır? Malzeme belgesi kalem tablosu MSEG'de INSMK (Stok Türü) alanında bulunur. Örnekler Serbest KullanımKalite KontrolüBloke Stok | |||
Stok Yönetimi Faaliyetleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Kalite kontrolü stoku serbest bırakıldı | Bir partinin kalite kontrolünden geçtiğini ve artık kullanım veya yerleştirme için hazır olduğunu gösterir. Bu işlem, kalite kontrolü stokundan serbest kullanımdaki stok gibi başka bir stok türüne yapılan açık bir transfer kaydı olarak tutulur. | ||
| Neden önemli? Bu kilometre taşı kalite sürecinin tamamlandığını ve stokun kullanılabilir hale geldiğini gösterir. Buradaki gecikmeler üretim veya sipariş karşılama süreçlerinde önemli sonraki sorunlara yol açabilir. Nereden alınır? MATDOC tablosuna transfer kaydı olarak yazılır. Genellikle 'Quality Inspection' stokundan 'Unrestricted-use' stokuna hareketi gösteren 321 Hareket Türü (BWART) ile tanımlanır. Yakalayın MATDOC içindeki malzeme belgelerinden, 321 hareket türü kullanılarak alınır. Olay türü explicit | |||
| Mal kabulü kaydedildi | Bir stok partisinin genellikle tedarikçiden veya üretimden depoya ilk girişini gösterir. Mallar teslim alındığında bir malzeme belgesi oluşturulduğu için bu olay SAP S/4HANA'da açıkça kaydedilir. | ||
| Neden önemli? Bu, stok yaşam döngüsünün birincil başlangıç olayıdır. Bu faaliyet ile yerleştirme gibi sonraki faaliyetler arasındaki süreyi analiz etmek, kabul rampalarının verimliliğini ölçmek için önemlidir. Nereden alınır? MATDOC tablosuna kaydedilir. Satın alma siparişi kabulleri için 101 veya bloke stoğa mal kabulü için 103 gibi belirli Hareket Türleri (BWART) ile tanımlanır. Yakalayın İlgili mal kabulü hareket türleriyle birlikte MATDOC içindeki malzeme belgelerinden alınır. Olay türü explicit | |||
| Stok düzeltmesi kaydedildi | Fiziksel sayım veya başka bir tutarsızlık sonucunda stok miktarında meydana gelen değişikliği kaydeder. Bu olay, kayıtlı stok miktarını fiziksel sayımla eşleştirmek için açıkça düzeltir. | ||
| Neden önemli? Bu düzeltmeler, stok doğruluğunu korumak için önemlidir. Düzeltmelerin sık yapılması, stok elleçleme, güvenlik veya veri girişiyle ilgili temel sorunlara işaret eder. Nereden alınır? MATDOC tablosuna kaydedilir. 701 (stok artışı) veya 702 (stok kaybı) gibi fiziksel sayım Hareket Türleri (BWART) ile belirlenir. Yakalayın MATDOC içindeki malzeme belgelerinden, fiziksel sayım düzeltmesine ait hareket türleriyle (ör. 701, 702) alınır. Olay türü explicit | |||
| Stok hurdaya ayrıldı | Bir stok partisinin nihai olarak elden çıkarılmasını ve stok kayıtlarından kalıcı biçimde silinmesini gösterir. Bu işlem genellikle son kullanma tarihi geçmiş, hasarlı veya kullanım dışı stoklar için yapılır. | ||
| Neden önemli? Finansal kaybı gösteren bir son olayıdır. Hurdaya ayırma olaylarını analiz etmek, stok yaşlanması, elleçleme prosedürleri veya talep tahminiyle ilgili sorunları belirlemeye yardımcı olur. Nereden alınır? MATDOC tablosuna kaydedilir. Hurdaya ayırmaya ait Hareket Türleri (BWART), örneğin serbest kullanımdan çıkış için 551, kalite incelemesinden çıkış için 553 veya blokeli stoktan çıkış için 555 ile belirlenir. Yakalayın MATDOC içindeki malzeme belgelerinden, hurdaya ayırma hareket türleriyle (ör. 551) alınır. Olay türü explicit | |||
| Teslimat için mal çıkışı kaydedildi | Giden sürecin son adımını kaydeder. Bu aşamada partinin mülkiyeti müşteriye veya taşıyıcıya devredilir. Stok miktarını azaltan ve muhasebeye kaydedilen açık bir işlemdir. | ||
| Neden önemli? Sipariş karşılama sürecinin tamamlandığını gösteren önemli bir olaydır. Zamanında teslimatı ölçmek ve toplam sipariş karşılama çevrim süresini hesaplamak için gereklidir. Nereden alınır? MATDOC tablosuna kaydedilir. Satış siparişi teslimatı için mal çıkışına ait Hareket Türü (BWART), genellikle 601 ile belirlenir. Yakalayın MATDOC içindeki malzeme belgelerinden hareket türü 601 ile alınır. Olay türü explicit | |||
| Üretim için mal çıkışı kaydedildi | Bir stok partisinin üretim veya proses emri tarafından tüketilmesini ifade eder. Bu işlem stok miktarını azaltır ve malzeme maliyetini üretim emrine dağıtır. | ||
| Neden önemli? Bu, temel tüketim olaylarından biridir ve bileşenlerin stok yaşam döngüsünün sonunu gösterir. Üretim için malzeme kullanılabilirliğini ve tüketim modellerini analiz etmek açısından önemlidir. Nereden alınır? MATDOC tablosuna kaydedilir. Bir emre mal çıkışına ait Hareket Türleri (BWART), örneğin 261 ile belirlenir. Yakalayın MATDOC içindeki malzeme belgelerinden hareket türü 261 ile alınır. Olay türü explicit | |||
| Yerleştirme transferi kaydedildi | Partinin kabul veya hazırlık alanından nihai depolama konumuna ya da gözüne fiziksel hareketini ifade eder. Bu hareket, SAP'de transfer kaydı malzeme belgesi olarak kaydedilir. | ||
| Neden önemli? Gelen mal kabul sürecini tamamlar. Put-away süresi olarak bilinen bu faaliyetin tamamlanması için gereken süre, depo verimliliği açısından önemli bir KPI'dır. Nereden alınır? MATDOC tablosuna, genellikle depolama konumları arasında transfer kaydı olarak kaydedilir (ör. Hareket Türü 311). Gerçekleşen hareket, depo yapısına göre değişebilir. Yakalayın Stoku geçici veya kabul SLoc'undan nihai depolama SLoc'una taşıyan MATDOC transfer kaydı belgeleriyle belirlenir. Olay türü explicit | |||
| Dahili stok transferi kaydedildi | Aynı tesis içindeki farklı depolama konumları veya gözler arasında bir stok partisinin hareketini kaydeder. Bu işlem, malzeme belgesi oluşturan açık bir işlemdir. | ||
| Neden önemli? Dahili transferleri izlemek, depo operasyonlarının verimliliğini analiz etmenize, gereksiz hareketleri belirlemenize ve konumlar arasındaki stok ikmal süresini ölçmenize yardımcı olur. Nereden alınır? MATDOC tablosuna kaydedilir. Depolama konumundan depolama konumuna transferler genellikle Hareket Türü (BWART) 311 ile belirlenir. Yakalayın MATDOC içindeki malzeme belgelerinden, dahili stok hareketlerine ait hareket türleriyle (ör. 311) alınır. Olay türü explicit | |||
| Parti durumu değiştirildi | Parti ana kaydındaki bir değişikliği, örneğin durumun 'Serbest Kullanım'dan 'Kısıtlı' duruma geçirilmesini ifade eder. Bu bir malzeme hareketi değil, günlüğe kaydedilen bir ana veri değişikliğidir. | ||
| Neden önemli? Parti durumundaki değişiklikler, partinin satışta veya üretimde kullanılabilirliğini doğrudan etkiler. Bu değişiklikleri analiz etmek, fiziksel hareket içermeyen son kullanma tarihi veya kalite kontrol sorunlarını ortaya çıkarabilir. Nereden alınır? Parti ana tablolarına (MCH1, MCHA) ait değişiklik günlüklerinden çıkarılır. CDHDR ve CDPOS tabloları, parti durumu alanındaki (MCH1-ZUSTD) değişiklikleri izler. Yakalayın Parti ana kaydındaki durum alanına (MCH1-ZUSTD) ilişkin CDHDR/CDPOS değişiklik belgelerinden türetilir. Olay türü inferred | |||
| Satış iadesi alındı | Daha önce çıkışı yapılan bir partinin müşteriden depoya iade edilmesini kaydeder. Bu, stok miktarını artıran açık bir işlemdir. | ||
| Neden önemli? İadeleri izlemek, ürün kalitesiyle ilgili sorunları ve müşteri memnuniyetsizliğini anlamak için gereklidir. İadelerin işlenmesi ve sonuçlandırılması da verimsizlik kaynağı olabilir. Nereden alınır? MATDOC tablosuna kaydedilir. Satış iadelerine ait Hareket Türleri (BWART), örneğin serbest kullanıma giriş için 651 veya kalite incelemesine giriş için 653 ile belirlenir. Yakalayın MATDOC içindeki malzeme belgelerinden, satış iadesi hareket türleriyle (ör. 651, 653) alınır. Olay türü explicit | |||
| Stok durumu bloke olarak değiştirildi | Partinin durumunun değiştiğini ve hasar, bekletme talebi veya başka nedenlerle kullanıma çıkarılamaz hale geldiğini ifade eder. Bu, SAP'de açık bir transfer kaydı işlemidir. | ||
| Neden önemli? Stok kullanılabilirliğindeki kesintileri görünür kılar. Bloke etme olaylarının sık yaşanması, elleçleme, depolama koşulları veya tedarikçi kalitesiyle ilgili sorunlara işaret edebilir. Nereden alınır? MATDOC tablosuna transfer kaydı olarak kaydedilir. Stoku 'Bloke' durumundan 'Serbest Kullanım'a geçirmek için genellikle Hareket Türü (BWART) 344, 'Serbest Kullanım'dan 'Bloke' durumuna geçirmek için 343 kullanılır. Bu faaliyet 343 içindir. Yakalayın MATDOC içindeki malzeme belgelerinde hareket türü 343 ile belirlenir. Olay türü explicit | |||
| Stok durumu serbest kullanıma değiştirildi | Partinin durumunun değiştiğini, bloke veya kalite bekletmesinden çıkarılarak kullanıma açıldığını ifade eder. Bu işlem, açık bir transfer kaydı olarak kaydedilir. | ||
| Neden önemli? Bu faaliyet, stok üzerindeki bekletmenin kaldırıldığını gösterir. Stokun bloke durumda kaldığı süre, çözüm süreçlerini iyileştirmek için analiz edilebilir. Nereden alınır? MATDOC tablosuna transfer kaydı olarak kaydedilir. Hareket Türü (BWART) 344, stoku 'Bloke' durumundan 'Serbest Kullanım'a geçirir. Yakalayın MATDOC içindeki malzeme belgelerinde hareket türü 344 ile belirlenir. Olay türü explicit | |||
| Stok kalite kontrolüne aktarıldı | Teslim alınan bir partinin kalite kontrolü bekleyen statüye aktarılmasını ifade eder. Parti, kontrol tamamlanana kadar kullanılamaz. Bu, SAP'de partinin stok türünü değiştiren açık bir işlemdir. | ||
| Neden önemli? Bu faaliyet kalite kontrol sürecini başlatır. Bu faaliyet ile kalite kontrolünden serbest bırakma arasındaki süre, kalite kaynaklı gecikmeleri anlamak için önemli bir metriktir. Nereden alınır? MATDOC tablosuna kaydedilir. Stok Türü (INSMK) 'Q' (Kalite Kontrolü) olarak ayarlanmış bir mal kabulü hareketi, örneğin 101, veya bir transfer kaydı, örneğin 322, olabilir. Yakalayın Stoku 'Quality Inspection' stok türüne aktaran MATDOC içindeki malzeme belgeleriyle tanımlanır. Olay türü explicit | |||
| Toplama başlatıldı | Sipariş karşılama sürecinin başlangıcını gösterir. Bu aşamada, depolama gözünden bir parti toplamak için depo görevi oluşturulur. Genellikle Transfer Emri veya Warehouse Task oluşturulduğunda kaydedilir. | ||
| Neden önemli? Bu faaliyet, toplama sürecini başlatır. Bu olay ile toplamanın tamamlanması arasındaki süreyi analiz etmek, depo çalışanlarının verimliliğini ölçmenize ve gecikmeleri belirlemenize yardımcı olur. Nereden alınır? Bu bilgi genellikle MATDOC içinde yer almaz. Warehouse Management (WM/EWM) kullanılan sistemlerde, Transfer Emri (LTAK tablosu) veya Warehouse Task oluşturulma zaman damgasından çıkarılır. Yakalayın Malzeme partisiyle ilişkilendirilmiş Transfer Emri (WM'de) veya Warehouse Task (EWM'de) oluşturma kaydından çıkarılır. Olay türü inferred | |||
Veri çıkarma rehberleri
Adımlar
- Sistem erişimini sağlayın: SAP S/4HANA sistemindeki Core Data Services (CDS) görünümlerini sorgulamak için gerekli yetkilere sahip bir kullanıcı bulunduğundan emin olun. Bunun için genellikle sistem yöneticisinin erişim tanımlaması gerekir.
- Bir SQL istemcisi seçin: SAP HANA veritabanına bağlanabilen bir SQL istemcisi seçin. Yaygın seçenekler arasında SAP HANA Studio, SAP HANA Database Explorer ve DBeaver gibi üçüncü taraf araçlar bulunur.
- Veritabanı bağlantısını yapılandırın: SQL istemcinizi kullanarak yeni bir veritabanı bağlantısı oluşturun. HANA veritabanı ana bilgisayar adına, bağlantı noktası numarasına, genellikle 3<instance_number>15, ve veritabanı kullanıcı bilgilerinizə ihtiyacınız olacaktır.
- SQL sorgusunu hazırlayın: Bu belgenin 'query' bölümünde verilen SQL sorgusunun tamamını SQL istemcinizin düzenleyicisine kopyalayın.
- Sorgu parametrelerini ayarlayın: Sorgudaki yer tutucu değerleri bulun.
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'ifadesini istediğiniz tarih aralığıyla, örneğinBETWEEN '20230101' AND '20230630', değiştirin. AyrıcaMaterialDocumentItem.Plant IN ('Plant1', 'Plant2')gibi şirket veya tesis filtrelerini kuruluş yapınıza uygun şekilde güncelleyin. - Sorguyu çalıştırın: Değiştirilmiş SQL sorgusunu S/4HANA veritabanında çalıştırın. Çalışma süresi, tarih aralığına ve sisteminizdeki stok verilerinin hacmine göre değişir.
- Verileri inceleyin: Sorgu tamamlandığında sonuçları SQL istemcinizde inceleyerek doğru ve eksiksiz göründüğünden emin olun. Farklı etkinliklerin bulunduğunu ve temel özniteliklerin doldurulduğunu kontrol edin.
- Event Logu dışa aktarın: Sonuç kümesinin tamamını SQL istemcinizden CSV dosyasına aktarın. Karakter sorunlarını önlemek için dışa aktarma ayarlarında UTF-8 kodlamasının kullanıldığından emin olun.
- Yüklemeye hazırlanın: CSV dosyasındaki sütunları sorguda verilen takma adlarla tam olarak adlandırın. Örneğin
InventoryBatchLot,ActivityName,EventTimeve benzeri. Bu dosya artık bir process mining aracına yüklenmeye hazırdır.
Yapılandırma
- Yetkilendirmeler: Sorguyu çalıştıran kullanıcının şu CDS görünümlerinde
SELECTizinlerine sahip olması gerekir:I_MaterialDocumentItem,I_BatchChangeDocumentveI_WarehouseTask. Bu görünümlerin bulunduğu temel veritabanı şemasına erişim de gereklidir. - Tarih aralığı filtresi:
PostingDate,ChangeDocumentCreationDateveyaWarehouseTaskCreationDatealanlarına tarih aralığı filtresi uygulamak önemlidir. Analiz için genellikle 3 ila 12 aylık bir aralık kullanılır. Birden fazla yılı sorgulamak ciddi performans sorunlarına yol açabilir. - Kuruluş filtreleri: Daha iyi performans ve hedefli analiz için
PlantveyaCompanyCodealanlarına filtre uygulayanWHEREkoşulları ekleyin. Bu, veri hacmini azaltır ve çıkarma işlemini işletmenin ilgili bölümlerine odaklar. - Veri hacmi: Stok yönetimi sistemlerinin yüksek miktarda veri ürettiğini unutmayın. Geniş bir tarih aralığı milyonlarca satır döndürebilir ve hem çıkarma sırasında kaynak sistemi hem de istemci aracınızın performansını etkileyebilir.
- Extended Warehouse Management (EWM): 'Picking Initiated' etkinliği, yalnızca SAP Extended Warehouse Management kullanıyorsanız verilerle doldurulan
I_WarehouseTaskCDS görünümüne dayanır. Kuruluşunuz eski Warehouse Management (WM) modülünü veya yalnızca Inventory Management (IM) kullanıyorsa bu etkinlik çıkarılmaz.
a Örnek sorgu sql
SELECT
mat_doc.Batch AS "InventoryBatchLot",
CASE
WHEN mat_doc.MovementType = '101' AND mat_doc.InventoryStockType = '2' THEN 'Stock Posted to Quality Inspection'
WHEN mat_doc.MovementType = '101' THEN 'Goods Receipt Posted'
WHEN mat_doc.MovementType = '321' THEN 'Quality Inspection Stock Released'
WHEN mat_doc.MovementType = '311' THEN 'Internal Stock Transfer Posted'
WHEN mat_doc.MovementType = '344' THEN 'Stock Status Changed to Blocked'
WHEN mat_doc.MovementType IN ('343', '322') THEN 'Stock Status Changed to Unrestricted'
WHEN mat_doc.MovementType IN ('701', '702') THEN 'Inventory Adjustment Posted'
WHEN mat_doc.MovementType = '601' THEN 'Goods Issue for Delivery Posted'
WHEN mat_doc.MovementType = '261' THEN 'Goods Issue for Production Posted'
WHEN mat_doc.MovementType IN ('651', '653') THEN 'Sales Return Received'
WHEN mat_doc.MovementType = '551' THEN 'Stock Scrapped'
WHEN mat_doc.MovementType = '313' THEN 'Put-Away Transfer Posted' -- Example for two-step transfers
ELSE 'Unknown Material Movement'
END AS "ActivityName",
TO_TIMESTAMP(mat_doc.PostingDate || LPAD(mat_doc.CreationTime, 6, '0'), 'YYYYMMDDHH24MISS') AS "EventTime",
mat_doc.Material AS "MaterialNumber",
mat_doc.CreatedByUser AS "UserName",
mat_doc.MovementType AS "MovementType",
mat_doc.Plant AS "Plant",
mat_doc.StorageLocation AS "StorageLocation",
mat_doc.QuantityInEntryUnit AS "Quantity",
mat_doc.ReasonForMovement AS "MovementReasonCode"
FROM
I_MaterialDocumentItem AS mat_doc
WHERE
mat_doc.Batch IS NOT NULL AND mat_doc.Batch <> ''
AND mat_doc.PostingDate BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
-- AND mat_doc.Plant IN ('Plant1', 'Plant2') -- Placeholder: Add filters for relevant plants
UNION ALL
SELECT
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 3) AS "InventoryBatchLot",
'Batch Status Changed' AS "ActivityName",
change_doc.ChangeDocumentCreationDateTime AS "EventTime",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 1) AS "MaterialNumber",
change_doc.ChangedByUser AS "UserName",
NULL AS "MovementType",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 2) AS "Plant",
NULL AS "StorageLocation",
NULL AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_BatchChangeDocument AS change_doc
WHERE
change_doc.ChangeDocumentTable = 'MCHA' AND change_doc.ChangeDocumentTableFieldName = 'ZUSTD'
AND TO_VARCHAR(change_doc.ChangeDocumentCreationDate) BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
UNION ALL
SELECT
wh_task.Batch AS "InventoryBatchLot",
'Picking Initiated' AS "ActivityName",
wh_task.WarehouseTaskCreationDateTime AS "EventTime",
wh_task.Product AS "MaterialNumber",
wh_task.CreatedByUser AS "UserName",
NULL AS "MovementType",
wh_task.Plant AS "Plant",
wh_task.SourceStorageLocation AS "StorageLocation",
wh_task.TargetQuantity AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_WarehouseTask AS wh_task
WHERE
wh_task.Batch IS NOT NULL AND wh_task.Batch <> ''
AND wh_task.WarehouseProcessType IN ('P210', 'P220') -- Placeholder: Adjust process types based on your picking configuration
AND TO_VARCHAR(wh_task.WarehouseTaskCreationDate) BETWEEN '20230101' AND '20231231'; -- Placeholder: Set your date range Adımlar
- Doğrudan SAP HANA SQL erişiminin onaylandığını ve çıkarma kullanıcısının sistemin gerektirdiği MATDOC ile parti ana veri tablolarına okuma erişimi bulunduğunu doğrulayın. Fiziksel şema sahibini doğrulayın ve [Your SAP HANA schema] ifadesini onaylanan şema adıyla değiştirin.
- Hedef SAP S/4HANA sürümünde kullanılabilir MATDOC ve parti tablosu alanlarını doğrulayın. Aşağıdaki sorgu yaygın olarak bulunan MATDOC alanlarını ve MCHA alanlarını kullanır, ancak alanların kullanılabilirliği ve adlandırması sürüme, kuruluma ve etkinleştirilen kapsama göre değişebilir. [Configure based on your system] olarak işaretlenen alanları çalıştırmadan önce değiştirin.
- [Start timestamp] ve [End timestamp] ifadelerini ISO zaman damgası değerleriyle değiştirerek çıkarma dönemini tanımlayın. İlk çıkarma için üç ila altı aylık bir dönem kullanın. Hacmi ve performansı doğruladıktan sonra dönemi genişletin.
- Sorguyu onaylı bir SQL istemcisinde, SAP HANA Database Explorerda veya eşdeğer yetkili bir veritabanı aracında çalıştırın. İlgili filtre yer tutucularını değiştirerek sonucu gerekli şirket kodları, tesisler, belge türleri veya hareket türleriyle sınırlandırın.
- Etkinlik CTE içindeki hareket türü eşlemesini inceleyin. Hareket türleri sistem ve iş yapılandırmasına bağlıdır. Örnek hareket türü listelerini hedef sistemde mal kabulü, kalite kontrolü, serbest bırakma, depolama, dahili transfer, bloke stok, serbest kullanılabilir stok, stok düzeltmesi, toplama, teslimat çıkışı, üretim çıkışı, satış iadesi ve hurdaya ayırma için yapılandırılmış hareket türleriyle değiştirin.
- Her çıktı satırında InventoryBatchLot, ActivityName ve EventTime bulunduğunu doğrulayın. Parti tanımlayıcısının ProcessMind vaka kimliği olarak kullanılabilecek kadar kararlı olduğunu kontrol edin. İş senaryosu, kuruluş birimleri arasındaki aynı parti değerlerini ayırt etmek için malzeme, tesis veya depolama konumu gerektiriyorsa yalnızca parti değeri yerine yapılandırılmış bileşik vaka kimliğini kullanın.
- Olay sıralamasını, yinelenen satırları, ters kayıt belgelerini, iptal edilen belgeleri ve saat dilimi işlemlerini doğrulayın. MATDOC belge kayıtlarını tuttuğu için ters kayıt ve iptal kayıtları açıkça hariç tutulmadıkça veya eşleştirilmedikçe ayrı olaylar olarak görünebilir.
- Sorgu sonucunu, her olay için bir satır ve InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity ve MovementReasonCode sütunlarını içeren düz bir dosya olarak dışa aktarın. Zaman damgalarını tutarlı bir ISO 8601 biçiminde koruyun. Malzeme, parti, tesis ve depolama konumu değerlerindeki baştaki sıfırları koruyun.
- Ortaya çıkan Event Logu ProcessMind’e yükleyin ve InventoryBatchLot alanını vaka kimliği, ActivityName alanını etkinlik, EventTime alanını da olay zaman damgası olarak eşleyin. Etkinlikleri çıkarmak, kayıtları birleştirmek veya eksik olayları türetmek için ProcessMind’e güvenmeyin.
Yapılandırma
- Çıkarma yöntemi: SAP HANA stok ve parti verilerine karşı doğrudan SQL sorgusu. Sorgu MATDOC'u okur ve parti ana verilerini MCHA'dan birleştirir. MCH1'i veya başka bir parti tablosunu yalnızca hedef sistemdeki ilgili alanları ve parti düzeyini doğruladıktan sonra ekleyin.
- Tarih aralığı: Üç ila altı ayla başlayın. EventTime için MATDOC'ta bulunan malzeme belgesi kayıt tarihi ve saatini kullanın. Artımlı yüklemelerde, geç kayıtları yakalamak için kontrollü bir örtüşme aralığı kullanın ve ardından yapılandırılmış belge ve kalem tanımlayıcılarıyla yinelenen kayıtları kaldırın.
- Gerekli filtreler: Şirket kodunu, tesisi, malzeme belge türünü, hareket türünü, parti varlığını ve kayıt tarihini süreç kapsamına göre yapılandırın. Şirket kodu ve belge türü alanları sorguya eklenmeden önce kurulu sürüm için doğrulanmalıdır.
- Etkinlik eşlemesi: Hareket türlerinin anlamı yapılandırmaya bağlıdır. Onaylı bir eşleme tablosu tutun veya sorgudaki hareket türü listelerini işletmenin kullandığı değerlerle değiştirin. Örnek listeleri evrensel SAP anlamları olarak kabul etmeyin.
- Parti kapsamı: Case identifier InventoryBatchLot olduğu için parti değeri bulunmayan satırlar sorgudan çıkarılır. Parti türetme işlemi başka bir kaynaktan yapılacaksa bu kaynağı çıkarma işleminden önce açıkça yapılandırın.
- Olay ayrıntı düzeyi: Koşulları karşılayan her MATDOC kalemi bir olay satırı olarak çıkarılır. Sorgu, sonraki kayıtlardan toplama, kalite kararları, parti statüsü değişiklikleri veya diğer etkinlikleri türetmez.
- Parti ana verisi değişiklikleri: Parti statüsü değişiklikleri yalnızca MATDOC'ta güvenilir biçimde gösterilmez. Batch Status Changed etkinliği için bir değişiklik belgesi veya parti geçmişi kaynağı yapılandırın. Sorgu, çalıştırılmadan önce doğrulanmış bir kaynağa bağlanması gereken bir yer tutucu dal içerir.
- Toplama: Toplama başlatma genellikle MATDOC kaydı değil, depo yürütme verisidir. Doğrulanmış bir depo görevi veya transfer emri kaynağı yapılandırın ve yer tutucu dalı çalıştırmadan önce değiştirin.
- Performans: Kayıt zaman damgası veya kayıt tarihi, tesis, şirket kodu ve ilgili hareket türlerine göre filtre uygulayın. Yalnızca gerekli sütunları seçin, sınırsız geçmiş taramalarından kaçının ve onaylanmış bir iş yükü zaman aralığında çalıştırın. Büyük MATDOC hacimleri için bölümlere ayrılmış veya artımlı çıkarma önerilir.
- Yetkilendirmeler ve ön koşullar: Onaylı veritabanı bağlantısı, şema erişimi, okuma yetkisi, SAP S/4HANA stok verilerine erişim ve MATDOC dışındaki iki etkinlik için kullanılan depo yürütme veya değişiklik geçmişi kaynağına erişim sağlayın. Doğrudan veritabanı erişiminin kuruluşun SAP işletim modeli ve destek politikasıyla uyumlu olduğunu doğrulayın.
- Saat dilimleri: Veritabanı ve uygulama saat dilimlerini doğrulayın. ProcessMind'e yüklemeden önce EventTime değerlerini tutarlı biçimde dönüştürün.
- Veri koruma: Kullanıcı kimlikleri, malzeme verileri, müşteriyle ilgili veriler ve veritabanı kimlik bilgileri için kuruluşunuzun kontrollerini uygulayın. Kimlik bilgilerini sorgu metnine yerleştirmeyin.
a Örnek sorgu sql
WITH
params AS (
SELECT
TO_TIMESTAMP('[Start timestamp]') AS start_ts,
TO_TIMESTAMP('[End timestamp]') AS end_ts
FROM DUMMY
),
movement_map AS (
SELECT '101' AS movement_type, 'Goods Receipt Posted' AS activity_name FROM DUMMY
UNION ALL SELECT '105', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '107', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '109', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '321', 'Stock Posted to Quality Inspection' FROM DUMMY
UNION ALL SELECT '322', 'Quality Inspection Stock Released' FROM DUMMY
UNION ALL SELECT '343', 'Stock Status Changed to Unrestricted' FROM DUMMY
UNION ALL SELECT '344', 'Stock Status Changed to Blocked' FROM DUMMY
UNION ALL SELECT '311', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '301', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '311', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '701', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '702', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '703', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '704', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '705', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '706', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '601', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '602', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '261', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '262', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '651', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '653', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '654', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '551', 'Stock Scrapped' FROM DUMMY
UNION ALL SELECT '552', 'Stock Scrapped' FROM DUMMY
),
matdoc_events AS (
SELECT
m.MATNR AS MaterialNumber,
m.CHARG AS InventoryBatchLot,
COALESCE(m.BUDAT_MKPF, m.BUDAT) AS EventTime,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(m.BWART AS NVARCHAR(3)) AS MovementType,
m.WERKS AS Plant,
m.LGORT AS StorageLocation,
m.MENGE AS Quantity,
m.GRUND AS MovementReasonCode,
mm.activity_name AS ActivityName,
m.MBLNR AS MaterialDocumentNumber,
m.MJAHR AS MaterialDocumentYear,
m.ZEILE AS MaterialDocumentItem
FROM [Your SAP HANA schema].MATDOC m
INNER JOIN movement_map mm
ON CAST(m.BWART AS NVARCHAR(3)) = mm.movement_type
CROSS JOIN params p
WHERE m.CHARG IS NOT NULL
AND TRIM(m.CHARG) <> ''
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) >= p.start_ts
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) < p.end_ts
AND m.WERKS IN ([Configure based on your system])
),
batch_enriched_events AS (
SELECT
e.InventoryBatchLot,
e.ActivityName,
e.EventTime,
e.MaterialNumber,
e.UserName,
e.MovementType,
e.Plant,
e.StorageLocation,
e.Quantity,
e.MovementReasonCode,
e.MaterialDocumentNumber,
e.MaterialDocumentYear,
e.MaterialDocumentItem,
c.CUOBJ_BM AS BatchObjectNumber
FROM matdoc_events e
LEFT JOIN [Your SAP HANA schema].MCHA c
ON c.MATNR = e.MaterialNumber
AND c.CHARG = e.InventoryBatchLot
AND c.WERKS = e.Plant
),
verified_batch_status_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Batch Status Changed' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
verified_picking_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
all_events AS (
SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM batch_enriched_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_batch_status_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_picking_events
)
SELECT
InventoryBatchLot,
ActivityName,
EventTime,
MaterialNumber,
UserName,
MovementType,
Plant,
StorageLocation,
Quantity,
MovementReasonCode
FROM all_events
WHERE InventoryBatchLot IS NOT NULL
AND EventTime IS NOT NULL
ORDER BY InventoryBatchLot, EventTime, MaterialDocumentYear, MaterialDocumentNumber, MaterialDocumentItem, ActivityName; Adımlar
- ABAP Editorü açın: SAP S/4HANA sisteminize giriş yapın.
SE38işlem kodunu kullanarak ABAP Editorünü açın. - Yeni bir program oluşturun: Yeni programın adını 'Program' alanına girin, örneğin
Z_PM_INVENTORY_EXTRACT, ve 'Create' düğmesine tıklayın. Açıklayıcı bir başlık girin, 'Type' alanını 'Executable Program' olarak ayarlayın ve programı bir pakete kaydedin. - Program parametrelerini tanımlayın: Program düzenleyicisinde, çıkarma işleminin kullanıcı arayüzü olarak kullanılacak seçim ekranını tanımlayın. Böylece kullanıcılar veri çıkarma işlemi için tarih aralığı ve tesis gibi parametreleri belirleyebilir.
- Çıkarma mantığını uygulayın: 'Query' bölümünde verilen ABAP kodunun tamamını kopyalayıp ABAP Editorüne yapıştırın. Bu kod, çeşitli SAP tablolarından gerekli 14 stok etkinliğinin tamamına ait verileri seçmek üzere tasarlanmıştır.
- Temel mantığı anlayın: Program, malzeme hareketleri için
MKPFveMSEG, ana veri değişiklikleri içinCDHDRveCDPOSgibi kaynak tablolardan her bir stok etkinliğine ait verileri seçer. Ardından her seçim, Event Logu temsil eden tek bir dahili tablodaUNION ALLkullanılarak birleştirilir. - Dosya çıktısını yapılandırın: Kodun son bölümü, birleştirilmiş verilerin dahili tablodan dosyaya yazılmasını yönetir. SAP uygulama sunucusunda dosya oluşturmak için
OPEN DATASETifadesini kullanır. SAP sistem kullanıcısının yazma izni bulunan geçerli bir sunucu yolu belirtmeniz gerekir. - Programı çalıştırın: ABAP programını kaydedip etkinleştirin (Ctrl+F3). F8 tuşuna basarak çalıştırın. Seçim ekranında istediğiniz tarih aralığını ve Tesis veya Şirket Kodu gibi diğer ilgili filtreleri girin.
- Arka plan işi olarak çalıştırın: Büyük veri hacimlerinde oturum zaman aşımını önlemek için programı arka plan işi olarak çalıştırmanız önemlidir. Çalıştırma ekranından (F8)
Program -> Execute in Backgroundmenüsüne gidin. İşi yoğun olmayan saatlerde çalışacak şekilde planlayın. - Çıktı dosyasını alın: İş tamamlandığında SAP uygulama sunucusundaki çıktı dosyasını bulun. Sunucu dizinlerine göz atmak ve dosyanızı bulmak için
AL11işlem kodunu kullanın. Dosyayı uygulama sunucusundan yerel bilgisayarınıza indirmek içinCG3Yişlemini kullanın. - Yüklemeye hazırlanın: İndirilen dosyayı bir metin düzenleyicide veya elektronik tablo yazılımında açın. Dosyanın başlık satırı bulunan bir CSV dosyası olarak biçimlendirildiğinden, ayırıcı olarak virgül ve metin niteleyici olarak çift tırnak kullanıldığından emin olun. Yüklemeden önce sütun adlarının gereksinimlerle eşleştiğini doğrulayın.
Yapılandırma
- Kayıt tarihi aralığı: Bu, en önemli parametredir. İyi performans sağlamak ve sistem zaman aşımlarını önlemek için verileri 3 ila 6 aylık yönetilebilir gruplar halinde çıkarmanızı öneririz.
- Tesis filtresi: Bir veya daha fazla belirli tesise (
WERKS) göre filtre uygulamanız önemle önerilir. Çıkarma işlemini tüm tesisler için aynı anda çalıştırmak kaynakları aşırı tüketebilir. - Şirket kodu filtresi: Kuruluşunuz aynı sistemde birden fazla şirket koduyla çalışıyorsa veri kapsamını daha da daraltmak için isteğe bağlı bir Company Code (
BUKRS) filtresi ekleyebilirsiniz. - Uygulama sunucusu dosya yolu: ABAP programı, SAP uygulama sunucusunda önceden tanımlanmış ve geçerli bir dizin yolu gerektirir. SAP sistem kullanıcısının (
SY-UNAME) bu dizine dosya yazmak için gerekli işletim sistemi düzeyindeki izinlere sahip olduğundan emin olun. - Yetkilendirmeler: Bu çıkarmayı gerçekleştiren kullanıcının
SE38işlem kodu için yetkilere,MKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKveLTAPtablolarına görüntüleme erişimine ve arka plan işlerini (SM36/SM37) planlama yetkisine sahip olması gerekir.
a Örnek sorgu abap
REPORT Z_PM_INVENTORY_EXTRACT.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_budat FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: s_werks FOR mseg-werks.
PARAMETERS: p_fpath TYPE string DEFAULT '/usr/sap/trans/tmp/inventory_log.csv' OBLIGATORY.
" ====================================================================
" DATA STRUCTURES
" ====================================================================
TYPES: BEGIN OF ty_event_log,
InventoryBatchLot TYPE charg,
ActivityName TYPE string,
EventTime TYPE string,
MaterialNumber TYPE matnr,
UserName TYPE xubname,
MovementType TYPE bwart,
Plant TYPE werks_d,
StorageLocation TYPE lgort_d,
Quantity TYPE menge_d,
MovementReasonCode TYPE grund,
END OF ty_event_log.
DATA: lt_event_log TYPE TABLE OF ty_event_log.
" ====================================================================
" DATA SELECTION
" ====================================================================
START-OF-SELECTION.
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Receipt Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('101', '103', '105', '501', '521', '561')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~shkzg
WHEN 'H' THEN 'Stock Posted to Quality Inspection'
WHEN 'S' THEN 'Quality Inspection Stock Released'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '321' " For QI to Unrestricted
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Put-Away Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '311' AND mseg~shkzg = 'H' " Assume put-away is the credit side
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Internal Stock Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('301', '311', '313', '315')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~bwart
WHEN '343' THEN 'Stock Status Changed to Blocked'
WHEN '344' THEN 'Stock Status Changed to Unrestricted'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('343', '344')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Inventory Adjustment Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('701', '702', '711', '712')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Delivery Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '601'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Production Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '261'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Sales Return Received' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('651', '653')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Stock Scrapped' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '551'
UNION ALL
SELECT
ltap~charg AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CONCAT( ltak~bdatu, ltak~bzeit ) AS EventTime,
ltap~matnr AS MaterialNumber,
ltak~bname AS UserName,
ltak~bwart AS MovementType,
ltap~werks AS Plant,
ltap~lgort AS StorageLocation,
ltap~nista AS Quantity,
'' AS MovementReasonCode
FROM ltap
JOIN ltak ON ltak~tanum = ltap~tanum
WHERE ltak~bdatu IN s_budat
AND ltap~werks IN s_werks
AND ltap~charg IS NOT NULL AND ltap~charg <> ''
UNION ALL
SELECT
SUBSTRING( cdhdr~objectid, 5, 18 ) AS InventoryBatchLot, " Object ID for BATCH is MATNR+WERKS+CHARG
'Batch Status Changed' AS ActivityName,
CONCAT( cdhdr~udate, cdhdr~utime ) AS EventTime,
SUBSTRING( cdhdr~objectid, 1, 4 ) AS MaterialNumber,
cdhdr~username AS UserName,
'' AS MovementType,
'' AS Plant,
'' AS StorageLocation,
0 AS Quantity,
'' AS MovementReasonCode
FROM cdhdr
JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
AND cdpos~objectid = cdhdr~objectid
AND cdpos~changenr = cdhdr~changenr
WHERE cdhdr~udate IN s_budat
AND cdhdr~objectclas = 'BATCH'
AND cdpos~tabname = 'MCH1'
AND cdpos~fname = 'ZUSTD'
INTO TABLE @lt_event_log.
" ====================================================================
" WRITE OUTPUT FILE
" ====================================================================
DATA: lv_string TYPE string.
DATA: lo_conv TYPE REF TO cl_abap_conv_out_ce.
lo_conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'Error opening file.' TYPE 'E'.
RETURN.
ENDIF.
" Write Header
lv_string = 'InventoryBatchLot,ActivityName,EventTime,MaterialNumber,UserName,MovementType,Plant,StorageLocation,Quantity,MovementReasonCode'.
TRANSFER lv_string TO p_fpath.
" Write Data
LOOP AT lt_event_log ASSIGNING FIELD-SYMBOL(<fs_log>).
CONCATENATE
<fs_log>-InventoryBatchLot
<fs_log>-ActivityName
<fs_log>-EventTime
<fs_log>-MaterialNumber
<fs_log>-UserName
<fs_log>-MovementType
<fs_log>-Plant
<fs_log>-StorageLocation
<fs_log>-Quantity
<fs_log>-MovementReasonCode
INTO lv_string
SEPARATED BY ','.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
WRITE: 'Extraction complete. File written to:', p_fpath. Başlamaya hazır mısınız?
Verilerinizi güvenle hazırlamak ve Stok Yönetimi operasyonlarınıza ilişkin değerli içgörüler elde etmek için bu şablondan yararlanın. Verimliliği artırmak ve maliyetleri azaltmak için bugün çalışmaya başlayın.
SAP S/4HANA'da stok yönetiminizi optimize edin
Verimsizlikleri belirleyin, çevrim süresini %30 azaltın ve maliyetlerden tasarruf edin.
Kredi kartı gerekmez • Dakikalar içinde kurulum