Üretim planlaması Veri Templateiniz
Üretim planlaması Veri Templateiniz
- Toplanması önerilen öznitelikler
- İzlenecek önemli etkinlikler
- Veri dışa aktarma önerileri
Üretim planlaması öznitelikleri
| Ad | Açıklama | ||
|---|---|---|---|
| Etkinlik adı ActivityName | Üretim emri için belirli bir zamanda gerçekleşen iş veya sistem olayının adı. | ||
| Açıklama Etkinlik adı, Üretim Planlama sürecindeki belirli bir adımı veya durum değişikliğini tanımlar. Bu olaylar SAP ECC PP içindeki değişiklik günlüklerinden, durum güncellemelerinden ve işlem kayıtlarından çıkarılır. 'Üretim emri oluşturuldu', 'Malzeme bulunabilirliği kontrol edildi' veya 'Mal girişi kaydedildi' gibi önemli aşamaları gösterir. Bu öznitelik, süreç haritasının temelini oluşturur. Analistlerin olay sırasını görselleştirmesine, süreç çeşitlerini keşfetmesine ve darboğazları ya da yeniden çalışma döngülerini belirlemesine yardımcı olur. Operasyonların gerçeğe uygun ve anlamlı bir süreç modelini oluşturmak için etkinlik adlarının açık ve ayrıntılı olması gerekir. Neden önemli? Süreç haritasındaki adımları tanımlar; böylece üretim iş akışını görselleştirebilir, analiz edebilir ve anlayabilirsiniz. Nereden alınır? JEST/JSTO tablolarındaki durum değişiklikleri, işlem günlükleri ve CDHDR/CDPOS değişiklik belgeleri dâhil çeşitli kaynaklardan oluşturulur. Örnekler Üretim emri serbest bırakıldıMalzeme çıkışı kaydedildiSon teyit kaydedildiEmir teknik olarak tamamlandı | |||
| Olay zamanı EventTime | Etkinliğin gerçekleştiği zamanı gösteren kesin zaman damgası. | ||
| Açıklama Olay zamanı, belirli bir etkinliğin yürütüldüğü veya bir durumun sisteme kaydedildiği tarih ve saati belirtir. Çevrim sürelerini, bekleme sürelerini ve toplam süreç süresini hesaplamak dâhil zamana dayalı tüm süreç analizlerinin temelini oluşturur. Olayları doğru sıraya koymak ve performansı analiz etmek için zaman damgalarının doğru olması gerekir. Analistlerin etkinlikler arasındaki süreyi ölçmesine, gecikmeleri belirlemesine ve performansı planlarla ya da hizmet seviyesi anlaşmalarıyla karşılaştırmasına olanak tanır. Üretim planlamasında her planlama ve yürütme aşamasının ne kadar sürdüğünü anlamaya yardımcı olur. Neden önemli? Bu öznitelik olayların kronolojik sırasını gösterir. Süreleri hesaplamak, performansı analiz etmek ve darboğazları belirlemek için gereklidir. Nereden alınır? İşlemler ve durum değişiklikleriyle ilişkili çeşitli tarih ve saat alanlarından elde edilir. Bunlara malzeme belgelerindeki BUDAT (Kayıt tarihi) veya CDHDR içindeki değişiklik zaman damgaları örnek verilebilir. Örnekler 2023-04-15T10:05:30Z2023-04-15T14:22:00Z2023-04-18T08:59:11Z2023-04-20T16:45:00Z | |||
| Üretim emri ProductionOrder | Üretim emrinin benzersiz tanımlayıcısıdır ve üretim planlama ve yürütme sürecinde birincil vaka tanımlayıcısı olarak kullanılır. | ||
| Açıklama Üretim emri numarası, SAP ECC PP içindeki her üretim emrine atanan benzersiz alfanümerik anahtardır. Oluşturma ve planlamadan yürütme ve son mutabakata kadar ilgili tüm etkinlikleri birbirine bağlayan merkezi nesne görevi görür. Process Mining çalışmalarında bu öznitelik, tek bir üretim çalışmasına ait tüm olayları gruplamak için gereklidir. Böylece üretim emrinin tüm yaşam döngüsünü uçtan uca analiz edebilir, ilerlemesini izleyebilir, çevrim sürelerini ölçebilir ve standart süreçten sapmaları belirleyebilirsiniz. Üretim emirlerine göre yapılan analiz, tek tek üretim taleplerinin nasıl karşılandığını açıkça gösterir. Neden önemli? Bu temel tanımlayıcı, ilgili tüm süreç olaylarını birbirine bağlar ve her üretim sürecini başından sonuna kadar yeniden oluşturup analiz etmenizi sağlar. Nereden alınır? Bu öznitelik, SAP AUFK tablosunun AUFNR alanında bulunur. Örnekler 1000345100034610003471000348 | |||
| Kaynak sistem SourceSystem | Verilerin hangi sistemden çıkarıldığını belirtir. | ||
| Açıklama Bu öznitelik, kaydın kaynak sistemini, örneğin belirli SAP ECC örneğinin adını veya kimliğini belirtir. Birden fazla ERP sistemi ya da eski ve modern platformların birlikte kullanıldığı kuruluşlarda bu alan, veri kökenini ve bağlamını anlamak açısından önemlidir. Analizde süreçleri kaynak sisteme göre filtrelemenizi sağlar. Farklı sistemlerdeki süreç performansını karşılaştırmak veya birden fazla sistemden gelen verileri birleştirme projelerinde belirli verileri ayırmak için kullanılabilir. Neden önemli? Özellikle birden fazla SAP örneğinin veya entegre sistemlerin bulunduğu ortamlarda verinin kaynağı hakkında önemli bağlam sağlar. Nereden alınır? Genellikle veri çıkarma sırasında eklenir ve çoğu zaman SAP sistem kimliğinden (SY-SYSID) alınır. Örnekler ECC_PROD_100S4H_FIN_200ECC_DE | |||
| Son veri güncellemesi LastDataUpdate | Bu olaya ait verilerin en son yenilendiği veya çıkarıldığı zamanı gösteren zaman damgası. | ||
| Açıklama Bu öznitelik, verilerin kaynak sistemden Process Mining aracına aktarıldığı tarih ve saati kaydeder. Bir iş olayını değil, veri yönetimi amacıyla kullanılan teknik bir zaman damgasını gösterir. Temel amacı, verilerin güncelliğini doğrulamak ve yöneticilerle analistlerin inceledikleri verilerin ne kadar yeni olduğunu anlamasına yardımcı olmaktır. Özellikle devam eden operasyonlar izlenirken süreç analizinin güncel bilgilere dayandığını doğrulamak için önemlidir. Neden önemli? Verilerin güncel olduğunu doğrular ve analizlerin mevcut en yeni bilgilere dayanmasını sağlar. Nereden alınır? Bu değer genellikle veri alma işlemi sırasında veri çıkarma, dönüştürme ve yükleme (ETL) aracı veya betiği tarafından oluşturulur ve eklenir. Örnekler 2023-10-27T02:00:00Z2023-10-28T02:00:00Z2023-10-29T02:00:00Z | |||
| Fiilî başlangıç tarihi ActualStartDate | Kaydedilen ilk üretim etkinliğinin zaman damgası; yürütmenin fiilî başlangıcını gösterir. | ||
| Açıklama Fiilî başlangıç tarihi, fiziksel üretim çalışmasının başladığını gösteren ilk olayın zaman damgasıdır. Genellikle ilk üretim teyidinden veya emir için ham maddelerin ilk mal çıkışından elde edilir. Bu türetilmiş öznitelik, plana uyum analizinde gereklidir. Planlanan başlangıç tarihiyle karşılaştırma için fiilî başlangıç noktasını verir ve başlangıç zamanı farklarının doğru hesaplanmasını sağlar. Planlanan ve fiilî başlangıç tarihleri arasındaki farkı anlamak; malzeme hazırlığı, makine kurulumu veya kaynak bulunabilirliğiyle ilgili üretim öncesi gecikmelerin nedenini belirlemeye yardımcı olur. Neden önemli? Üretim yürütmesinin gerçek başlangıç noktasını gösterir; başlangıç gecikmelerini ve toplam üretim tedarik süresini doğru hesaplamanızı sağlar. Nereden alınır? Her üretim emri için 'İlk teyit kaydedildi' veya 'Malzeme çıkışı kaydedildi' gibi belirli yürütme etkinliklerinin en erken zaman damgası bulunarak Event Logdan elde edilir. Örnekler 2023-05-11T08:30:00Z2023-06-22T14:00:00Z2023-07-02T09:15:00Z | |||
| Fiilî bitiş tarihi ActualEndDate | Son üretim etkinliğinin zaman damgası; emrin fiilen tamamlandığını gösterir. | ||
| Açıklama Gerçek Bitiş Tarihi, bir siparişin tüm üretim faaliyetlerinin tamamlandığını gösteren olayın zaman damgasıdır. Genellikle 'Son Teyit Kaydedildi' veya son 'Mal Girişi Kaydedildi' olayının zaman damgasından elde edilir. Bu öznitelik, toplam üretim çevrim süresini ölçmek ve programa uyumu analiz etmek için gereklidir. 'Gerçek Bitiş Tarihi' ile 'Planlanan Bitiş Tarihi' karşılaştırılarak siparişin zamanında tamamlanıp tamamlanmadığı belirlenir. 'Gerçek Başlangıç Tarihi' ile 'Gerçek Bitiş Tarihi' arasındaki süre analiz edilerek üretimin gerçek tamamlanma süresi hesaplanır. Neden önemli? Üretimin tamamlandığını gösterir; zamanında teslimat performansının ve toplam yürütme süresinin doğru ölçülmesini sağlar. Nereden alınır? Olay günlüğündeki 'Son Teyit Kaydedildi' veya 'Mal Girişi Kaydedildi' gibi önemli tamamlanma etkinliklerinin en yüksek zaman damgası bulunarak elde edilir. Örnekler 2023-05-14T16:00:00Z2023-06-29T11:30:00Z2023-07-05T17:00:00Z | |||
| Planlanan miktar PlannedQuantity | Emirde üretilmesi planlanan toplam ürün miktarı. | ||
| Açıklama Planlanan miktar, planlama aşamasında belirlenen üretim emri hedefini gösterir. Gerçek üretim miktarı bu değerle karşılaştırılır. Bu öznitelik, 'Planlanan ve gerçekleşen miktar farkı' gibi üretim performansı ve plana uyumla ilgili temel performans göstergelerinin hesaplanmasında kullanılır. Üretim planlamasının doğruluğunu değerlendirmeye ve fazla ya da eksik üretimle ilgili sistematik sorunları belirlemeye yardımcı olur. Üretimin ilk planla ne ölçüde örtüştüğünü anlamak için bu değeri analiz etmek gerekir. Neden önemli? Bu öznitelik, üretim miktarındaki farkı ölçmek ve planlama doğruluğunu değerlendirmek için temel alınır. Nereden alınır? SAP AFKO tablosunun GAMNG (Toplam emir miktarı) alanında bulunur. Örnekler 1005000751250 | |||
| Teslim edilen miktar DeliveredQuantity | Üretilip envantere alınan ürünün fiilî miktarı. | ||
| Açıklama Mal girişi miktarı olarak da bilinen teslim edilen miktar, belirli bir üretim emri için üretilmiş olduğu teyit edilen mamullerin toplam miktarıdır. 'Mal girişi kaydedildi' olayları gerçekleştiğinde güncellenir. Bu öznitelik, 'Planlanan miktar' değerinin karşılığıdır ve 'Planlanan ve gerçekleşen miktar farkı' temel performans göstergesini hesaplamak için gereklidir. Üretim çıktısını kesin olarak ölçmenizi ve hurda, verim kaybı veya başka üretim sorunlarından kaynaklanabilecek farkları belirlemenizi sağlar. Tesisler, ürünler veya dönemler arasındaki teslim edilen miktarları karşılaştırarak verimlilik sorunlarının yaşandığı alanları görebilirsiniz. Neden önemli? Üretim sürecinin fiilî çıktısını ölçer ve performansı değerlendirmek için planlanan hedeflerle doğrudan karşılaştırma yapmanızı sağlar. Nereden alınır? SAP AFPO tablosunun WEMNG (Mal girişi miktarı) alanında bulunur. Örnekler 984950751255 | |||
| Üretim tesisi ProductionPlant | Üretim emrinin yürütüldüğü üretim tesisi veya konum. | ||
| Açıklama Üretim tesisi, SAP içinde bir üretim tesisini temsil eden temel bir organizasyon birimidir. Her üretim emrine atanır ve üretim etkinliklerinin fiziksel olarak nerede gerçekleşeceğini belirler. Süreci üretim tesisine göre analiz ederek farklı konumlardaki performansı karşılaştırabilirsiniz. Böylece hangi tesislerin daha verimli olduğunu, hangilerinde daha fazla gecikme veya malzeme eksikliği yaşandığını ve iyi uygulamaların nerelerde paylaşılabileceğini belirleyebilirsiniz. İşlem hacmi ve kaynak kullanımıyla ilgili Dashboardlarda temel bir analiz boyutudur. Neden önemli? Farklı üretim tesislerinin performansını karşılaştırmanızı, tesise özgü sorunları veya iyi uygulamaları belirlemenizi sağlar. Nereden alınır? Bu öznitelik, SAP AUFK tablosunun WERKS alanında saklanır. Örnekler 100017102000DE01 | |||
| Ürün kodu ProductCode | Üretilen malzeme veya ürünün benzersiz tanımlayıcısı. | ||
| Açıklama Ürün kodu veya malzeme numarası, üretim emrinde üretilmesi planlanan ürünü tanımlar. Üretim planlamasını envanter yönetimi, satış ve maliyet hesaplamalarına bağlayan temel bir ana veri öğesidir. Process Mining çalışmalarında ürün koduna göre filtreleme veya segmentlere ayırma, ürüne özgü üretim süreçlerini anlamak açısından önemlidir. 'Hangi ürünlerin çevrim süresi en uzun?' veya 'Bazı ürünlerde kalite sorunları ya da malzeme gecikmeleri daha mı sık yaşanıyor?' gibi soruları yanıtlamaya yardımcı olur. Bu analiz, ürün portföyü yönetimi ve belirli malzeme türlerine yönelik süreçleri standartlaştırma ya da iyileştirme fırsatlarını belirleme açısından fayda sağlar. Neden önemli? Ürüne özgü süreç analizi yapmanızı sağlar; süreç verimsizlikleri, gecikmeler veya yüksek maliyetlerle ilişkili malzemeleri ortaya çıkarır. Nereden alınır? SAP AFPO tablosunun MATNR alanında bulunur. Örnekler FG-123RM-45AHALB-7890CHEM-22 | |||
| Malzeme kullanılabilirliği MaterialAvailabilityStatus | Üretim siparişi için gerekli tüm bileşenlerin kullanılabilir olup olmadığını gösterir. | ||
| Açıklama Malzeme Kullanılabilirliği Durumu, üretime hazır olma düzeyini gösteren önemli bir ölçüttür. Sistem, sipariş için gereken tüm bileşen malzemelerin kullanılabilirliğini kontrol ederek bu durumu belirler. 'Kullanılabilir' durumu, üretimin malzeme kaynaklı gecikme olmadan ilerleyebileceğini; 'Eksik' durumu ise bir sorun olduğunu gösterir. Bu öznitelik, 'Malzeme Eksikliğinin Etki Analizi' Dashboardu için gereklidir. Siparişlerin malzeme eksikliği nedeniyle beklediği süreyi analiz ederek tedarik zinciri sorunlarının üretim programlarına etkisini ölçebilirsiniz. Böylece sık gecikmeye yol açan güvenilir olmayan tedarikçileri veya sorunlu bileşenleri belirleyebilirsiniz. Neden önemli? Üretim programındaki sapmaların yaygın ve önemli nedenlerinden biri olan malzeme eksikliğinden kaynaklanan gecikmeleri doğrudan gösterir. Nereden alınır? Bu bilgi tek bir alanda saklanmaz; kullanılabilirlik kontrolünün (ATP kontrolü) sonucudur. Sonuçlar genellikle CO02 işleminde veya toplu kullanılabilirlik kontrolü COHV’de görülebilir. Durumun kendisi (ör. MACM - Malzeme taahhüt edildi) günlüğe kaydedilmiş olabilir. SAP ECC PP belgelerine başvurun. Örnekler KullanılabilirEksikKısmen kullanılabilirKontrol edilmedi | |||
| Miktar farkı QuantityVariance | Planlanan üretim miktarı ile fiilen teslim edilen miktar arasındaki fark. | ||
| Açıklama Miktar Farkı, üretim çıktısının ilk plandan ne kadar saptığını ölçen hesaplanmış bir metriktir. 'Teslim Edilen Miktar' eksi 'Planlanan Miktar' olarak hesaplanır. Pozitif fark fazla üretimi, negatif fark ise eksik üretimi veya verim kaybını gösterir. Bu öznitelik, 'Planlanan ve Gerçekleşen Üretim Çıktısı' Dashboardu ve ilgili KPI için gereklidir. Farkı analiz ederek üretim verimi, hurda oranı veya veri girişi hatalarıyla ilgili sorunları belirleyebilirsiniz. Üretim sürecinin çıktı hedeflerini ne ölçüde karşıladığını doğrudan gösterir. Neden önemli? Üretim çıktısının plana uygunluğunu ölçer; verim, hurda veya süreç kontrolüyle ilgili olası sorunları ortaya çıkarır. Nereden alınır? Hesaplanan alan: 'DeliveredQuantity' - 'PlannedQuantity'. Örnekler -2-5005 | |||
| Planlama grubu PlannerGroup | Siparişten sorumlu MRP kontrolörleri veya üretim planlamacıları grubu. | ||
| Açıklama Planlama Grubu, belirli bir malzeme veya üretim siparişi grubunu planlamak ve yönetmekle sorumlu kişileri temsil eden kurumsal bir birimdir. Siparişleri planlama gruplarına atamak, iş yükünün dağıtılmasına ve sorumlulukların netleştirilmesine yardımcı olur. Process Mining çalışmalarında bu öznitelik, sorumlu planlama ekibine göre performans analizi yapmanızı sağlar. 'Programa en çok hangi planlama grubu sapma yaşıyor?' veya 'Farklı grupların yönettiği siparişlerin çevrim süreleri arasında fark var mı?' gibi soruları yanıtlamaya yardımcı olabilir. Böylece iş yükünü dengelemek ve eğitim ihtiyaçlarını belirlemek için içgörü elde edebilirsiniz. Neden önemli? Performansı sorumlu ekibe göre incelemenizi, planlama etkinliği ve iş yükündeki farklılıkları belirlemenizi sağlar. Nereden alınır? Bu, SAP tablosu AFKO’daki DISPO alanında bulunan MRP Kontrolörüdür. Örnekler 001002P01P02 | |||
| Planlanan başlangıç tarihi PlannedStartDate | Emir için üretimin başlamasının planlandığı tarih. | ||
| Açıklama Planlanan başlangıç tarihi, üretim planlama ve çizelgeleme aşamasında belirlenen temel bir planlama parametresidir. Emir için üretim etkinliklerinin başlamasının hedeflendiği tarihi gösterir. Bu öznitelik, plana uyumu ölçmek için kullanılır. Kuruluşlar 'Planlanan başlangıç tarihi' ile üretimin fiilî başlangıç zamanını, örneğin 'İlk teyit kaydedildi' etkinliğinin zaman damgasını karşılaştırarak üretimin başlamasındaki gecikmeleri belirleyebilir. Bu gecikmelerin nedenlerini analiz etmek, bu alandaki Process Mining kullanımının başlıca amaçlarından biridir. Neden önemli? Plana uyumu ölçmek ve üretim yürütmesinin başlamasındaki gecikmeleri belirlemek için temel alınır. Nereden alınır? SAP AFKO tablosunun GSTRP alanındaki temel başlangıç tarihidir. Örnekler 2023-05-102023-06-222023-07-01 | |||
| Planlanan bitiş tarihi PlannedEndDate | Emir için üretimin tamamlanmasının planlandığı tarih. | ||
| Açıklama Planlanan bitiş tarihi, çizelgeleme sırasında belirlenen üretim emri hedef tamamlanma tarihidir. Son teyitler ve mal girişi dâhil tüm üretim etkinliklerinin tamamlanması beklenen süreyi tanımlar. Bu tarih, 'Plana uyum oranı' temel performans göstergesini hesaplamak için gereklidir. 'Planlanan bitiş tarihi' ile fiilî tamamlanma zamanını, örneğin 'Mal girişi kaydedildi' veya 'Son teyit kaydedildi' etkinliğinin zaman damgasını karşılaştırarak emirlerin zamanında tamamlanıp tamamlanmadığını görebilirsiniz. Bu analiz, üretim çizelgelerinin güvenilirliğini değerlendirmeye ve geç teslimatların temel nedenlerini belirlemeye yardımcı olur. Neden önemli? Üretim emirlerinin zamanında tamamlanıp tamamlanmadığını belirlemek için ölçüt olarak kullanılır; müşteri memnuniyetini ve planlama güvenilirliğini doğrudan etkiler. Nereden alınır? SAP AFKO tablosunun GLTRP alanındaki temel bitiş tarihidir. Örnekler 2023-05-152023-06-282023-07-05 | |||
| Programa uyum durumu ScheduleAdherenceStatus | Üretim siparişinin planlanan bitiş tarihine kadar tamamlanıp tamamlanmadığını gösteren bir işaret. | ||
| Açıklama Programa Uyum Durumu, zamanında performansa hızlıca bakmanızı sağlayan hesaplanmış bir mantıksal veya kategorik özniteliktir. 'Gerçek Bitiş Tarihi' ile 'Planlanan Bitiş Tarihi' karşılaştırılarak elde edilir. Gerçek bitiş tarihi planlanan tarihte veya daha önceyse durum 'Zamanında', değilse 'Gecikmiş' olur. Bu öznitelik, Dashboardlarda analiz ve görselleştirmeyi kolaylaştırır. 'Programa Uyum Oranı' KPI’ını hesaplamak ve geciken siparişlerin başlıca nedenlerini (belirli ürünler, tesisler veya malzeme eksiklikleri gibi) belirlemek için verileri kolayca filtreleyip bir araya getirebilirsiniz. Neden önemli? Siparişleri 'Zamanında' veya 'Gecikmiş' olarak sınıflandırarak performans analizini kolaylaştırır; program güvenilirliğini ölçüp raporlamanızı sağlar. Nereden alınır? Hesaplanan alan: IF('ActualEndDate' <= 'PlannedEndDate', 'Zamanında', 'Gecikmiş'). Örnekler ZamanındaGecikmiş | |||
| Sorumlu kullanıcı ResponsibleUser | Üretim siparişini oluşturan veya en son değiştiren kişinin kullanıcı kimliği. | ||
| Açıklama Sorumlu Kullanıcı, üretim siparişinin yaşam döngüsündeki oluşturma veya serbest bırakma gibi önemli olaylarla ilişkili SAP kullanıcı hesabını belirtir. Böylece sistemde gerçekleştirilen işlemler için sorumluluk ve izlenebilirlik sağlanır. Process Mining çalışmalarında bu öznitelik, kullanıcı davranışına göre süreç farklılıklarını analiz etmek için kullanılır. Ek eğitime ihtiyaç duyabilecek veya standart dışı prosedürleri izleyen kullanıcıları belirlemeye yardımcı olabilir. Ayrıca işin farklı kullanıcılara nasıl dağıtıldığını göstererek kaynak analizini destekler. Neden önemli? Süreç etkinliklerini belirli kişilerle ilişkilendirerek kullanıcı düzeyinde performans analizi yapmanızı ve sorumlulukları netleştirmenizi sağlar. Nereden alınır? Siparişi oluşturan kullanıcı AUFK-ERNAM alanında, son değiştiren kullanıcı ise AUFK-AENAM alanında bulunur. Değişiklik belgeleri (CDHDR-USERNAME), belirli değişiklikleri yapan kullanıcıların geçmişini sunar. Örnekler JSMITHPROD_PLANNER1BATCH_USERAMILLER | |||
| Üretim önceliği ProductionPriority | Üretim siparişinin aciliyetini veya önceliğini belirten sınıflandırma. | ||
| Açıklama Üretim Önceliği alanı, bir üretim siparişinin göreli önemini belirtir. Üretim planlamacıları ve üretim sahası çalışanları bu bilgiyle işlerini önceliklendirebilir, böylece öncelikli siparişler süreçte daha hızlı ilerler. Bu özniteliği analiz ederek öncelik sisteminin ne kadar etkili olduğunu değerlendirebilirsiniz. Yüksek öncelikli siparişlerin çevrim sürelerini düşük öncelikli siparişlerinkiyle karşılaştırarak acil siparişlerin gerçekten daha hızlı işlenip işlenmediğini görebilirsiniz. İşlenmiyorlarsa iletişim, kaynak dağılımı veya genel yürütme sürecinde sorunlar olabilir. Neden önemli? Öncelik yönetiminin etkili olup olmadığını değerlendirmenize ve acil siparişlerin standart siparişlerden daha hızlı tamamlanıp tamamlanmadığını görmenize yardımcı olur. Nereden alınır? Bu alan genellikle üretim siparişi başlığında standart olarak bulunmaz. Özel bir alan olabilir, satış siparişinin önceliğinden türetilebilir veya bir sınıflandırma sisteminin parçası olabilir. SAP ECC PP belgelerine ya da sistem yapılandırmasına başvurun. Örnekler YüksekOrtaDüşükAcil | |||
| Üretim siparişi durumu ProductionOrderStatus | Üretim siparişinin Oluşturuldu, Serbest Bırakıldı veya Teknik Olarak Tamamlandı gibi mevcut işleme durumu. | ||
| Açıklama Üretim Siparişi Durumu, siparişin yaşam döngüsündeki mevcut aşamayı gösterir. SAP, siparişin ilerleyişini yönetmek için CRTD (Oluşturuldu), REL (Serbest Bırakıldı), CNF (Teyit Edildi), DLV (Teslim Edildi) ve TECO (Teknik Olarak Tamamlandı) gibi durum kodları kullanır. Farklı durumlarda geçirilen süreyi analiz etmek, üretim süreçlerinde Process Mining çalışmalarının temel parçalarından biridir. Bu analiz, siparişlerin oluşturulduktan sonra serbest bırakılmayı ne kadar beklediğini veya kısmi teslimat durumunda ne kadar kaldığını belirlemeye yardımcı olur. Durum değişikliklerini etkinlik olarak izlemek, süreç akışına üst düzeyden bakmanızı sağlar. Neden önemli? Siparişin ilerleyişini gösterir ve uzun süre bekleyen siparişlerin darboğaz oluşturduğu noktaları belirlemeye yardımcı olur. Nereden alınır? Durum bilgileri, siparişin nesne numarasına (AUFK-OBJNR) bağlı JEST ve JSTO tablolarında saklanır. Durum metni TJ02T tablosunda bulunur. Durum bilgileri genellikle STATUS_TEXT_EDIT gibi işlev modülleriyle okunur. Örnekler CRTD (Oluşturuldu)REL (Serbest Bırakıldı)DLV (Teslim Edildi)TECO (Teknik Olarak Tamamlandı) | |||
Üretim planlaması etkinlikleri
| Aktivite | Açıklama | ||
|---|---|---|---|
| Emir teknik olarak tamamlandı | Bu idari kapatma adımı, üretim emrini lojistik açıdan sonlandırır. Başka malzeme hareketlerini veya teyitleri önler ve mali mutabakata olanak tanır. | ||
| Neden önemli? Bu olay, emrin lojistik yaşam döngüsündeki kesin bitiş noktasıdır. Analiz ederek üretim sonrası idari işler dâhil toplam süreç süresini anlayabilirsiniz. Nereden alınır? Sistem durumu 'TECO' (I0045, Technically Completed) emre atandığında açıkça kaydedilir. Değişiklik, JCDS tablosuna zaman damgasıyla yazılır. Kaydedin JCDS tablosunda 'TECO' durumunun emir için etkinleştiği zaman damgasını belirleyin. Olay türü explicit | |||
| İlk teyit kaydedildi | Bu olay, emir üzerindeki fiilî üretim çalışmasının başladığını gösterir. Üretim emrindeki herhangi bir operasyon için ilk zaman teyidi sisteme girildiğinde kaydedilir. | ||
| Neden önemli? Bu etkinlik, üretimin fiilî başlangıç zamanını gösterir. Planlanan zamanlara uyumu ölçmek ve kaynakların tahsis edilmesiyle işin başlaması arasındaki gecikmeleri belirlemek için gereklidir. Nereden alınır? AFRU tablosunda emir için kaydedilen tüm teyitler arasındaki en erken kayıt tarihi (AFRU-BUDAT) bulunarak belirlenir. İlk kayıt, fiilî üretimin başlangıcını gösterir. Kaydedin AFRU tablosundaki kayıt tarihine göre emir için ilk teyit kaydını belirleyin. Olay türü inferred | |||
| Mal girişi kaydedildi | Bu olay, üretim emrinden çıkan mamulün envantere alındığını kaydeder. Üretilen malların sevkiyata veya sonraki işlemlere hazır olduğunu gösterir. | ||
| Neden önemli? Bu önemli tamamlanma aşaması, üretim sürecinin nihai çıktısını gösterir. Serbest bırakmadan mal girişine kadar geçen süre, toplam üretim tedarik süresidir. Nereden alınır? Üretim emrine referans veren ve genellikle '101' hareket türünü içeren bir malzeme belgesi olarak MKPF/MSEG tablolarına kaydedilir. Ayrıca emre 'DLV' (I0012, Delivered) sistem durumu atanır. Kaydedin '101' hareket türündeki malzeme belgesinin kayıt tarihini veya 'DLV' durum değişikliğinin zaman damgasını alın. Olay türü explicit | |||
| Son teyit kaydedildi | Bu etkinlik, üretim emrindeki tüm operasyonların üretim sahasında tamamlandığını gösterir. Son operasyona ait son teyit kaydıyla işaretlenir. | ||
| Neden önemli? Bu aşama, fiilî üretim etkinliklerinin sona erdiğini gösterir. İlk teyitle son teyit arasındaki süre, üretimin fiilen yürütüldüğü zamanı ifade eder. Nereden alınır? Sistem durumu 'CNF' (I0009, Confirmed) ayarlandığında kaydedilir. Bu durum genellikle AFRU tablosuna son teyit kaydı girildiğinde (AFRU-AUERU = 'X') tetiklenir. Durum değişikliği JCDS tablosuna yazılır. Kaydedin 'CNF' durumunun ayarlandığı zaman damgasını belirleyin veya AFRU tablosundaki son teyit kaydını bulun. Olay türü explicit | |||
| Üretim emri oluşturuldu | Bu olay, genellikle bir planlama çalıştırmasıyla veya elle giriş yapılarak yeni bir üretim emrinin oluşturulduğunu gösterir. Sisteme yeni bir emir kaydı kaydedildiğinde ve emir 'CRTD' (Created) durumunu aldığında açıkça kaydedilir. | ||
| Neden önemli? Bu olay, her üretim emri vakasının başlangıç noktasıdır. Bu olaydan serbest bırakılmaya kadar geçen süreyi analiz ederek üretim öncesi planlama ve idari hazırlıklardaki gecikmeleri belirleyebilirsiniz. Nereden alınır? Bu olay, üretim emrinin oluşturulma tarihi (AUFK-ERDAT) ve saatinden (AUFK-ERZET) alınır. Sistem durumu 'CRTD' (I0001) atanır ve emir nesne numarasıyla (AUFK-OBJNR) bağlantılı olarak JEST ve JCDS tablolarına kaydedilir. Kaydedin 'CRTD' durumunun atandığı zamanı ve oluşturulma zaman damgasını izleyin. Olay türü explicit | |||
| Üretim emri serbest bırakıldı | Bu etkinlik, üretim emrinin yürütülmesi için resmen onaylandığını ve serbest bırakıldığını gösterir. Emir serbest bırakıldığında malzeme rezervasyonları etkinleşir; malzeme çıkışı ve teyit gibi üretim etkinlikleri başlayabilir. | ||
| Neden önemli? Bu önemli aşama, planlamadan yürütmeye geçişi gösterir. Oluşturma ile serbest bırakma arasındaki süre, planlama verimliliğinin temel göstergelerinden biridir. Nereden alınır? Sistem durumu 'REL' (I0002) üretim emrine atandığında açıkça kaydedilir. Değişiklik, emrin nesne numarasıyla (AUFK-OBJNR) bağlantılı olarak JCDS tablosuna zaman damgasıyla yazılır. Kaydedin Emir için 'REL' durumunun etkinleştiği zaman damgasını belirleyin. Olay türü explicit | |||
| Ara teyit kaydedildi | Bir operasyonun kısmi teyidiyle üretim emrindeki ilerlemenin kaydedilmesini ifade eder. Tamamlanması uzun süren emirlerde, son aşamaya gelmeden önce ilerlemeyi izlemek için sıkça kullanılır. | ||
| Neden önemli? Ara teyitleri analiz etmek, uzun üretim çevrimlerinin ilerlemesini izlemeye ve yalnızca başlangıçta ya da sonda değil, üretim sürecinin içindeki darboğazları da belirlemeye yardımcı olur. Nereden alınır? AFRU tablosunda son teyit olarak işaretlenmemiş teyit kayıtlarından alınır. Her kayıtta bir kayıt tarihi (AFRU-BUDAT) ve saat bulunur. Kaydedin AFRU tablosundan, bir operasyon için son teyit olarak işaretlenmemiş tüm teyit kayıtlarını çıkarın. Olay türü explicit | |||
| Emir iptali ayarlandı | Bu olay, üretim emrinin tamamlanmadan önce iptal edildiğini gösterir. Genellikle belirli bir durum veya silme işareti atanarak yapılır ve başka işlem yapılması önlenir. | ||
| Neden önemli? Bu olumsuz sonucu izlemek önemlidir. İptal edilen emirleri analiz etmek; talep tahmini, planlama doğruluğu veya ana veri yönetimiyle ilgili sorunları ortaya çıkarabilir. Nereden alınır? Bu etkinlik, 'DLFL' (I0076, Deletion flag) durumunun atanmasından veya yapılandırılmışsa belirli bir 'Canceled' durumundan anlaşılabilir. Değişiklik, JCDS tablosuna zaman damgasıyla yazılır. Kaydedin Emir için silme işaretinin ('DLFL') veya iptal durumunun ayarlandığı zaman damgasını belirleyin. Olay türü inferred | |||
| Emir mutabakatı çalıştırıldı | Üretim emrinin mali mutabakatını ifade eder. Bu aşamada biriken maliyetler uygun maliyet nesnelerine dağıtılır. Kontrol açısından bu, emrin yaşam döngüsündeki son adımdır. | ||
| Neden önemli? Mali bir etkinlik olsa da mutabakattaki gecikmeler, maliyet raporlaması veya emir verilerinin doğruluğuyla ilgili sorunlara işaret edebilir. Bu aşama, üretim sürecinin mali açıdan gerçekten kapandığını gösterir. Nereden alınır? Emir bakiyesi sıfıra indiğinde veya 'SETC' (I0076, Settlement rule created) sistem durumunun ardından mutabakat çalıştırma günlükleri oluştuğunda bu etkinlik belirlenebilir. Fiilî mutabakat, COSP ve COSS gibi kontrol tablolarına kaydedilir. Kaydedin CO tablolarında emirle bağlantılı mutabakat belgelerinden veya 'SETC' durumunun etkinleşmesinden belirleyin. Olay türü inferred | |||
| Emir verileri değiştirildi | Bu olay, üretim emri ilk oluşturulduktan sonra planlanan miktar, tarihler veya ürün ağacı (BOM) gibi alanlarda yapılan önemli değişiklikleri kaydeder. Sistem, denetim amacıyla bu değişiklikleri günlüğe yazar. | ||
| Neden önemli? Bu değişiklikleri izlemek, süreçteki istikrarsızlığı ve sık yapılan yeniden planlamaları belirlemeye yardımcı olur. Değişikliklerin sık olması; ilk planlamanın yetersizliğine, talep dalgalanmalarına veya veri hatalarına işaret edebilir. Nereden alınır? AFKO (emir başlığı) ve AFPO (emir kalemi) gibi tablolardaki önemli alanlarda yapılan değişiklikler, CDHDR (başlık) ve CDPOS (kalem) değişiklik belgesi tablolarına kaydedilir. İlgili her değişiklik bir etkinlik olarak çıkarılabilir. Kaydedin Üretim emri nesne sınıfı için CDHDR ve CDPOS tablolarındaki değişiklik günlüğü kayıtlarını çıkarın. Olay türü explicit | |||
| Malzeme bulunabilirliği kontrol edildi | Bu etkinlik, üretim emri için gerekli tüm bileşenlerin mevcut olup olmadığını belirlemek üzere yapılan kontrolü ifade eder. Kontrol, emir oluşturulduğunda veya serbest bırakıldığında otomatik olarak yapılabilir ya da elle başlatılabilir. | ||
| Neden önemli? Bu etkinlik, malzeme eksikliğinden kaynaklanan gecikmeleri anlamak açısından önemlidir. Kontrollerin sık tekrarlanması veya malzemenin hazır olmasının uzun sürmesi, tedarik zinciri ya da envanter yönetimi sorunlarına işaret edebilir. Nereden alınır? Sistem, 'MACM' (malzeme taahhüt edildi) veya 'MSPT' (malzeme eksikliği) gibi bir durum atar. Bu etkinliğin gerçekleştiği, JEST/JCDS tablolarındaki durum değişikliğinin zaman damgasından anlaşılabilir. Sonuçlar emir başlığında görüntülenir. Kaydedin 'MACM' veya 'MSPT' gibi malzeme bulunabilirliğiyle ilgili durum değişikliklerinin zaman damgasından belirleyin. Olay türü inferred | |||
| Malzeme çıkışı kaydedildi | Bu etkinlik, üretim emrinde kullanılmak üzere bileşen malzemelerin envanterden çekilmesini ifade eder. Gerekli ham maddelerin veya yarı mamullerin üretim için hazırlandığını doğrular. | ||
| Neden önemli? Bu olay, malzeme tüketiminin başladığını gösterir. Emir serbest bırakıldıktan sonra malzeme çıkışına kadar geçen gecikmeler; depo lojistiği, malzeme hazırlığı veya envanter doğruluğuyla ilgili sorunları ortaya çıkarabilir. Nereden alınır? Üretim emri numarasına (MSEG-AUFNR) referans veren ve genellikle '261' hareket türünü içeren malzeme belgeleri olarak MKPF (başlık) ve MSEG (kalem) tablolarına kaydedilir. Kaydedin Emirle bağlantılı '261' hareket türündeki malzeme belgelerinin kayıt tarihini (MKPF-BUDAT) alın. Olay türü explicit | |||
Veri dışa aktarma rehberleri
Adımlar
- SAP Query’de bir InfoSet oluşturun:
SQ02işlem kodunu kullanın. ÖrneğinZPP_EVENTLOGadında yeni bir InfoSet oluşturun. Veri kaynağı olarak 'Temel tablo kullanarak tablo birleştirme' seçeneğini belirleyin. İlk temel tablo olarakAUFK(sipariş ana verileri) tablosunu kullanın. - Gerekli tabloları birleştirin: Aşağıdaki tabloları InfoSet birleştirmesine ekleyin. Sistem birleştirme önerileri sunabilir; ancak bunların doğru olduğunu kontrol edin:
AUFKileAFKO(PP siparişlerinin başlık verileri):AUFK-AUFNR = AFKO-AUFNRAUFKileJEST(tekil nesne durumu):AUFK-OBJNR = JEST-OBJNRJESTileJCDS(sistem/kullanıcı durumlarına ilişkin değişiklik belgeleri):JEST-OBJNR = JCDS-OBJNRANDJEST-STAT = JCDS-STAT. Not: Bu birleştirme, durum değişikliği geçmişini okumak içindir.AUFKileAFRU(sipariş tamamlama teyitleri):AUFK-AUFNR = AFRU-AUFNRAUFKileMSEG(belge segmenti: malzeme):AUFK-AUFNR = MSEG-AUFNRMSEGileMKPF(başlık: malzeme belgesi):MSEG-MBLNR = MKPF-MBLNRANDMSEG-MJAHR = MKPF-MJAHR
- Alan gruplarını tanımlayın: Kaynak tablolardan gerekli alanları sürükleyerek alan gruplarına ekleyin. Son sorgu için gereken
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATE,MKPF-BUDATgibi tüm alanları eklediğinizden emin olun. - Özel alanlar ve kod ekleyin: InfoSet’te 'Ekstralar' sekmesine gidin.
ActivityName,EventTime,SourceSystemveLastDataUpdateiçin özel alanlar tanımlamanız ve bunları sorgu bölümünde belirtilen mantığa göre dolduracak ABAP kodunu yazmanız gerekir. Kod, her iş olayı için ayrı bir kayıt oluşturmak üzere durum değişiklikleri, teyitler ve malzeme belgeleri arasında dolaşır. Bu en karmaşık adımdır; çünkü InfoSet’in kod bölümlerinde tablo biçimindeki verileri olay günlüğü biçimine dönüştürürsünüz. - InfoSet’i oluşturup kaydedin: Tüm birleştirmeleri, alanları ve özel kodu ekledikten sonra InfoSet’i kaydedip oluşturun.
- SAP Query oluşturun:
SQ01işlem kodunu kullanın. Önceki adımlarda oluşturduğunuz InfoSet’i temel alan yeni bir sorgu oluşturun; örneğinZPP_EVENTS. - Sorgu düzenini tasarlayın: Sorgu tasarımcısında seçim ekranı alanlarını tanımlayın. Üretim Siparişi
AUFNR, TesisWERKS, Sipariş TürüAUARTve sipariş oluşturma tarihiAUFK-ERDATiçin tarih aralığı uygun seçimlerdir. - Çıktı listesini tanımlayın: Rapor çıktısında gösterilecek alanları seçin. Bu liste,
ActivityNameveEventTimegibi özel alanlar dahil olmak üzere olay günlüğü için gereken sütunlarla tam olarak eşleşmelidir. - Sorguyu çalıştırın: İstediğiniz seçim ölçütleriyle sorguyu çalıştırın; örneğin son 3-6 aydaki üretim siparişleri için.
- Verileri dışa aktarın: Sorgu sonuçları görüntülendiğinde listeyi dışa aktarın. En yaygın ve güvenilir biçim, sekmeyle ayrılmış veya CSV biçimindeki 'Elektronik Tablo' ya da 'Yerel Dosya’dır.
- ProcessMind için biçimlendirin: Dışa aktarılan dosyayı bir elektronik tablo programında açın. Sütun başlıklarının gerekli özniteliklerle (
ProductionOrder,ActivityName,EventTimevb.) eşleştiğini veEventTimetarih-saat biçiminin tutarlı olup gerekli standardı (ör. YYYY-MM-DD HH:MI:SS) karşıladığını kontrol edin. Dosyayı yüklemek üzere CSV olarak kaydedin.
Yapılandırma
- InfoSet birleştirmeleri: Bu yöntemin temelinde başlık, durum, teyit ve malzeme hareketi tablolarını birleştiren karmaşık bir InfoSet bulunur. Başlıca birleştirmeler
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRUveAUFK->MSEG->MKPFşeklindedir. Hatalı veya verimsiz birleştirmeler performansı düşürebilir ya da yanlış veri üretebilir. - Seçim ölçütleri: Sistem performansı sorunlarını önlemek için yönetilebilir bir seçim aralığı belirlemek önemlidir. Sorgunun başlangıç ekranında şu temel seçim alanlarını kullanın:
- Üretim tesisi (
AUFK-WERKS) - Üretim siparişi türü (
AUFK-AUART) - Sipariş oluşturma tarihi (
AUFK-ERDAT): Veri setinin boyutunu yönetilebilir tutmak için son 3-6 aylık verileri dışa aktarmanızı öneririz.
- Üretim tesisi (
- Sistem durumları: 'Oluşturuldu', 'Serbest Bırakıldı', 'Teknik Olarak Tamamlandı' ve 'İptal Edildi' gibi olayları belirleme mantığı, belirli sistem durum kodlarına (ör. I0001, I0002, I0045, I0047) bağlıdır. Bunlar genellikle SAP sistemlerinde standarttır; yine de doğrulanmalıdır.
- Hareket türleri: 'Mal çıkışı' ve 'Mal girişi' gibi olaylar, genellikle sırasıyla '261' ve '101' olan belirli hareket türleriyle (
MSEG-BWART) tanımlanır. Bu değerlerin kuruluşunuzun yapılandırmasıyla eşleştiğini doğrulayın. - Yetkiler: Sorguyu çalıştıran kullanıcının
SQ01,SQ02veSQ03işlemlerine erişim yetkisi ve temel tabloların (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF) tümünü görüntüleme izni olmalıdır.
a Örnek sorgu abap
/*
The following ABAP-style SQL script represents the complete logic required to build the event log.
This logic must be implemented within the code sections of the SQ02 InfoSet, as a direct SQL query of this nature is not run.
Each SELECT block corresponds to a specific business activity.
*/
-- 1. Production Order Created
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Created' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0001' AND JCDS.INACT = ''
UNION ALL
-- 2. Material Availability Checked (using 'Material shortage' status as an indicator)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Material Availability Checked' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0033' AND JCDS.INACT = '' -- I0033 is MSPT (Material Shortage)
UNION ALL
-- 3. Production Order Released
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Released' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0002' AND JCDS.INACT = ''
UNION ALL
-- 4. Order Data Changed (using last change date as a proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Data Changed' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime, -- Time is not available in AUFK
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.AEDAT IS NOT NULL AND AUFK.AEDAT > AUFK.ERDAT
UNION ALL
-- 5. Goods Issue Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Issue Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
CONF.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
CONF.EventTime,
CONF.ProductionPlant,
CONF.ProductCode,
CONF.PlannedQuantity,
CONF.DeliveredQuantity,
CONF.ActualStartDate,
CONF.ActualEndDate,
CONF.SourceSystem,
CONF.LastDataUpdate
FROM (
SELECT
AUFK.AUFNR AS ProductionOrder,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
ROW_NUMBER() OVER(PARTITION BY AUFK.AUFNR ORDER BY AFRU.BUDAT, AFRU.ERFZEIT) as rn
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
) AS CONF
WHERE CONF.rn = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'T' -- T = Partial Confirmation
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'E' -- E = Final Confirmation
UNION ALL
-- 9. Goods Receipt Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Technically Completed' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0045' AND JCDS.INACT = ''
UNION ALL
-- 11. Order Settlement Ran (using 'Closed' status as proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Settlement Ran' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0046' AND JCDS.INACT = '' -- I0046 is CLSD (Closed)
UNION ALL
-- 12. Order Cancellation Set
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0047' AND JCDS.INACT = '' -- I0047 is CNF (Confirmed), use I0076 for Canceled. Recorrecting. Use Deletion Flag instead.
-- Corrected Logic for Cancellation:
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.LOEKZ = 'X'; Adımlar
- Veritabanı erişimini sağlayın: Temel SAP ECC veritabanı için salt okunur kimlik bilgilerini alın. Sunucu adresi, bağlantı noktası, veritabanı adı, kullanıcı adı ve parola gerekir. Bu erişim için SAP Basis ve veritabanı yönetim ekiplerinizle koordinasyon sağlamanız gerekir.
- SAP şemasını belirleyin: SAP tablolarının saklandığı doğru veritabanı şemasını bulun. Bu genellikle
SAPSR3veya sisteme özgü benzer bir addır. Sorgudaki[Your SAP Schema]yer tutucusunu bu değerle değiştirin. - SQL sorgusunu hazırlayın:
querybölümünde verilen SQL sorgusunun tamamını kopyalayın. Bu sorgu, belirtilen tüm etkinlikleri tek bir olay günlüğü biçiminde dışa aktarır. - Sorgu parametrelerini ayarlayın: Sorguyu çalıştırmadan önce içindeki yer tutucuları değiştirin. Dışa aktarma zaman aralığını belirlemek için
[Start Date]ve[End Date]değerlerini ayarlayın. Veri hacmini sınırlamak için üretim tesisi (WERKS) veya sipariş türüne (AUART) göre filtre uygulamanız da önerilir. - Bağlanıp sorguyu çalıştırın: 1. adımda aldığınız kimlik bilgileriyle SAP veritabanına bağlanmak için DBeaver, SAP HANA Studio veya özel bir betik (Python, Java) gibi standart bir SQL istemcisi kullanın.
- Sorguyu çalıştırın: Yapılandırılmış SQL sorgusunu istemciye yapıştırıp çalıştırın. Tarih aralığına ve sistemin boyutuna bağlı olarak işlem birkaç dakika sürebilir.
- İlk sonuçları gözden geçirin: Sorgu tamamlandığında ilk birkaç yüz satırı kısaca inceleyerek
ProductionOrder,ActivityNameveEventTimegibi sütunların doğru şekilde doldurulduğunu ve anlamlı değerler içerdiğini kontrol edin. - CSV olarak dışa aktarın: Sonuç kümesinin tamamını SQL istemcinizden CSV dosyasına aktarın. Karakter sorunlarını önlemek için dosyanın UTF-8 kodlaması kullandığından emin olun.
- CSV dosyasını yüklemeye hazırlayın: CSV dosyasını açıp sütun başlıklarının gerekli özniteliklerle (
ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdatevb.) eşleştiğini doğrulayın.EventTimesütunundaki biçimin tutarlı olduğundan emin olun; örneğinYYYY-MM-DD HH:MI:SS. - ProcessMind’e yükleyin: Hazırladığınız CSV dosyası artık analiz için ProcessMind platformuna yüklenmeye hazır.
Yapılandırma
- Veritabanı şeması: Üretim planlama tablolarınızın bulunduğu SAP şemasını belirtmeniz gerekir. Sorgudaki
[Your SAP Schema]yer tutucusunu ortamınızdaki doğru adla, örneğinSAPSR3ile değiştirin. - Tarih aralığı: Performans için belirli bir tarih aralığına göre filtre uygulamak önemlidir. Sorgu, sipariş oluşturma tarihine (
AUFK.ERDAT) göre filtre uygular. Veri hacmini yönetilebilir tutmak için son 3-6 aylık bir dönemle başlamanızı öneririz. - Üretim siparişi türü: Analizi belirli bir kapsama odaklamak için sorguyu üretim siparişi türü alanına (
AUFK.AUART) göre filtreleyin. Böylece standart üretim siparişleri, proses siparişleri veya yeniden çalışma siparişleri gibi belirli türleri dahil edebilir ya da hariç tutabilirsiniz. - Üretim tesisi: Bir veya daha fazla üretim tesisine (
AFKO.WERKS) göre filtre uygulamanız önemle önerilir. Tüm tesislerin verilerini aynı anda dışa aktarmak çok fazla kaynak gerektirebilir. - Veritabanı erişimi: Bu yöntem için en azından şu tablolarda okuma izni olan bir veritabanı kullanıcısı gerekir:
AUFK,AFKO,JCDS,JEST,AFRU,MSEG,MKPF. Doğrudan veritabanı erişimi tüm SAP kullanıcılarına standart olarak sunulmaz ve özel yetkilendirme gerektirir.
a Örnek sorgu sql
WITH Orders AS (
SELECT
aufk.AUFNR AS ProductionOrder,
afko.WERKS AS ProductionPlant,
afko.PLNBEZ AS ProductCode,
afko.GAMNG AS PlannedQuantity,
afko.GMEIN AS PlannedUnit,
afko.GEMNG AS DeliveredQuantity,
CASE
WHEN afko.GSTRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GSTRI || afko.GSUZI, 'YYYYMMDDHH24MISS')
END AS ActualStartDate,
CASE
WHEN afko.GETRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GETRI || afko.GEUZI, 'YYYYMMDDHH24MISS')
END AS ActualEndDate,
aufk.OBJNR,
aufk.ERDAT AS CreationDate,
aufk.ERFAS AS CreationTime
FROM
"[Your SAP Schema]".AUFK aufk
JOIN
"[Your SAP Schema]".AFKO afko ON aufk.AUFNR = afko.AUFNR
WHERE
aufk.AUTYP = '10' -- Filter for Production Orders
AND aufk.ERDAT BETWEEN '[Start Date]' AND '[End Date]'
-- AND afko.WERKS IN ('[Your Plant]', '[Another Plant]') -- Optional: Filter by Plant
-- AND aufk.AUART IN ('[Your Order Type]') -- Optional: Filter by Order Type
),
Confirmations AS (
SELECT
o.ProductionOrder,
a.RUECK AS ConfirmationNumber,
a.RMZHL AS ConfirmationCounter,
TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
a.AUERU AS IsFinalConfirmation,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') ASC) as rn_asc,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') DESC) as rn_desc
FROM
Orders o
JOIN
"[Your SAP Schema]".AFRU a ON o.ProductionOrder = a.AUFNR
)
-- 1. Production Order Created
SELECT
o.ProductionOrder,
'Production Order Created' AS ActivityName,
TO_TIMESTAMP(o.CreationDate || o.CreationTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
UNION ALL
-- 2. Material Availability Checked (using 'Material Committed' status as proxy)
SELECT
o.ProductionOrder,
'Material Availability Checked' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0006' AND jcds.INACT != 'X'
UNION ALL
-- 3. Production Order Released
SELECT
o.ProductionOrder,
'Production Order Released' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0002' AND jcds.INACT != 'X'
UNION ALL
-- 4. Order Data Changed
SELECT
o.ProductionOrder,
'Order Data Changed' AS ActivityName,
TO_TIMESTAMP(aufk.AEDAT || aufk.AEZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".AUFK aufk ON o.ProductionOrder = aufk.AUFNR
WHERE aufk.AEDAT > o.CreationDate
UNION ALL
-- 5. Goods Issue Posted
SELECT
o.ProductionOrder,
'Goods Issue Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
c.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
c.ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc > 1 AND c.IsFinalConfirmation IS NULL
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
c.ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.IsFinalConfirmation = 'X'
UNION ALL
-- 9. Goods Receipt Posted
SELECT
o.ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
o.ProductionOrder,
'Order Technically Completed' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0045' AND jcds.INACT != 'X'
UNION ALL
-- 11. Order Settlement Ran
SELECT
o.ProductionOrder,
'Order Settlement Ran' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0046' AND jcds.INACT != 'X'
UNION ALL
-- 12. Order Cancellation Set
SELECT
o.ProductionOrder,
'Order Cancellation Set' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0076' AND jcds.INACT != 'X'; Adımlar
- SAP ECC PP, üretim emri işleme, teyit, envanter yönetimi ve kontrol verilerinin kullanılabilir olduğunu doğrulayın. Veri çıkarma kullanıcısının gerekli uygulama tablolarını okuma ve özel ABAP raporlarını çalıştırma yetkisi bulunduğunu kontrol edin.
- ABAP Workbench’te, örneğin SE38 veya SE80 işleminde, [Özel rapor adınız] gibi amaca özel bir çalıştırılabilir rapor oluşturun. [Başlangıç tarihi] ve [Bitiş tarihi] gibi zorunlu tarih parametrelerinin yanı sıra [Şirket kodu], [Üretim tesisi], [Sipariş türü], [Malzeme] ve [Üretim emri] için isteğe bağlı filtreler içeren bir seçim ekranı kullanın.
- Üretim emri başlık ve ana verilerini AUFK’dan ve SAP ECC sisteminizde yapılandırılmış üretim emri tablolarından okuyun. CRTD, serbest bırakıldı, teknik olarak tamamlandı ve iptalle ilgili durumlar dahil olmak üzere açık durum değişikliklerini belirlemek için JCDS’yi ve ilgili durum yapılandırmasını kullanın. Durum geçmişinde zaman damgalı bir değişiklik yoksa durum kodunun bir olayı temsil ettiğini varsaymayın.
- Sisteminizde yapılandırılmış üretim emri kullanılabilirlik kontrolü verilerinden kontrol sonuçlarını okuyun. Kontrol, emir ve zaman damgasıyla güvenilir biçimde ilişkilendirilebilen bir tabloda saklanmıyorsa SAP ekibinizin onayladığı yapılandırılmış SAP geliştirmesini, uygulama günlüğünü veya denetim kaynağını kullanın. Yalnızca emrin oluşturulmasından veya serbest bırakılmasından hareketle kontrol yapıldığını varsaymayın.
- Emir değişiklik geçmişini, yapılandırılmış üretim emri değişiklik belgesi nesnelerinden ve bunlarla ilişkili değişiklik belgesi tablolarından okuyun. Yalnızca planlanan miktar, tarihler, ürün ağacı, rota veya süreç sahibinin onayladığı diğer alanlar gibi önemli değişiklikleri alın. EventTime olarak değişiklik belgesinin zaman damgasını kullanın.
- Mal çıkış ve mal girişi kayıtlarını, sisteminizde yapılandırılmış envanter malzeme belgesi verilerinden okuyun. Malzeme belgesi verilerindeki emir referansını kullanarak kayıtları üretim emriyle ilişkilendirin. Bileşen sarflarını Goods Issue Posted, mamul girişlerini ise Goods Receipt Posted olarak sınıflandırın. Kullanılabiliyorsa kayıt tarihini ve saatini kullanın.
- Teyit verilerini, sisteminizde yapılandırılmış üretim teyidi kaynağından okuyun. Teyitleri üretim emri ve teyit zaman damgasına göre sıralayın. İlk teyit için First Confirmation Recorded, koşulları karşılayan son olmayan teyitler için Intermediate Confirmation Recorded, açıkça son olarak işaretlenmiş veya yapılandırılmış teyit tamamlama mantığıyla son olduğu belirlenmiş teyit için Final Confirmation Recorded etkinliğini oluşturun. Keyfî bir sorgunun döndürdüğü son satırdan hareketle teyidin son olduğunu varsaymayın.
- Mahsup yürütme verilerini, sisteminizde yapılandırılmış kontrol mahsubu kaynağından okuyun. Yalnızca bir mahsup yürütme kaydı, mahsup belgesi veya onaylanmış mahsup durum geçmişi üretim emriyle ilişkilendirilmiş açık bir zaman damgası sağlıyorsa Order Settlement Ran etkinliğini oluşturun.
- Çıkarılan her etkinlik için bir dahili olay satırı oluşturun. ProductionOrder, ActivityName, EventTime, SourceSystem, LastDataUpdate, ProductionPlant, ProductCode, PlannedQuantity, DeliveredQuantity, ActualStartDate ve ActualEndDate alanlarını doldurun. Zaman damgalarını tutarlı biçimde dönüştürün ve kaynak sistemin saat dilimini koruyun. Bu etkinlikler mevcutsa ActualStartDate alanını ilk teyidin, ActualEndDate alanını ise son teyidin zaman damgasına ayarlayın.
- Olay satırlarını ProductionOrder ve EventTime alanlarına göre sıralayın; eşit zaman damgaları için belirleyici bir ikincil sıralama ölçütü kullanın. Yalnızca kaynaktaki birebir yinelenen kayıtları kaldırın, geçerli yinelenen etkinlikleri silmeyin. Çıktı şemasında gerekli on iki etkinlik adının tümünün bulunduğunu ve oluşturulan her satırda bir vaka kimliği, etkinlik adı ve olay zaman damgası olduğunu doğrulayın.
- Sonucu, onaylanmış bir ABAP dosya arayüzü ve yapılandırılmış bir mantıksal dosya yolu kullanarak uygulama sunucusundaki bir dosyaya yazın. ProcessMind veri alım yapılandırmasıyla uyumlu bir ayraç ve metin kodlaması kullanın, başlık satırı ekleyin, ayraç içeren değerleri tırnak içine alın ve zaman damgalarını tutarlı biçimde, tercihen YYYY-MM-DDThh:mm:ss formatında yazın.
- Dosyayı onaylanmış SAP dosya aktarım prosedürünü kullanarak indirin, bağımsız olarak inceleyin ve ProductionOrder vaka kimliği, ActivityName etkinlik, EventTime ise olay zaman damgası olacak şekilde ProcessMind’e olay günlüğü olarak yükleyin. ProcessMind’in satırları olduğu gibi okuyacak şekilde yapılandırıldığını ve eksik etkinlikleri çıkarsamasının beklenmediğini doğrulayın.
Yapılandırma
- Tarih aralığı: İlk analiz için son üç ila altı ayı kapsayan hareketli bir veri çıkarma aralığı kullanın. Aralığı yalnızca performansı ve veri hacmini değerlendirdikten sonra genişletin. Seçilen başlangıç tarihinden önce oluşturulmuş ancak analiz döneminde etkin olan emirleri de kapsayacak bir geriye dönük inceleme süresi ekleyin.
- Seçim filtreleri: [Şirket kodu], [Üretim tesisi], [Sipariş türü], [Malzeme], [Üretim emri], emir durumu ve oluşturma veya değişiklik tarihi filtrelerini destekleyin. Üretim emri alanlarının kullanılabilirliği sürüme ve özelleştirmelere göre değişebileceğinden, alanları SAP ECC uygulamanıza göre yapılandırın.
- Etkinlik kapsamı: Gerekli on iki etkinliğin tümünü açık olay satırları olarak çıkarın: Production Order Created, Material Availability Checked, Production Order Released, Order Data Changed, Goods Issue Posted, First Confirmation Recorded, Intermediate Confirmation Recorded, Final Confirmation Recorded, Goods Receipt Posted, Order Technically Completed, Order Settlement Ran ve Order Cancellation Set.
- Zaman damgası ilkesi: Kaynaktaki olay tarihini ve saatini tercih edin. Yalnızca tarih varsa, hassasiyetin sınırlı olduğunu belgeleyin ve uydurma bir kesin saat vermek yerine yapılandırılmış, tutarlı bir saat kullanın. Tüm zaman damgalarını ProcessMind’in beklediği saat dilimine dönüştürün.
- Durum işleme: Durum etkinlikleri için zaman damgalı durum geçmişini kullanın. Dahili durum değerlerinin iş etkinlikleriyle eşlemesini, sistem durumu yapılandırmasına ve süreç sahibinin onayına göre belirleyin.
- Kullanılabilirlik kontrolleri: Kullanılabilirlik kontrolünün yürütüldüğünü gösteren onaylı kaynağı yapılandırın. İşletme tarafından onaylanmış kaynak kontrolü açıkça kaydetmiyorsa emir oluşturma, serbest bırakma, rezervasyon veya başarılı mal çıkışından hareketle Material Availability Checked satırı oluşturmayın.
- Teyitlerin işlenmesi: İlk, ara ve son teyitleri ayırt eden kuralları yapılandırın. Bir teyit ancak kaynakta açıkça son olarak belirtilmişse veya yapılandırılmış SAP teyit mantığı tamamlandığını gösteriyorsa son kabul edilebilir.
- Miktarlar: Mümkün olduğunda kaynak ölçü birimini koruyun. Miktarları topluyorsanız toplamanın emir, malzeme, hareket, teyit veya etkinlik bazında yapıldığını belgeleyin. Süreç sahibi bu yorumu onaylamadığı sürece DeliveredQuantity, yalnızca teyit edilen verimi değil, kaydedilmiş mamul girişlerini göstermelidir.
- LastDataUpdate: Bu alanı veri çıkarma işleminin zaman damgasıyla veya kaynağın yenilenme zaman damgasıyla doldurun ve bir çalıştırmadaki tüm satırlarda aynı, belgelenmiş yöntemi uygulayın.
- Performans: Seçim aralığını sınırlayın, yalnızca gerekli alanları seçin, verileri paketler halinde işleyin, veritabanı tarafında filtreleme yapın, büyük döngüler içinde iç içe veritabanı okumalarından kaçının ve dizinleri yalnızca SAP veritabanı yönetimi süreci üzerinden oluşturun veya kullanın. Bellek kullanımı sorun yaratıyorsa çıktıyı parça parça yazın.
- Dosya çıktısı: Uygulama sunucusu dizinini, mantıksal dosya adını, ayıracı, kodlamayı, ondalık sayı biçimini, zaman damgası biçimini ve başlık satırı ayarını ProcessMind yükleme belirtimine göre yapılandırın. Kimlik bilgilerini raporda veya çıktı dosyasında göstermeyin.
- Ön koşullar: Gerektiği durumlarda SAP ECC PP, envanter yönetimi, teyitler, üretim emri durum yönetimi ve kontrol mahsubu verilerinin etkin olduğunu doğrulayın. Çalıştırmadan önce gerekli yetkiler, özel geliştirme yönetişimi, taşıma onayı, uygulama sunucusu dosya erişimi ve ProcessMind veri alım erişimi sağlanmalıdır.
- Sisteme özgü yapılandırma: Tablo adları, alanlar, durum kodları, değişiklik belgesi nesneleri, teyit kaynakları, kullanılabilirlik kontrolü kaynakları ve mahsup kaynakları hedef SAP ECC sisteminde doğrulanmalıdır. Uygulamada standart ve güvenilir bir kaynak yoksa [Sisteminize göre yapılandırın] ifadesini kullanın.
a Örnek sorgu abap
REPORT [Your custom report name].
* This executable ABAP report is a complete extraction framework for the twelve required activities.
* Replace only the marked system-specific source sections, selection parameters, and file configuration.
* Confirm every table and field against the target SAP ECC system before activation.
PARAMETERS p_from TYPE sydatum OBLIGATORY.
PARAMETERS p_to TYPE sydatum OBLIGATORY.
PARAMETERS p_file TYPE string OBLIGATORY DEFAULT '[Application server file path]'.
PARAMETERS p_src TYPE string OBLIGATORY DEFAULT '[SAP ECC system identifier]'.
SELECT-OPTIONS s_werks FOR [Production plant field].
SELECT-OPTIONS s_aufnr FOR [Production order field].
SELECT-OPTIONS s_auart FOR [Production order type field].
SELECT-OPTIONS s_bukrs FOR [Company code field].
TYPES: BEGIN OF ty_event,
productionorder TYPE string,
activityname TYPE string,
eventtime TYPE string,
sourcesystem TYPE string,
lastdataupdate TYPE string,
productionplant TYPE string,
productcode TYPE string,
plannedquantity TYPE string,
deliveredquantity TYPE string,
actualstartdate TYPE string,
actualenddate TYPE string,
END OF ty_event.
DATA gt_events TYPE STANDARD TABLE OF ty_event WITH EMPTY KEY.
DATA gs_event TYPE ty_event.
DATA gv_update_timestamp TYPE string.
DATA gv_line TYPE string.
GET TIME STAMP FIELD DATA(gv_update_ts).
gv_update_timestamp = |{ gv_update_ts TIMESTAMP = ISO }|.
* Production Order Created
SELECT [Production order field], [Production plant field], [Product field], [Planned quantity field], [Creation date field], [Creation time field]
FROM [Production order header table]
INTO TABLE @DATA(lt_created)
WHERE [Creation date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks
AND [Production order type field] IN @s_auart
AND [Company code field] IN @s_bukrs.
LOOP AT lt_created ASSIGNING FIELD-SYMBOL(<created>).
CLEAR gs_event.
gs_event-productionorder = |{ <created>-[Production order field] }|.
gs_event-activityname = 'Production Order Created'.
gs_event-eventtime = |{ <created>-[Creation date field] } { <created>-[Creation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <created>-[Production plant field] }|.
gs_event-productcode = |{ <created>-[Product field] }|.
gs_event-plannedquantity = |{ <created>-[Planned quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Material Availability Checked
SELECT [Production order field], [Production plant field], [Product field], [Availability check date field], [Availability check time field]
FROM [Availability check source table]
INTO TABLE @DATA(lt_availability)
WHERE [Availability check date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_availability ASSIGNING FIELD-SYMBOL(<availability>).
CLEAR gs_event.
gs_event-productionorder = |{ <availability>-[Production order field] }|.
gs_event-activityname = 'Material Availability Checked'.
gs_event-eventtime = |{ <availability>-[Availability check date field] } { <availability>-[Availability check time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <availability>-[Production plant field] }|.
gs_event-productcode = |{ <availability>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Production Order Released
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field], [Planned quantity field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_released)
WHERE [Status field] = '[Released status code]'
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_released ASSIGNING FIELD-SYMBOL(<released>).
CLEAR gs_event.
gs_event-productionorder = |{ <released>-[Production order field] }|.
gs_event-activityname = 'Production Order Released'.
gs_event-eventtime = |{ <released>-[Status change date field] } { <released>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <released>-[Production plant field] }|.
gs_event-productcode = |{ <released>-[Product field] }|.
gs_event-plannedquantity = |{ <released>-[Planned quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Data Changed
SELECT [Production order field], [Change date field], [Change time field], [Production plant field], [Product field], [Changed field name]
FROM [Production order change document source table]
INTO TABLE @DATA(lt_changed)
WHERE [Change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Changed field name] IN ('[Planned quantity field]', '[Basic start date field]', '[Basic finish date field]', '[BOM field]', '[Routing field]').
LOOP AT lt_changed ASSIGNING FIELD-SYMBOL(<changed>).
CLEAR gs_event.
gs_event-productionorder = |{ <changed>-[Production order field] }|.
gs_event-activityname = 'Order Data Changed'.
gs_event-eventtime = |{ <changed>-[Change date field] } { <changed>-[Change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <changed>-[Production plant field] }|.
gs_event-productcode = |{ <changed>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Goods Issue Posted
SELECT [Production order field], [Posting date field], [Posting time field], [Production plant field], [Product field], [Quantity field]
FROM [Material document item source table]
INTO TABLE @DATA(lt_gi)
WHERE [Movement type field] IN ('[Goods issue movement type 1]', '[Goods issue movement type 2]')
AND [Posting date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_gi ASSIGNING FIELD-SYMBOL(<gi>).
CLEAR gs_event.
gs_event-productionorder = |{ <gi>-[Production order field] }|.
gs_event-activityname = 'Goods Issue Posted'.
gs_event-eventtime = |{ <gi>-[Posting date field] } { <gi>-[Posting time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <gi>-[Production plant field] }|.
gs_event-productcode = |{ <gi>-[Product field] }|.
gs_event-deliveredquantity = |{ <gi>-[Quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* First Confirmation Recorded
SELECT [Production order field], [Confirmation date field], [Confirmation time field], [Production plant field], [Product field], [Confirmed quantity field]
FROM [Production confirmation source table]
INTO TABLE @DATA(lt_confirmations)
WHERE [Confirmation date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
SORT lt_confirmations BY [Production order field] [Confirmation date field] [Confirmation time field].
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<confirmation>) GROUP BY <confirmation>-[Production order field] ASSIGNING FIELD-SYMBOL(<confirmation_group>).
LOOP AT GROUP <confirmation_group> ASSIGNING FIELD-SYMBOL(<first_confirmation>).
CLEAR gs_event.
gs_event-productionorder = |{ <first_confirmation>-[Production order field] }|.
gs_event-activityname = 'First Confirmation Recorded'.
gs_event-eventtime = |{ <first_confirmation>-[Confirmation date field] } { <first_confirmation>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <first_confirmation>-[Production plant field] }|.
gs_event-productcode = |{ <first_confirmation>-[Product field] }|.
gs_event-actualstartdate = gs_event-eventtime.
APPEND gs_event TO gt_events.
EXIT.
ENDLOOP.
ENDLOOP.
* Intermediate Confirmation Recorded
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<intermediate>) GROUP BY <intermediate>-[Production order field] ASSIGNING FIELD-SYMBOL(<intermediate_group>).
DATA(lv_intermediate_index) = 0.
DATA(lv_intermediate_count) = GROUP SIZE.
LOOP AT GROUP <intermediate_group> ASSIGNING FIELD-SYMBOL(<intermediate_row>).
lv_intermediate_index = lv_intermediate_index + 1.
IF lv_intermediate_index < lv_intermediate_count AND <intermediate_row>-[Final confirmation indicator field] <> '[Final confirmation value]'.
CLEAR gs_event.
gs_event-productionorder = |{ <intermediate_row>-[Production order field] }|.
gs_event-activityname = 'Intermediate Confirmation Recorded'.
gs_event-eventtime = |{ <intermediate_row>-[Confirmation date field] } { <intermediate_row>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <intermediate_row>-[Production plant field] }|.
gs_event-productcode = |{ <intermediate_row>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDIF.
ENDLOOP.
ENDLOOP.
* Final Confirmation Recorded
LOOP AT lt_confirmations ASSIGNING FIELD-SYMBOL(<final>) WHERE [Final confirmation indicator field] = '[Final confirmation value]'.
CLEAR gs_event.
gs_event-productionorder = |{ <final>-[Production order field] }|.
gs_event-activityname = 'Final Confirmation Recorded'.
gs_event-eventtime = |{ <final>-[Confirmation date field] } { <final>-[Confirmation time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <final>-[Production plant field] }|.
gs_event-productcode = |{ <final>-[Product field] }|.
gs_event-actualenddate = gs_event-eventtime.
APPEND gs_event TO gt_events.
ENDLOOP.
* Goods Receipt Posted
SELECT [Production order field], [Posting date field], [Posting time field], [Production plant field], [Product field], [Quantity field]
FROM [Material document item source table]
INTO TABLE @DATA(lt_gr)
WHERE [Movement type field] IN ('[Goods receipt movement type 1]', '[Goods receipt movement type 2]')
AND [Posting date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr
AND [Production plant field] IN @s_werks.
LOOP AT lt_gr ASSIGNING FIELD-SYMBOL(<gr>).
CLEAR gs_event.
gs_event-productionorder = |{ <gr>-[Production order field] }|.
gs_event-activityname = 'Goods Receipt Posted'.
gs_event-eventtime = |{ <gr>-[Posting date field] } { <gr>-[Posting time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <gr>-[Production plant field] }|.
gs_event-productcode = |{ <gr>-[Product field] }|.
gs_event-deliveredquantity = |{ <gr>-[Quantity field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Technically Completed
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_teco)
WHERE [Status field] = '[Technically completed status code]'
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_teco ASSIGNING FIELD-SYMBOL(<teco>).
CLEAR gs_event.
gs_event-productionorder = |{ <teco>-[Production order field] }|.
gs_event-activityname = 'Order Technically Completed'.
gs_event-eventtime = |{ <teco>-[Status change date field] } { <teco>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <teco>-[Production plant field] }|.
gs_event-productcode = |{ <teco>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Settlement Ran
SELECT [Production order field], [Settlement date field], [Settlement time field], [Production plant field], [Product field]
FROM [Order settlement source table]
INTO TABLE @DATA(lt_settlement)
WHERE [Settlement date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_settlement ASSIGNING FIELD-SYMBOL(<settlement>).
CLEAR gs_event.
gs_event-productionorder = |{ <settlement>-[Production order field] }|.
gs_event-activityname = 'Order Settlement Ran'.
gs_event-eventtime = |{ <settlement>-[Settlement date field] } { <settlement>-[Settlement time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <settlement>-[Production plant field] }|.
gs_event-productcode = |{ <settlement>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
* Order Cancellation Set
SELECT [Production order field], [Status change date field], [Status change time field], [Production plant field], [Product field]
FROM [Order status history source table]
INTO TABLE @DATA(lt_cancelled)
WHERE [Status field] IN ('[Cancellation status code]', '[Deletion status code]')
AND [Status change date field] BETWEEN @p_from AND @p_to
AND [Production order field] IN @s_aufnr.
LOOP AT lt_cancelled ASSIGNING FIELD-SYMBOL(<cancelled>).
CLEAR gs_event.
gs_event-productionorder = |{ <cancelled>-[Production order field] }|.
gs_event-activityname = 'Order Cancellation Set'.
gs_event-eventtime = |{ <cancelled>-[Status change date field] } { <cancelled>-[Status change time field] }|.
gs_event-sourcesystem = p_src.
gs_event-lastdataupdate = gv_update_timestamp.
gs_event-productionplant = |{ <cancelled>-[Production plant field] }|.
gs_event-productcode = |{ <cancelled>-[Product field] }|.
APPEND gs_event TO gt_events.
ENDLOOP.
SORT gt_events BY productionorder eventtime activityname.
DELETE ADJACENT DUPLICATES FROM gt_events COMPARING productionorder activityname eventtime productionplant productcode.
OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'The application server output file could not be opened' TYPE 'E'.
ENDIF.
TRANSFER 'ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdate,ProductionPlant,ProductCode,PlannedQuantity,DeliveredQuantity,ActualStartDate,ActualEndDate' TO p_file.
LOOP AT gt_events INTO gs_event.
gv_line = |{ gs_event-productionorder },{ gs_event-activityname },{ gs_event-eventtime },{ gs_event-sourcesystem },{ gs_event-lastdataupdate },{ gs_event-productionplant },{ gs_event-productcode },{ gs_event-plannedquantity },{ gs_event-deliveredquantity },{ gs_event-actualstartdate },{ gs_event-actualenddate }|.
TRANSFER gv_line TO p_file.
ENDLOOP.
CLOSE DATASET p_file.
MESSAGE |Event log written to { p_file }| TYPE 'S'. Başlamaya hazır mısınız?
Verilerinizi hazırlamak ve üretim planlama sürecinizi iyileştirmeye başlamak için bu Templateten yararlanın. İçgörüleri ortaya çıkarın ve operasyonlarınızı bugün daha verimli hale getirin.
Üretim planlamanızı şimdi iyileştirin, verimliliği artırın
Verimsizlikleri ortaya çıkarın, çevrim süresini %30 azaltın ve hedeflerinize ulaşın.
Kredi kartı gerekmez. İyileştirmeye bugün başlayın.