Envanter yönetimi Veri Templateiniz
Envanter yönetimi Veri Templateiniz
- Toplanması önerilen öznitelikler
- Süreç keşfi için izlenecek temel etkinlikler
- SAP S/4HANA’ya özel veri çıkarma yönergeleri
Envanter yönetimi öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Envanter 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ı. | ||
| Açıklama Envanter partisi veya lot numarası, belirli bir ürün miktarıyla ilgili tüm etkinlikleri bir araya getiren temel vaka kimliğidir. Bu sayede stok miktarının depoya ilk girişinden tesis içindeki çeşitli hareket ve durum değişikliklerine, satış, üretim veya elden çıkarma için gönderilmesine kadar tüm yolculuğunu kronolojik olarak görebilirsiniz. Süreç analizinde bu öznitelik temel bir rol oynar. Her partinin uçtan uca akışını izlemenizi, çevrim sürelerini doğru ölçmenizi, süreç farklılıklarını belirlemenizi ve partilerin nasıl işlendiğini anlamanızı sağlar. Parti düzeyinde analiz; izlenebilirliğin, kalite kontrolünün ve son kullanma tarihi yönetiminin önemli olduğu ilaç, yiyecek ve içecek, kimya gibi sektörlerde özellikle önemlidir. Neden önemli? İlgili tüm envanter olaylarını tek bir vakada birleştiren bu temel tanımlayıcı, sürecin baştan sona analiz edilmesini sağlar. Nereden alınır? Bu genellikle, SAP’de MCHA (Batch Master) veya MCH1 (Batches) gibi tablolarda CHARG alanında bulunan parti numarasıdır. Örnekler B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Olay zamanı EventTime | Envanter etkinliğinin sistemde kaydedildiği kesin tarih ve saat. | ||
| Açıklama Olay zamanı, bir etkinliğin tam olarak ne zaman gerçekleştiğini kaydeden zaman damgasıdır. Her envanter partisinin süreç akışını yeniden oluşturmak için olayları kronolojik sıraya koymada bu veri noktası gereklidir. Zamana dayalı tüm Process Mining analizlerinin temelini oluşturur. Çevrim süresi, teslim süresi ve süre gibi temel performans göstergelerini hesaplamak için olay zamanının doğru olması önemlidir. Süreç performansını farklı dönemlerde analiz etmenizi, darboğazların ne zaman oluştuğunu belirlemenizi ve bir partinin serbest bırakılmadan önce kalite kontrolünde geçirdiği süre gibi gecikmeleri verilerle anlamanızı sağlar. Neden önemli? Bu zaman damgası olayları kronolojik sıraya koyar ve süre ile performans hesaplamalarının temelini oluşturur. Nereden alınır? Bu genellikle malzeme belgesi başlık tablosu MKPF’deki kayıt tarihi (MKPF-BUDAT) ile giriş saatinin (MKPF-CPUTM) birleştirilmesiyle elde edilir. Örnekler 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| Aktivite ActivityName | Envanter yönetimi sürecinde belirli bir anda gerçekleşen iş olayının adı. | ||
| Açıklama Aktivite özniteliği, bir partinin envanter yaşam döngüsündeki tek bir adımı veya olayı tanımlar. Bu olaylar; malların teslim alınması, stokun taşınması, kalite kontrolü yapılması veya malzeme çıkışı gibi temel iş işlemlerini kapsar. Her etkinlik, envanter partisinin belirli bir zamanda başına gelen bir durumu kaydeder. Etkinlikleri analiz etmek, Process Mining’in temelini oluşturur. Süreç akışını görselleştirmenizi, sık ve nadir görülen yolları belirlemenizi, etkinliklerin geciktiği darboğazları ve yeniden çalışma döngülerini tespit etmenizi sağlar. 'Stok hurdaya ayrıldı' veya 'Kalite kontrolü' gibi etkinliklerin sırasını ve sıklığını anlayarak süreçleri ve operasyonel verimliliği iyileştirebileceğiniz alanları belirleyebilirsiniz. Neden önemli? Süreç adımlarını tanımlar ve envanter yaşam döngüsünü görselleştirip analiz etmenizi sağlar. Nereden alınır? Bu, genellikle SAP hareket türlerinden (MSEG-BWART) veya işlem kodlarından (MKPF-TCODE2) kullanıcıların anlayabileceği adlara eşlenen türetilmiş bir özniteliktir. Örnekler Mal girişi kaydedildiDepoya yerleştirme transferi kaydedildiTeslimat için mal çıkışı kaydedildiStok hurdaya ayrıldı | |||
| Depo yeri StorageLocation | Stokun fiziksel olarak tutulduğu Plant içindeki belirli bir konum. | ||
| Açıklama Depo yeri, bir Plant içindeki malzeme stoklarını birbirinden ayırmaya yarayan bir organizasyon birimidir. Örneğin bir tesiste ham maddeler, mamuller ve kalite kontrol stokları için ayrı depo yerleri bulunabilir. Bu öznitelik, Plant’e kıyasla konum bilgisini daha ayrıntılı sunar. Mal kabul alanından ana depoya yapılan transferlerin teslim süresi gibi farklı stok alanları arasındaki hareketleri anlamak için kullanılır. Depo yeri bazında depolama kullanımını ve hareket sıklığını analiz ederek depo yerleşimini ve iç lojistiği iyileştirebilirsiniz. Neden önemli? Bir Plant içindeki stok konumunu ayrıntılı biçimde göstererek iç hareketleri ve depolama verimliliğini analiz etmenize yardımcı olur. Nereden alınır? Malzeme belgesi kalem tablosu MSEG’de, LGORT (Depo yeri) alanında bulunur. Örnekler 0001RM01FG01QI01 | |||
| Hareket nedeni kodu MovementReasonCode | Envanter hareketinin nedenini belirten kod. | ||
| Açıklama Hareket nedeni kodu, bir mal hareketinin neden yapıldığına ilişkin ek bilgi sağlar. Envanter 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 envanter düzeltmelerinin nedenleri” Dashboardunda neden kodlarını analiz ederek hasar, hırsızlık veya veri giriş hataları gibi tutarsızlıkların nedenlerini ortaya çıkarabilirsiniz. Bu bilgi, işletmelerin yalnızca belirtileri düzeltmek yerine temel sorunları ele almasına yardımcı olur. Neden önemli? Planlanmamış envanter hareketlerinin nedenini açıklayarak hedefe yönelik 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 | |||
| Hareket türü MovementType | SAP’de mal hareketinin nasıl kaydedileceğini belirleyen üç basamaklı bir kod. | ||
| Açıklama Hareket türü, malzeme hareketinin özelliklerini belirleyen önemli bir kontrol kodudur. Hangi hesapların güncelleneceğini, işlem ekranının nasıl görüneceğini ve hangi miktar veya değer alanlarının güncelleneceğini belirtir. Örneğin, 101 mal girişi, 311 stok nakil kaydı, 551 ise hurdaya ayırma için kullanılır. Bu öznitelik, kullanıcıların anlayabileceği Aktivite adını türetmek için sıkça kullanılır. Süreçleri hareket türüne göre analiz etmek, envanter akışının teknik ayrıntılarını görmenizi sağlar. Süreç haritasının doğruluğunu kontrol etmek ve darboğazlara ya da sapmalara yol açabilecek belirli işlem türlerini belirlemek için gereklidir. Neden önemli? Her envanter olayını teknik açıdan kesin biçimde sınıflandırır. Bu, etkinlikleri türetmek ve ayrıntılı analiz yapmak için gereklidir. Nereden alınır? Malzeme belgesi kalem tablosu MSEG’de, BWART (Movement Type) alanında bulunur. Örnekler 101311261551601 | |||
| Kullanıcı adı UserName | SAP’de işlemi gerçekleştiren kişinin kullanıcı kimliği. | ||
| Açıklama Bu öznitelik, belgeyi kaydeden veya etkinliği gerçekleştiren çalışanın SAP kullanıcı kimliğini içerir. Envanter yönetimi sürecindeki belirli işlemlerden kimin sorumlu olduğunu göstererek izlenebilirlik sağlar. Performansı, uyumluluğu ve eğitim ihtiyaçlarını anlamak için kullanıcı bazında analiz yapmak önemlidir. Örneğin, 'Manuel envanter düzeltmelerinin nedenleri' Dashboardu, en çok 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ı takdir etmeye yardımcı olabilir. Neden önemli? Sorumluluğu netleştirir; kullanıcı davranışlarını, 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 (User Name) alanında bulunur. Örnekler JSMITHMBROWNWAREHOUSE_OPS | |||
| Malzeme numarası MaterialNumber | Yönetilen ürün veya malzeme için kullanılan benzersiz tanımlayıcı. | ||
| Açıklama Stok tutma birimi (SKU) olarak da bilinen malzeme numarası, belirli bir ürüne atanan benzersiz koddur. Envanter yönetimindeki temel ana veri öğelerinden biridir; malların miktarını, değerini ve hareketlerini izlemek için kullanılır. Process Mining’de malzeme numarasına göre analiz yapmak, envanter süreçlerini ürün bazında incelemenizi sağlar. Hangi ürünlerin kalite kontrolünde en uzun süre kaldığı, hangilerinin en sık hurdaya ayrıldığı veya hangilerinin en fazla tesis içi transfere konu olduğu gibi soruları yanıtlamanıza yardımcı olur. Bu ayrım, ürüne özgü sorunları belirlemek ve farklı mal türlerine yönelik envanter stratejilerini iyileştirmek için önemlidir. Neden önemli? Analizi ürünlere göre ayırarak belirli ürünlere özgü örüntüleri ve sorunları ortaya çıkarır. 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 | Envanter hareketine konu olan malzemenin miktarı. | ||
| Açıklama Bu öznitelik, belirli bir etkinlikte taşınan, alınan, verilen veya miktarı düzeltilen malzeme miktarını gösterir. Değer, malzemenin temel ölçü birimiyle kaydedilir. Miktarı analiz etmek, envanter süreçlerinin ölçeğini ve etkisini anlamak açısından önemlidir. Örneğin “SKU bazında mal çıkış hacmi” gibi, işlenen ürün miktarını gösteren Dashboardlar oluşturabilirsiniz. Bu öznitelik, “Hurdaya ayrılan/imha edilen stok oranı” gibi KPI’ları hesaplamak için de kullanılır. Böylece süreç analizine yalnızca olayları saymanın ötesinde nicel bir boyut kazandırır. Neden önemli? Her etkinlikteki malzeme miktarını ölçerek işlem hacmini, hurda miktarını ve 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 | |||
| Tesis Plant | Fabrika veya dağıtım merkezi gibi, envanterin bulunduğu tesisi temsil eden kuruluş birimi. | ||
| Açıklama Plant, SAP’te üretim tesisi, merkezi depo veya şirket merkezi gibi birimleri temsil edebilen temel bir organizasyon birimidir. Tüm envanter fiziksel ya da mantıksal olarak bir Plant içinde bulunur. Plant bazında analiz yapmak, farklı konumlardaki süreç performansını karşılaştırmanın temelidir. “Hangi tesiste depoya yerleştirme çevrim süresi en uzun?” veya “Plant A’daki envanter tutarsızlığı oranı Plant B’dekinden yüksek mi?” gibi soruları yanıtlamanıza yardımcı olur. Konum ya da organizasyon birimine göre yapılan bu ayrım, belirli konumlardaki sorunları saptamak ve iyi uygulamaları kuruluş genelinde paylaşmak için önemlidir. Neden önemli? Farklı şirket konumlarındaki envanter süreçlerini ve performansını karşılaştırmanızı sağlar. Nereden alınır? Malzeme belgesi kalem tablosu MSEG’de, WERKS (Plant) alanında bulunur. Örnekler 10001710DE01US01 | |||
| Depo gözü StorageBin | Malzemelerin fiziksel olarak bulunduğu depodaki en ayrıntılı depolama birimi. | ||
| Açıklama Depo gözü, raf konumu gibi depodaki belirli bir koordinatı ifade eder. Bu ayrıntı düzeyi genellikle SAP Warehouse Management (WM) veya Extended Warehouse Management (EWM) kullanıldığında sağlanır. “Depo alanı kullanım oranı” Dashboardu için bu öznitelik önemlidir. Depo alanının ne kadar verimli kullanıldığını analiz etmenizi, olası yoğunluk noktalarını belirlemenizi ve depoya yerleştirme ya da toplama rotalarındaki verimsizlikleri görmenizi sağlar. Depo gözleri arasındaki hareketleri analiz ederek depo yerleşimini iyileştirebilir ve çalışanların katettiği süreyi azaltabilirsiniz. Neden önemli? En ayrıntılı konum bilgisini sunarak depo alanı kullanımını ve operasyonel verimliliği analiz etmenizi sağlar. Nereden alınır? WM kullanıyorsanız bu bilgi LTAK/LTAP gibi transfer emri tablolarında bulunabilir. Envanter 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 alındığı kaynak sistemi belirtir. | ||
| Açıklama Bu öznitelik, envanter yönetimi verilerinin geldiği kayıt sistemini belirtir. Bu örnekte, belirli bir SAP S/4HANA örneğidir. Verilerin birden fazla ERP sisteminden, depo yönetim sisteminden veya eski platformdan alınabildiği ortamlarda bu bilgi önem taşır. Tek sistemli bir analizde sabit bir değer gibi görünse de farklı kaynaklardan gelen verileri birleştirerek süreçlerin bütününü görmek için gereklidir. Veri yönetişimine, veri çıkarma sorunlarının giderilmesine ve veri kökeninin açıkça izlenmesine yardımcı olur. Neden önemli? Verinin kaynağını gösterir; bu bilgi, veri yönetişimi ve birden fazla sistemin analiz edilmesi için gereklidir. Nereden alınır? Bu, belirli SAP S/4HANA örneğini tanımlamak için genellikle veri dönüştürme işlemi sırasında sabit olarak belirlenen bir değerdir. Örnekler S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
| Malzeme belgesi numarası MaterialDocumentNumber | Mal hareketini kaydeden malzeme belgesini tanımlayan benzersiz numara. | ||
| Açıklama SAP’te bir mal hareketi kaydedildiğinde sistem, hareketin kanıtı olarak bir malzeme belgesi oluşturur. Bu öznitelik, belgeyi benzersiz biçimde tanımlar. Tek bir malzeme belgesi birden fazla kalem veya etkinlik içerebilir. Process Mining analizinde malzeme belgesi numarası, birlikte kaydedilen ilişkili olayları gruplamak için kullanılabilen önemli bir işlem tanımlayıcısıdır. Ayrıca denetim yapmak ve belirli işlemleri incelemek üzere süreç analizinden kaynak sisteme ayrıntılı olarak geçmek için de gereklidir. Neden önemli? Denetimlerde işlem anahtarı olarak kullanılır ve birlikte gerçekleştirilen etkinlikleri 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üğü birim (ö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. Böylece miktar alanı için gerekli bağlam sağlanır. Bu öznitelik çoğu zaman yalnızca açıklama amacıyla kullanılsa da veri kalitesini korumak ve farklı birimlerin ortak bir standarda dönüştürülmesini gerektiren analizler yapmak için önemlidir. Örneğin hurdaya ayrılan envanterin toplam değerini doğru hesaplamak için farklı birimlerdeki miktarların anlaşılması ve gerekirse dönüştürülmesi gerekir. Neden önemli? “Miktar” özniteliğine gerekli bağlamı sağlayarak malzeme hacimlerini doğru yorumlamanıza yardımcı olur. Nereden alınır? Malzeme belgesi kalem tablosu MSEG’de, MEINS (Temel ölçü birimi) alanında bulunur. Örnekler AdetKilogramAdetMetre | |||
| Sipariş karşılama çevrim süresi OrderFulfillmentCycleTime | Toplamanın başlamasından ürünlerin teslimat için çıkışının yapılmasına kadar geçen süre. | ||
| Açıklama Bu metrik, “Toplama başlatıldı” etkinliği ile “Teslimat için mal çıkışı kaydedildi” etkinliği arasındaki toplam süreyi hesaplar. Süreç başladıktan sonra deponun müşteri siparişini hazırlayıp göndermesinin ne kadar sürdüğünü gösterir. Bu öznitelik, “Sipariş karşılama çevrim süresi” KPI’ını doğrudan ölçer. Süreyi analiz ederek müşteri taleplerine ne kadar hızlı yanıt verdiğinizi anlayabilirsiniz. Gecikmelerin toplama, paketleme ve sevkiyat sürecinin hangi aşamasında yaşandığını belirlemek için ürün, depo veya müşteri bazında inceleme yapabilirsiniz. Bu gecikmeler müşteri memnuniyetini ve lojistik verimliliğini doğrudan etkiler. Neden önemli? Depodan ürün çıkış sürecinin hızını ve verimliliğini ölçer. Bu, müşteri memnuniyetini etkileyen önemli bir faktördür. Nereden alınır? Bu, her parti için “Toplama başlatıldı” ve “Teslimat için mal çıkışı kaydedildi” olayları arasındaki süre hesaplanarak elde edilen bir özniteliktir. Örnekler 7200144003600 | |||
| Son kullanma tarihi ExpirationDate | Malzeme partisinin son kullanma tarihi; bu tarihten sonra malzeme kullanılamaz. | ||
| Açıklama Raf ömrü son kullanma tarihi (SLED), bozulabilir veya zamana duyarlı ürünler için önemli bir ana veri alanıdır. Parti düzeyinde yönetilir ve ürünün ne zaman satılamayacağını ya da tüketilemeyeceğini belirtir. Bu öznitelik, “Kullanım dışı ve son kullanma tarihi geçmiş stok analizi” Dashboardu için gereklidir. Etkinlikleri son kullanma tarihi bağlamında analiz ederek süresi dolma riski taşıyan partileri belirleyebilir ve önlem alabilirsiniz. İlk son kullanma tarihi, ilk çıkar (FEFO) gibi stok devir politikalarının ne kadar etkili olduğunu ölçmenize ve süresi geçmiş stokların hurdaya ayrılmasından kaynaklanan kayıpları hesaplamanıza yardımcı olur. Neden önemli? Kullanım dışı ve son kullanma tarihi geçmiş stokları analiz etmenizi sağlayarak israfı ve mali kayıpları azaltmaya yardımcı olur. Nereden alınır? Parti ana veri tabloları 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 kaydın verilerinin kaynak sistemden en son yenilendiği zamanı gösteren zaman damgası. | ||
| Açıklama Bu öznitelik, kaynak sistemden en son veri çıkarma veya güncelleme işleminin tarih ve saatini kaydeder. Analiz edilen bilgilerin ne kadar güncel olduğuna ilişkin önemli üst veriler sağlar. Böylece kullanıcılar gerçek zamana yakın verilere mi, yoksa önceki bir dönemin anlık görüntüsüne mi baktıklarını anlayabilir. İlgili ve doğru sonuçlara ulaşmak için verinin ne kadar güncel olduğunu bilmek önemlidir. Bu alan, analistlerin ve iş kullanıcılarının verilerin güncelliğini doğrulamasını sağlar ve sunulan içgörülere bağlam kazandırmak için genellikle Dashboardlarda gösterilir. Neden önemli? Verilerin güncelliğini göstererek 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) işlemi sırasında oluşturulup eklenir. Örnekler 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
| Stok türü StockType | Envanterin serbest kullanımda, kalite kontrolünde veya bloke durumda olması gibi durumunu belirtir. | ||
| Açıklama Stok türü, envanteri kullanılabilirliğine göre sınıflandırır. Başlıca türler serbest kullanım stoku (kullanıma açık), kalite kontrol stoku (kontrol bekleyen) ve bloke stoktur (kullanılamaz). Mal hareketleri çoğu zaman stok türünün değişmesini içerir. Stok türündeki değişiklikleri izlemek, envanterin kullanılabilir hâle gelme sürecini anlamanın temelidir. Bu bilgi, “Stok kalite kontrolüne aktarıldı” ve “Stok durumu bloke olarak değiştirildi” gibi etkinlikleri doğrudan destekler. Her stok türünde, özellikle de “kalite kontrolünde” geçen süreyi analiz etmek, ürünlerin satışa veya üretime sunulmasını geciktiren durumları belirlemek için önemlidir. Neden önemli? Envanterin kullanılabilirlik durumunu izleyerek kalite kontrolündeki gecikmeleri ve stok bulunabilirliğini analiz etmenizi sağlar. Nereden alınır? Malzeme belgesi kalem tablosu MSEG’de, INSMK (Stok türü) alanında bulunur. Örnekler Serbest kullanımKalite kontrolüBloke stok | |||
Envanter yönetimi etkinlikleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Depoya yerleştirme transferi kaydedildi | Partinin mal kabul veya hazırlık alanından nihai depolama konumuna ya da rafa fiziksel olarak taşınmasını ifade eder. SAP’de stok nakil kaydı içeren bir malzeme belgesi olarak tutulur. | ||
| Neden önemli? Mal kabul sürecini tamamlar. Depoya yerleştirme süresi olarak bilinen bu etkinliğin tamamlanma süresi, depo verimliliğini ölçen önemli bir KPI’dır. Nereden alınır? MATDOC tablosunda, genellikle depolama konumları arasında yapılan bir stok nakil kaydı olarak tutulur (ör. 311 hareket türü). Kullanılan hareket türü depo yapısına göre değişebilir. Kaydedin Stoku geçici veya mal kabul depolama konumundan nihai depolama konumuna aktaran MATDOC stok nakil belgeleriyle tanımlanır. Olay türü explicit | |||
| Envanter düzeltmesi kaydedildi | Fiziksel envanter sayımı veya başka bir tutarsızlık nedeniyle stok miktarında yapılan değişikliği kaydeder. Bu olay, kayıtlı envanter miktarını fiziksel sayım sonucuyla eşleştirmek için açıkça düzeltir. | ||
| Neden önemli? Bu düzeltmeler, envanter 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 tablosunda kaydedilir. Envanter artışı için 701 veya envanter kaybı için 702 gibi fiziksel envanter hareket türleriyle (BWART) tanımlanır. Kaydedin Fiziksel envanter düzeltme hareket türlerini (ör. 701, 702) içeren MATDOC malzeme belgelerinden alınır. Olay türü explicit | |||
| Kalite kontrolündeki stok serbest bırakıldı | Partinin kalite kontrolünden geçtiğini ve artık kullanılabileceğini veya depoya yerleştirilebileceğini belirtir. Bu işlem, kalite kontrolü stokundan serbest kullanıma açık başka bir stok türüne yapılan açık bir stok nakil kaydı olarak tutulur. | ||
| Neden önemli? Bu aşama, kalite sürecinin tamamlandığını ve envanterin kullanıma açıldığını gösterir. Buradaki gecikmeler üretim veya sipariş karşılama süreçlerinde önemli sorunlara yol açabilir. Nereden alınır? MATDOC tablosunda stok nakil kaydı olarak tutulur. Genellikle 321 hareket türüyle (BWART) tanımlanır; stok 'Quality Inspection' durumundan 'Unrestricted-use' durumuna aktarılır. Kaydedin 321 hareket türüne sahip MATDOC malzeme belgelerinden alınır. Olay türü explicit | |||
| Mal girişi kaydedildi | Envanter partisinin, genellikle bir tedarikçiden veya üretimden depoya ilk girişini belirtir. 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, envanter yaşam döngüsünün temel başlangıç olayıdır. Mal kabul rampasının verimliliğini ölçmek için bu etkinlikten depoya yerleştirme gibi sonraki etkinliklere kadar geçen süreyi analiz etmek önemlidir. Nereden alınır? MATDOC tablosunda kaydedilir. Satın alma siparişi teslimatları için 101 veya bloke stoğa mal girişi için 103 gibi belirli hareket türleriyle (BWART) tanımlanır. Kaydedin İlgili mal girişi hareket türleriyle birlikte MATDOC tablosundaki malzeme belgelerinden alınır. Olay türü explicit | |||
| Stok hurdaya ayrıldı | Bir envanter partisinin son kez elden çıkarılmasını ve envanter kayıtlarından kalıcı olarak silinmesini belirtir. Bu işlem genellikle son kullanma tarihi geçmiş, hasarlı veya modası geçmiş stoklar için yapılır. | ||
| Neden önemli? Bu, mali kaybı gösteren bir bitiş olayıdır. Hurdaya ayırma olaylarını analiz etmek; stokların eskimesi, elleçleme prosedürleri veya talep tahminiyle ilgili sorunları belirlemeye yardımcı olur. Nereden alınır? MATDOC tablosunda kaydedilir. Serbest kullanımdaki stok için 551, kalite kontrolündeki stok için 553 veya bloke stok için 555 gibi hurdaya ayırma hareket türleriyle (BWART) tanımlanır. Kaydedin Hurdaya ayırma hareket türlerini (ör. 551) içeren MATDOC malzeme belgelerinden alınır. Olay türü explicit | |||
| Teslimat için mal çıkışı kaydedildi | Partinin mülkiyetinin müşteriye veya taşıyıcıya devredildiği sevkiyat sürecinin son adımını kaydeder. Envanteri azaltan ve muhasebe kaydı oluşturan açık bir işlemdir. | ||
| Neden önemli? Bu, 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 tablosunda kaydedilir. Satış siparişi teslimatına mal çıkışını gösteren hareket türüyle (BWART), genellikle 601 ile tanımlanır. Kaydedin 601 hareket türüne sahip MATDOC malzeme belgelerinden alınır. Olay türü explicit | |||
| Üretim için mal çıkışı kaydedildi | Bir envanter partisinin üretim veya proses siparişi için tüketilmesini ifade eder. Bu işlem envanteri azaltır ve malzeme maliyetini üretim siparişine aktarır. | ||
| Neden önemli? Bu, temel bir tüketim olayıdır ve bileşenlerin envanter yaşam döngüsünün sonunu gösterir. Üretim için malzeme bulunabilirliğini ve tüketim örüntülerini analiz etmek açısından önemlidir. Nereden alınır? MATDOC tablosunda kaydedilir. Siparişe mal çıkışını gösteren 261 gibi hareket türleriyle (BWART) tanımlanır. Kaydedin 261 hareket türüne sahip MATDOC malzeme belgelerinden alınır. Olay türü explicit | |||
| Parti durumu değiştirildi | Parti ana kaydındaki bir değişikliği, örneğin durumun 'Unrestricted' durumundan 'Restricted' durumuna geçirilmesini ifade eder. Bu bir malzeme hareketi değildir; kayda alınan 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 gerektirmeyen 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. Kaydedin Parti ana kaydındaki durum alanına (MCH1-ZUSTD) ilişkin CDHDR/CDPOS değişiklik belgelerinden elde edilir. Olay türü inferred | |||
| Satış iadesi teslim alındı | Daha önce müşteriye gönderilen bir partinin depoya iade edilmesini kaydeder. Envanteri artıran açık bir işlemdir. | ||
| Neden önemli? İadeleri izlemek, ürün kalitesi sorunlarını ve müşteri memnuniyetsizliğini anlamak için önemlidir. İadelerin işlenmesi ve nasıl değerlendirileceğine karar verilmesi de verimsizlik yaratabilir. Nereden alınır? MATDOC tablosunda kaydedilir. Serbest kullanıma aktarılan 651 veya kalite kontrolüne aktarılan 653 gibi satış iadesi hareket türleriyle (BWART) tanımlanır. Kaydedin Satış iadesi hareket türlerini (ör. 651, 653) içeren MATDOC malzeme belgelerinden 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 mal çıkışına kapatıldığını ifade eder. SAP’de bu işlem açık bir stok nakil kaydıdır. | ||
| Neden önemli? Envanterin kullanılamadığı kesintileri gösterir. Stok 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 tablosunda stok nakil kaydı olarak tutulur. Stoku 'Blocked' durumundan 'Unrestricted' durumuna geçirmek için genellikle 344, 'Unrestricted' durumundan 'Blocked' durumuna geçirmek için 343 hareket türü (BWART) kullanılır. Bu etkinlik 343 hareket türüne karşılık gelir. Kaydedin 343 hareket türüne sahip MATDOC malzeme belgeleriyle tanımlanır. Olay türü explicit | |||
| Stok durumu serbest kullanıma açıldı | Partinin bloke veya kalite kontrolü bekleme durumundan çıkarılarak kullanıma açıldığını ifade eder. Bu işlem, açık bir stok nakil kaydı olarak tutulur. | ||
| Neden önemli? Bu etkinlik, envanter üzerindeki bekletmenin kaldırıldığını gösterir. Çözüm süreçlerini iyileştirmek için stokun bloke durumda kaldığı süre analiz edilebilir. Nereden alınır? MATDOC tablosunda stok nakil kaydı olarak tutulur. 344 hareket türü (BWART), stoku 'Blocked' durumundan 'Unrestricted-use' durumuna geçirir. Kaydedin 344 hareket türüne sahip MATDOC malzeme belgeleriyle tanımlanır. Olay türü explicit | |||
| Stok kalite kontrolüne aktarıldı | Teslim alınan bir partinin kalite kontrolü bekleme durumuna alınmasını ve onaylanana kadar kullanılamamasını ifade eder. SAP’de bu işlem, partinin stok türünü değiştiren açık bir işlem olarak kaydedilir. | ||
| Neden önemli? Bu etkinlik kalite kontrol sürecini başlatır. Kalite kontrolüne alınma ile serbest bırakılma arasındaki süre, kalite kaynaklı gecikmeleri anlamak için önemli bir metriktir. Nereden alınır? MATDOC tablosunda kaydedilir. Stok türü (INSMK) 'Q' (Quality Inspection) olarak ayarlanmış bir mal girişi hareketi (ör. 101) veya bir stok nakil kaydı (ör. 322) olabilir. Kaydedin Envanteri 'Quality Inspection' stok türüne aktaran MATDOC malzeme belgeleriyle tanımlanır. Olay türü explicit | |||
| Tesis içi stok transferi kaydedildi | Bir envanter partisinin aynı tesisteki farklı depolama konumları veya raflar arasında taşınmasını kaydeder. Bu işlem, malzeme belgesi oluşturan açık bir işlemdir. | ||
| Neden önemli? Tesis içi transferleri izlemek, depo operasyonlarının verimliliğini analiz etmeye, gereksiz hareketleri belirlemeye ve konumlar arasındaki stok ikmal süresini ölçmeye yardımcı olur. Nereden alınır? MATDOC tablosunda kaydedilir. Depolama konumları arasındaki transferler genellikle 311 hareket türüyle (BWART) tanımlanır. Kaydedin Tesis içi stok hareketlerine ait hareket türlerini (ör. 311) içeren MATDOC malzeme belgelerinden alınır. Olay türü explicit | |||
| Toplama başlatıldı | Depo görevlisinin bir partiyi bulunduğu raftan toplaması için depo görevi oluşturulduğunda sipariş karşılama sürecinin başladığını belirtir. Bu olay genellikle bir Transfer Order veya Warehouse Task oluşturulduğunda kaydedilir. | ||
| Neden önemli? Bu etkinlik, toplama sürecini başlatır. Depo çalışanlarının verimliliğini ölçmek ve gecikmeleri belirlemek için bu olaydan toplamanın tamamlanmasına kadar geçen süre analiz edilebilir. Nereden alınır? Bu bilgi genellikle MATDOC tablosunda bulunmaz. Warehouse Management (WM/EWM) kullanılan sistemlerde Transfer Order’ın (LTAK tablosu) veya Warehouse Task’ın oluşturulma zaman damgasından çıkarılır. Kaydedin Malzeme partisiyle bağlantılı bir Transfer Order’ın (WM’de) veya Warehouse Task’ın (EWM’de) oluşturulma 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ı hesabınız olduğundan emin olun. Bu erişim genellikle sistem yöneticisi tarafından verilir.
- Bir SQL istemcisi seçin: SAP HANA veritabanına bağlanabilen bir SQL istemcisi seçin. SAP HANA Studio, SAP HANA Database Explorer veya DBeaver gibi üçüncü taraf araçları yaygın seçeneklerdir.
- Veritabanı bağlantısını yapılandırın: SQL istemcinizden yeni bir veritabanı bağlantısı oluşturun. HANA veritabanı ana bilgisayar adını, bağlantı noktasını (genellikle 3<instance_number>15) ve veritabanı kullanıcı bilgilerinizi girmeniz gerekir.
- SQL sorgusunu hazırlayın: Bu belgenin “query” bölümündeki SQL sorgusunun tamamını kopyalayıp SQL istemcinizin düzenleyicisine yapıştırı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'şeklinde değiştirin. AyrıcaMaterialDocumentItem.Plant IN ('Plant1', 'Plant2')gibi şirket veya Plant’e özgü filtreleri kuruluş yapınıza göre güncelleyin. - Sorguyu çalıştırın: Değiştirdiğiniz SQL sorgusunu S/4HANA veritabanında çalıştırın. Çalışma süresi, tarih aralığına ve sisteminizdeki envanter verisi miktarına göre değişir.
- Verileri inceleyin: Sorgu tamamlandığında sonuçların doğru ve eksiksiz göründüğünden emin olmak için SQL istemcinizde inceleyin. Farklı etkinliklerin ve temel özniteliklerin dolu olup olmadığını 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ı kullanın.
- Yükleme için hazırlayın: CSV dosyasındaki sütun adlarını sorguda tanımlanan takma adlarla birebir aynı yapın. Örneğin
InventoryBatchLot,ActivityName,EventTimeve benzeri adları kullanın. Dosyanız artık bir Process Mining aracına yüklenmeye hazır.
Yapılandırma
- Yetkilendirmeler: Sorguyu çalıştıran kullanıcının şu CDS görünümlerinde
SELECTizni olmalıdır:I_MaterialDocumentItem,I_BatchChangeDocumentveI_WarehouseTask. Bu görünümlerin bulunduğu temel veritabanı şemasına erişim de gerekir. - Tarih aralığı filtresi:
PostingDate,ChangeDocumentCreationDateveyaWarehouseTaskCreationDatealanlarına tarih aralığı filtresi uygulayın. Analiz için genellikle 3 ila 12 aylık bir aralık uygundur. Birkaç yıllık veriyi sorgulamak ciddi performans sorunlarına yol açabilir. - Organizasyon filtreleri: Performansı artırmak ve analizi hedeflemek için
PlantveyaCompanyCodealanlarına göre filtreleyenWHEREkoşulları ekleyin. Böylece veri hacmi azalır ve yalnızca işletmenin ilgili bölümlerine odaklanılır. - Veri hacmi: Envanter yönetimi sistemlerinin büyük miktarda veri ürettiğini göz önünde bulundurun. Geniş bir tarih aralığı milyonlarca satır döndürebilir ve hem veri çıkarma sırasında kaynak sistemi hem de istemci aracınızın performansını etkileyebilir.
- Extended Warehouse Management (EWM): “Toplama başlatıldı” etkinliği, yalnızca SAP Extended Warehouse Management kullanıyorsanız veri içeren
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.
Ö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 veri çıkarma kullanıcısının MATDOC ile sistemin gerektirdiği parti ana veri tablolarını okuyabildiğini doğrulayın. Fiziksel şema sahibini belirleyin ve [Your SAP HANA schema] yer tutucusunu onaylı şema adıyla değiştirin.
- Hedef SAP S/4HANA sürümünde kullanılabilen MATDOC ve parti tablosu alanlarını doğrulayın. Aşağıdaki sorguda yaygın olarak bulunan MATDOC ve MCHA alanları kullanılır; ancak alanların kullanılabilirliği ve adları sürüme, dağıtıma ve etkinleştirilen kapsama göre değişebilir. Çalıştırmadan önce [Configure based on your system] olarak işaretlenen alanları değiştirin.
- [Start timestamp] ve [End timestamp] değerlerini ISO zaman damgası değerleriyle değiştirerek veri çıkarma dönemini belirleyin. İlk veri çıkarma için üç ila altı aylık bir dönem kullanın; veri hacmini ve performansı doğruladıktan sonra aralığı genişletin.
- Sorguyu onaylı bir SQL istemcisinde, SAP HANA Database Explorer’da veya eşdeğer yetkili bir veritabanı aracında çalıştırın. İlgili filtre yer tutucularını değiştirerek sonuçları gerekli şirket kodları, Plant’ler, belge türleri veya hareket türleriyle sınırlandırın.
- Etkinlik CTE’sindeki hareket türü eşlemesini gözden geçirin. Hareket türleri sistem yapılandırmasına ve iş kurallarına bağlıdır. Örnek hareket türü listelerini hedef sistemde mal kabulü, kalite kontrolü, serbest bırakma, depoya yerleştirme, iç transfer, bloke stok, serbest kullanım stoku, envanter 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 ölçüde tutarlı olduğunu kontrol edin. İş gereksinimleri aynı parti değerlerini organizasyon birimleri arasında ayırt etmek için malzeme, Plant veya depo yeri gerektiriyorsa yalnızca parti değerini kullanmak 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ı içerdiğinden, açıkça hariç tutulmadıkları veya eşlenmedikleri sürece ters kayıt ve iptal kayıtları ayrı olaylar olarak görünebilir.
- Sorgu sonucunu her satırda bir olay olacak şekilde düz dosyaya aktarın. Sütunlar InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity ve MovementReasonCode olmalıdır. Zaman damgalarını tutarlı bir ISO 8601 biçiminde saklayın; malzeme, parti, Plant ve depo yeri değerlerindeki baştaki sıfırları koruyun.
- Ortaya çıkan Event Logu ProcessMind’e yükleyin; InventoryBatchLot alanını vaka kimliği, ActivityName alanını etkinlik ve EventTime alanını olay zaman damgası olarak eşleyin. Etkinlikleri çıkarsamak, kayıtları birleştirmek veya eksik olayları türetmek için ProcessMind’e güvenmeyin.
Yapılandırma
- Veri çıkarma yöntemi: SAP HANA envanter ve parti verilerini doğrudan SQL sorgusuyla alın. Sorgu MATDOC verilerini okur ve MCHA’daki parti ana verileriyle birleştirir. MCH1’i veya başka bir parti tablosunu yalnızca hedef sistemde ilgili alanları ve parti düzeyini doğruladıktan sonra ekleyin.
- Tarih aralığı: Üç ila altı ayla başlayın. EventTime değerini MATDOC’ta bulunan malzeme belgesi kayıt tarihi ve saatine göre belirleyin. Artımlı yüklemelerde geç kaydedilen işlemleri yakalamak için kontrollü bir örtüşme aralığı kullanın; ardından yapılandırılmış belge ve kalem tanımlayıcılarına göre yinelenen kayıtları kaldırın.
- Gerekli filtreler: Şirket kodunu, Plant’i, malzeme belgesi türünü, hareket türünü, parti değerinin bulunup bulunmadığını ve kayıt tarihini süreç kapsamına göre yapılandırın. Sorguya eklemeden önce şirket kodu ve belge türü alanlarını kurulu sürümde doğrulayın.
- Etkinlik eşlemesi: Hareket türlerinin anlamı yapılandırmaya bağlıdır. Onaylı bir eşleme tablosu kullanın veya sorgudaki hareket türü listelerini işletmenin kullandığı değerlerle değiştirin. Örnek listeleri tüm SAP sistemleri için geçerli kabul etmeyin.
- Parti kapsamı: Vaka kimliği InventoryBatchLot olduğundan sorgu, parti değeri bulunmayan satırları hariç tutar. Partinin başka bir kaynaktan türetilmesi gerekiyorsa veri çıkarmadan önce bu kaynağı açıkça yapılandırın.
- Olay ayrıntı düzeyi: Koşulları karşılayan her MATDOC kalemi tek bir olay satırı olarak çıkarılır. Sorgu, sonraki kayıtlardan toplama, kalite kararları, parti durumu değişiklikleri veya başka etkinlikler çıkarımı yapmaz.
- Parti ana verisi değişiklikleri: Parti durumu değişiklikleri yalnızca MATDOC verileriyle güvenilir biçimde gösterilemez. “Parti durumu değişti” etkinliği için değişiklik belgesi veya parti geçmişi kaynağı yapılandırın. Sorguda yer alan yer tutucu dalı çalıştırmadan önce doğrulanmış bir kaynağa bağlayın.
- Toplama: Toplamanın başlatılması 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ına veya tarihine, Plant’e, şirket koduna ve ilgili hareket türlerine göre filtre uygulayın. Yalnızca gerekli sütunları seçin, kısıtlanmamış geçmiş veri taramalarından kaçının ve sorguyu onaylı bir iş yükü aralığında çalıştırın. Büyük MATDOC hacimleri için bölümlere ayrılmış veya artımlı veri çıkarma önerilir.
- Yetkilendirmeler ve ön koşullar: Onaylı veritabanı bağlantısı, şema erişimi, okuma yetkisi, SAP S/4HANA envanter verilerine erişim ve MATDOC dışındaki iki etkinlik için kullanılan depo yürütme ya da değişiklik geçmişi kaynaklarına erişim sağlayın. Doğrudan veritabanı erişiminin kuruluşunuzun 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 eklemeyin.
Ö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 düzenleyicisini açın: SAP S/4HANA sisteminize giriş yapın.
SE38işlem kodunu kullanarak ABAP düzenleyicisini açın. - Yeni bir program oluşturun: Yeni programın adını 'Program' alanına girin. Örneğin,
Z_PM_INVENTORY_EXTRACTyazıp 'Oluştur' düğmesine tıklayın. Açıklayıcı bir başlık girin, 'Tür' alanında 'Yürütülebilir Program' seçeneğini belirleyin ve programı bir pakete kaydedin. - Program parametrelerini tanımlayın: Program düzenleyicisinde, veri çı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.
- Veri çıkarma mantığını uygulayın: 'Sorgu' bölümünde verilen ABAP kodunun tamamını kopyalayıp ABAP düzenleyicisine yapıştırın. Bu kod, çeşitli SAP tablolarından envanterle ilgili 14 etkinliğin verilerini seçmek üzere tasarlanmıştır.
- Temel mantığı anlayın: Program, her envanter etkinliğine ait verileri kaynak tablolardan seçer. Örneğin, malzeme hareketleri için
MKPFveMSEG, ana veri değişiklikleri içinCDHDRveCDPOStablolarını kullanır. Ardından her seçimUNION ALLile tek bir dahili tabloda birleştirilir. Bu tablo, olay günlüğünü oluşturur. - Dosya çıktısını yapılandırın: Kodun son bölümü, dahili tablodaki birleştirilmiş verileri dosyaya yazar. SAP uygulama sunucusunda dosya oluşturmak için
OPEN DATASETifadesini kullanır. SAP sistem kullanıcısının yazma izni olan 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 ya da şirket kodu gibi diğer ilgili filtreleri girin.
- Arka plan işi olarak çalıştırın: Büyük miktarda veri işlerken oturum zaman aşımını önlemek için programı arka plan işi olarak çalıştırmanız önemlidir. Çalıştırma ekranında (F8)
Program -> Arka Planda Yürütmenüsüne gidin. İşi yoğun olmayan saatlerde çalışacak şekilde planlayın. - Çıktı dosyasını alın: İş tamamlandığında çıktı dosyasını SAP uygulama sunucusunda bulun. Sunucu dizinlerine göz atıp 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: İndirdiğiniz dosyayı bir metin düzenleyicide veya elektronik tablo yazılımında açın. Dosyanın başlık satırı içeren bir CSV biçiminde, ayırıcı olarak virgül ve metin sınırlayıcısı olarak çift tırnak kullanılarak biçimlendirildiğinden 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ığı: En önemli parametre budur. Performansı korumak ve sistem zaman aşımını önlemek için verileri 3-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. Tüm tesisler için aynı anda veri çıkarmak sistem kaynaklarını aşırı ölçüde 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 şirket kodu (
BUKRS) filtresi ekleyebilirsiniz. - Uygulama sunucusu dosya yolu: ABAP programı için SAP uygulama sunucusunda önceden tanımlanmış, geçerli bir dizin yolu gerekir. SAP sistem kullanıcısının (
SY-UNAME) bu dizine dosya yazmak için gerekli işletim sistemi izinlerine sahip olduğundan emin olun. - Yetkiler: Veri çıkarma işlemini yapan kullanıcının programı oluşturup çalıştırmak için
SE38işlemine,MKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKveLTAPtablolarını görüntüleme yetkisine ve arka plan işleri planlama (SM36/SM37) iznine sahip olması gerekir.
Ö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 envanter yönetimi operasyonlarınıza ilişkin değerli içgörüler elde etmek için bu Templateten yararlanın. Verimliliği artırıp maliyetleri azaltmak için bugün başlayın.
SAP S/4HANA’da envanter yönetiminizi iyileştirin
Verimsizlikleri belirleyin, çevrim süresini %30 azaltın ve maliyetlerden tasarruf edin.
Kredi kartı gerekmez • Kurulumu dakikalar içinde tamamlayın