Šablona dat pro správu zásob
Šablona dat pro správu zásob
- Doporučené atributy ke sběru
- Důležité aktivity pro mapování procesů
- Pokyny k extrakci dat ze SAP S/4HANA
Atributy správy zásob
| Název | Popis | ||
|---|---|---|---|
| Čas události EventTime | Přesné datum a čas, kdy byla aktivita zásob zaznamenána v systému. | ||
| Popis Čas události je časové razítko, které přesně zaznamenává, kdy k aktivitě došlo. Umožňuje seřadit události chronologicky a rekonstruovat průběh procesu pro každou šarži zásob. Je základem všech časových analýz process mining. Přesnost času události je důležitá pro výpočet ukazatelů výkonnosti, jako jsou doby cyklu, průběžné doby a trvání jednotlivých kroků. Umožňuje analyzovat výkonnost procesu v různých obdobích, zjistit, kdy vznikají úzká místa, a přesně vyhodnotit zpoždění, například dobu, po kterou šarže čeká na uvolnění z kontroly kvality. Proč je to důležité Toto časové razítko řadí události chronologicky a slouží jako základ pro výpočet dob trvání a výkonnosti. Kde data získat Obvykle jde o kombinaci data zaúčtování (MKPF-BUDAT) a času zadání (MKPF-CPUTM) z hlavičky dokladu materiálu v tabulce MKPF. Příklady 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| Šarže zásob InventoryBatchLot | Jedinečný identifikátor konkrétního množství výrobku, který slouží jako ID případu pro sledování jeho životního cyklu. | ||
| Popis Číslo šarže zásob je hlavní identifikátor případu, který sdružuje všechny aktivity související s konkrétním množstvím výrobku. Umožňuje chronologicky sledovat cestu zásob od prvního příjmu do skladu přes různé interní přesuny a změny stavu až po výdej k prodeji, do výroby nebo k likvidaci. Tento atribut je základem analýzy procesů. Umožňuje sledovat průběh každé šarže od začátku do konce, přesně měřit dobu cyklu, odhalovat odchylky v procesu a porovnávat způsob zpracování různých šarží. Analýza na úrovni šarží je důležitá v odvětvích, kde záleží na sledovatelnosti, kontrole kvality a řízení data použitelnosti, například ve farmacii, potravinářství a chemickém průmyslu. Proč je to důležité Jde o hlavní identifikátor, který propojuje všechny související události zásob do jednoho případu a umožňuje analyzovat proces od začátku do konce. Kde data získat Obvykle jde o číslo šarže, které se v tabulkách SAP, například MCHA (kmenová data šarže) nebo MCH1 (šarže), nachází v poli CHARG. Příklady B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Aktivita ActivityName | Název obchodní události, ke které došlo v určitém okamžiku procesu řízení zásob. | ||
| Popis Atribut Aktivita popisuje jednotlivý krok nebo událost v životním cyklu šarže zásob. Může jít o důležité obchodní činnosti, například příjem zboží, přesun zásob, kontrolu kvality nebo výdej materiálu. Každá aktivita zaznamenává, co se se šarží zásob v určitém okamžiku stalo. Analýza aktivit je základem process mining. Umožňuje zobrazit průběh procesu, najít časté i ojedinělé cesty, odhalit úzká místa způsobená zpožděním aktivit a analyzovat opakované kroky. Když firmy porozumí pořadí a četnosti aktivit, jako jsou „Vyřazení zásob“ nebo „Kontrola kvality“, mohou určit, kde proces zlepšit a zvýšit efektivitu provozu. Proč je to důležité Určuje jednotlivé kroky procesu a umožňuje zobrazit a analyzovat životní cyklus zásob. Kde data získat Jde o odvozený atribut, který se často mapuje z typů pohybu SAP (MSEG-BWART) nebo transakčních kódů (MKPF-TCODE2) na srozumitelné názvy. Příklady Zaúčtování příjmu zbožíZaúčtování převodu do skladuZaúčtování výdeje zboží k dodávceVyřazení zásob | |||
| Číslo materiálu MaterialNumber | Jedinečný identifikátor spravovaného výrobku nebo materiálu. | ||
| Popis Číslo materiálu, často označované jako SKU (skladová položka), je jedinečný kód přiřazený konkrétnímu výrobku. Jde o základní prvek kmenových dat v řízení zásob, který slouží ke sledování množství, hodnoty a pohybů zboží. Analýza podle čísla materiálu umožňuje v process mining sledovat procesy zásob z pohledu jednotlivých výrobků. Pomáhá zjistit, které výrobky mají nejdelší dobu kontroly kvality, které se nejčastěji vyřazují nebo u kterých dochází k největšímu počtu interních přesunů. Toto členění je důležité pro odhalení problémů konkrétních výrobků a optimalizaci řízení různých druhů zboží. Proč je to důležité Umožňuje rozdělit analýzu podle výrobků a odhalit vzorce a problémy týkající se konkrétních položek. Kde data získat Nachází se v položce dokladu materiálu v tabulce MSEG, v poli MATNR. Kmenová data jsou v tabulce MARA. Příklady RM-1001FG-2050-B100-400-A | |||
| Jméno uživatele UserName | ID uživatele, který provedl transakci v SAP. | ||
| Popis Tento atribut zachycuje ID uživatele SAP, který zaúčtoval doklad nebo provedl aktivitu. Umožňuje dohledat, kdo odpovídá za konkrétní kroky v procesu řízení zásob. Analýza podle uživatele pomáhá vyhodnotit výkonnost, shodu s pravidly a potřeby školení. Dashboard „Příčiny ručních oprav zásob“ například využívá tento atribut k určení, kdo provádí nejvíce oprav. Může pomoci najít uživatele, kteří potřebují další školení, odhalit neoprávněné činnosti nebo ocenit pracovníky s dobrými výsledky. Proč je to důležité Umožňuje určit odpovědnost a odhalit chování konkrétních uživatelů, potřeby školení nebo problémy se shodou. Kde data získat Nachází se v hlavičce dokladu materiálu v tabulce MKPF, v poli USNAM (jméno uživatele). Příklady JSMITHMBROWNWAREHOUSE_OPS | |||
| Kód důvodu pohybu MovementReasonCode | Kód, který určuje důvod pohybu zásob. | ||
| Popis Kód důvodu pohybu doplňuje informace o tom, proč k pohybu zboží došlo. Často vysvětluje neplánované pohyby, například úpravy zásob, vratky nebo sešrotování. Tento atribut je užitečný při hledání příčin problémů. V dashboardu „Příčiny ručních úprav zásob“ může analýza podle kódu důvodu odhalit, proč vznikají nesrovnalosti, například kvůli poškození, krádeži nebo chybám při zadávání dat. Díky tomu můžete řešit příčinu problému, nejen napravovat jeho následky. Proč je to důležité Vysvětluje důvody neplánovaných pohybů zásob a umožňuje cíleně hledat jejich příčiny. Kde data získat Najdete ho v položkové tabulce materiálových dokladů MSEG, v poli GRUND (Reason for Movement). Příklady 00010005102 | |||
| Množství Quantity | Množství materiálu, kterého se pohyb zásob týká. | ||
| Popis Tento atribut udává množství materiálu přesunutého, přijatého, vydaného nebo upraveného v rámci dané aktivity. Zaznamenává se v základní měrné jednotce materiálu. Analýza množství pomáhá pochopit rozsah a dopad procesů v oblasti zásob. Umožňuje vytvářet dashboardy, které zobrazují objem zpracovávaného zboží, například „Průchodnost výdeje zboží podle SKU“. Množství se používá také k výpočtu KPI, jako je „Podíl sešrotovaných nebo vyřazených zásob“, a přináší do analýzy procesů číselný pohled, který jde nad rámec pouhého počítání událostí. Proč je to důležité Vyjadřuje objem materiálu v každé aktivitě a umožňuje analyzovat průchodnost, množství odpadu i dopad úprav. Kde data získat Najdete ho v položkové tabulce materiálových dokladů MSEG, v poli MENGE (Quantity). Příklady 10012.55000-10 | |||
| Skladové místo StorageLocation | Konkrétní místo v rámci Plantu, kde se fyzicky skladují zásoby. | ||
| Popis Skladové místo je organizační jednotka, která umožňuje rozlišovat zásoby materiálu v rámci jednoho Plantu. Plant může mít například samostatná skladová místa pro suroviny, hotové výrobky a zásoby čekající na kontrolu kvality. Tento atribut poskytuje podrobnější údaje o umístění než Plant. V analýze pomáhá sledovat přesuny mezi jednotlivými skladovými zónami, například dobu přepravy z příjmové zóny do hlavního skladu. Analýza využití skladových míst a četnosti pohybů vám pomůže lépe uspořádat sklad i interní logistiku. Proč je to důležité Zobrazuje umístění zásob v rámci Plantu podrobněji a pomáhá analyzovat interní přesuny i efektivitu skladování. Kde data získat Najdete ho v položkové tabulce materiálových dokladů MSEG, v poli LGORT (Storage Location). Příklady 0001RM01FG01QI01 | |||
| Typ pohybu MovementType | Tříciferný kód v SAP, který určuje způsob zaúčtování pohybu zboží. | ||
| Popis Typ pohybu je důležitý řídicí kód v SAP Inventory Management, který určuje vlastnosti pohybu materiálu. Stanovuje, které účty se aktualizují, jak vypadá rozložení obrazovky transakce a která pole množství nebo hodnoty se mění. Například 101 označuje příjem zboží, 311 převod a 551 vyřazení. Tento atribut se často používá k odvození srozumitelného názvu aktivity. Analýza podle typu pohybu poskytuje podrobný technický pohled na tok zásob. Je důležitá pro ověření správnosti mapy procesu a odhalení konkrétních typů transakcí, které mohou způsobovat úzká místa nebo odchylky. Proč je to důležité Poskytuje přesné technické zařazení každé události zásob. To je důležité pro odvození aktivit i podrobnou analýzu. Kde data získat Nachází se v položce dokladu materiálu v tabulce MSEG, v poli BWART (typ pohybu). Příklady 101311261551601 | |||
| Závod Plant | Organizační jednotka představující provozovnu, ve které se nacházejí zásoby, například továrnu nebo distribuční centrum. | ||
| Popis Plant je ústřední organizační jednotka v SAP. Může označovat výrobní závod, centrální sklad nebo sídlo společnosti. Veškeré zásoby jsou fyzicky nebo logicky přiřazeny k určitému Plantu. Analýza podle Plantu je základem pro porovnání výkonnosti procesů na různých místech. Pomůže vám odpovědět například na otázky: „Ve kterém závodě trvá zaskladnění nejdéle?“ nebo „Je míra nesrovnalostí v zásobách vyšší v Plantu A, nebo v Plantu B?“ Členění podle místa či organizační jednotky usnadňuje odhalit místní problémy a sdílet osvědčené postupy napříč organizací. Proč je to důležité Umožňuje porovnávat procesy a výkonnost v oblasti zásob mezi různými provozovnami společnosti. Kde data získat Najdete ho v položkové tabulce materiálových dokladů MSEG, v poli WERKS (Plant). Příklady 10001710DE01US01 | |||
| Číslo materiálového dokladu MaterialDocumentNumber | Jedinečné číslo materiálového dokladu, který zaznamenává pohyb zboží. | ||
| Popis Když se v SAP zaúčtuje pohyb zboží, systém vytvoří materiálový doklad jako potvrzení tohoto pohybu. Tento atribut je jedinečným identifikátorem dokladu. Jeden materiálový doklad může obsahovat více položek nebo aktivit. V process mining slouží číslo materiálového dokladu jako důležitý identifikátor transakce. Umožňuje seskupit související události zaúčtované společně. Je také nezbytné pro audit a pro přechod od analýzy procesu ke konkrétním transakcím ve zdrojovém systému. Proč je to důležité Slouží jako identifikátor transakce pro audit a umožňuje seskupit aktivity provedené společně. Kde data získat Najdete ho v tabulkách MKPF (hlavička) a MSEG (položka), v poli MBLNR (Number of Material Document). Příklady 490000123450000056784900002345 | |||
| Datum expirace ExpirationDate | Datum, kdy šarše materiálu končí doba použitelnosti a materiál už nelze použít. | ||
| Popis Datum expirace (SLED) je důležitý kmenový údaj pro zboží podléhající zkáze nebo s omezenou dobou použitelnosti. Eviduje se na úrovni šarže a určuje, kdy už produkt nelze prodávat ani spotřebovat. Tento atribut je nezbytný pro dashboard „Analýza zastaralých a prošlých zásob“. Analýza aktivit podle data expirace pomáhá odhalit šarže, kterým hrozí expirace, a včas přijmout opatření. Umožňuje také vyhodnotit účinnost pravidel rotace zásob, například FEFO (první expiruje, první se vydá), a vyčíslit ztráty způsobené vyřazením prošlých zásob. Proč je to důležité Umožňuje analyzovat zastaralé a prošlé zásoby a pomáhá omezit plýtvání i finanční ztráty. Kde data získat Najdete ho v kmenových tabulkách šarží MCH1 nebo MCHA, v poli VFDAT (Shelf Life Expiration Date). Příklady 2024-12-312025-06-302024-09-01 | |||
| Doba vyřízení objednávky OrderFulfillmentCycleTime | Celková doba od zahájení vychystávání po výdej zboží k dodání. | ||
| Popis Tato vypočítaná metrika měří dobu od aktivity „Zahájeno vychystávání“ po aktivitu „Zaúčtován výdej zboží k dodání“. Udává, jak dlouho skladu trvá připravit a odeslat zákaznickou objednávku od zahájení procesu. Tento atribut přímo měří KPI „Doba vyřízení objednávky“. Analýza pomáhá zjistit, jak rychle firma reaguje na poptávku zákazníků. Dobu lze rozdělit podle produktu, skladu nebo zákazníka a určit, kde dochází ke zpoždění při vychystávání, balení a expedici. Tyto prodlevy přímo ovlivňují spokojenost zákazníků i efektivitu logistiky. Proč je to důležité Měří rychlost a efektivitu výdeje zboží ze skladu, což přímo ovlivňuje spokojenost zákazníků. Kde data získat Jde o vypočítaný atribut. Pro každou šarži se od sebe odečtou časy událostí „Zahájeno vychystávání“ a „Zaúčtován výdej zboží k dodání“. Příklady 7200144003600 | |||
| Měrná jednotka UnitOfMeasure | Jednotka, ve které se měří množství materiálu, například kusy nebo kilogramy. | ||
| Popis Měrná jednotka určuje jednotku pro atribut „Množství“. Mezi běžné příklady patří kusy (PC), kilogramy (KG), litry (L) nebo krabice (BOX). Díky tomu lze hodnotu množství správně interpretovat. Tento atribut může působit jako pouhý popis, je však důležitý pro kvalitu dat i pro analýzy, ve kterých je třeba převádět různé jednotky na společný standard. Chcete-li například správně vypočítat celkovou hodnotu sešrotovaných zásob, musíte znát jednotky jednotlivých množství a případně je převést. Proč je to důležité Doplňuje atribut „Množství“ o potřebný kontext, aby bylo možné objem materiálu správně interpretovat. Kde data získat Najdete ho v položkové tabulce materiálových dokladů MSEG, v poli MEINS (Base Unit of Measure). Příklady KusKilogramKusMetr | |||
| Poslední aktualizace dat LastDataUpdate | Časové razítko označující, kdy byla data tohoto záznamu naposledy aktualizována ze zdrojového systému. | ||
| Popis Tento atribut zaznamenává datum a čas poslední extrakce nebo aktualizace dat ze zdrojového systému. Poskytuje důležitou informaci o aktuálnosti analyzovaných dat. Uživatelé tak poznají, zda pracují s daty téměř v reálném čase, nebo se snímkem z minulého období. Pro správné závěry je důležité vědět, jak aktuální data jsou. Toto pole umožňuje analytikům i uživatelům z řad vedení ověřit jejich aktuálnost a často se zobrazuje na dashboardech jako kontext k prezentovaným poznatkům. Proč je to důležité Informuje uživatele o aktuálnosti dat a pomáhá zajistit, aby analýzy vycházely z nejnovějších dostupných informací. Kde data získat Toto časové razítko se vytváří a přidává při procesu extrakce, transformace a načítání dat (ETL). Příklady 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
| Skladová pozice StorageBin | Nejpodrobnější skladová jednotka, která označuje konkrétní místo uložení materiálu. | ||
| Popis Skladová pozice označuje konkrétní souřadnici ve skladu, například místo v regálu. Tato úroveň podrobnosti se obvykle používá při nasazení SAP Warehouse Management (WM) nebo Extended Warehouse Management (EWM). Tento atribut je důležitý pro dashboard „Využití skladových pozic“. Pomáhá vyhodnotit, jak efektivně se využívá skladový prostor, odhalit místa s možným přetížením a najít neefektivní trasy při zaskladňování nebo vychystávání. Analýza přesunů mezi skladovými pozicemi pomáhá lépe uspořádat sklad a zkrátit dobu pohybu pracovníků. Proč je to důležité Poskytuje nejpodrobnější údaje o umístění a umožňuje analyzovat využití skladového prostoru i efektivitu provozu. Kde data získat Pokud používáte WM, údaje najdete například v tabulkách skladových příkazů LTAK/LTAP. U skladových dokladů mohou být v poli MSEG-LGPBE. Podrobnosti ověřte v dokumentaci SAP S/4HANA. Příklady A-01-01-AB-05-10-CRCV-AREA-01 | |||
| Typ zásob StockType | Udává stav zásob, například volně použitelné, v kontrole kvality nebo blokované. | ||
| Popis Typ zásob rozděluje zásoby podle toho, zda je lze použít. Základní typy jsou volně použitelné zásoby, zásoby čekající na kontrolu kvality a blokované zásoby, které nelze použít. Při pohybu zboží se typ zásob často mění. Sledování změn typu zásob je základem pro pochopení procesu dostupnosti zásob. Pomáhá sledovat aktivity jako „Zásoby zaúčtovány ke kontrole kvality“ nebo „Stav zásob změněn na blokovaný“. Analýza doby strávené v jednotlivých typech zásob, zejména při kontrole kvality, pomáhá odhalit zpoždění, která ovlivňují dostupnost zboží pro prodej nebo výrobu. Proč je to důležité Sleduje, zda lze zásoby použít, a pomáhá analyzovat zpoždění při kontrole kvality i dostupnost zásob. Kde data získat Najdete ho v položkové tabulce materiálových dokladů MSEG, v poli INSMK (Stock Type). Příklady Volně použitelnéKontrola kvalityBlokované zásoby | |||
| Zdrojový systém SourceSystem | Určuje zdrojový systém, ze kterého byla data získána. | ||
| Popis Tento atribut určuje systém, ve kterém původně vznikla data o řízení zásob. V tomto případě jde o konkrétní instanci SAP S/4HANA. Tato informace je důležitá v prostředích, kde se data získávají z více systémů ERP, systémů řízení skladu nebo starších platforem. Při analýze jednoho systému může tento údaj působit neměnně. Je však zásadní při slučování dat z různých zdrojů, aby bylo možné získat ucelený pohled na proces. Pomáhá při správě dat, řešení problémů s extrakcí a zajištění přehledné historie původu dat. Proč je to důležité Udává původ dat, což je důležité pro správu dat a analýzu více systémů. Kde data získat Obvykle jde o pevně zadanou hodnotu, která se nastavuje při transformaci dat a označuje konkrétní instanci SAP S/4HANA. Příklady S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
Aktivity správy zásob
| Aktivita | Popis | ||
|---|---|---|---|
| Uvolnění zásob z kontroly kvality | Označuje, že šarže prošla kontrolou kvality a lze ji použít nebo zaskladnit. Zaznamenává se jako samostatný převod zásob z kontroly kvality na jiný typ, například na volně použitelné zásoby. | ||
| Proč je to důležité Tento milník označuje dokončení kontroly kvality a zpřístupnění zásob. Zpoždění v této fázi může výrazně narušit navazující výrobu nebo vyřízení objednávek. Kde data získat Zaznamenává se v tabulce MATDOC jako převod. Obvykle jde o typ pohybu (BWART) 321, který převádí zásoby z „Kontroly kvality“ na „Volně použitelné“. Zachycení Zachycuje se z dokladů materiálu v tabulce MATDOC s typem pohybu 321. Typ události explicit | |||
| Vyřazení zásob | Označuje konečnou likvidaci šarže a její trvalé odebrání z evidence zásob. Obvykle se týká prošlých, poškozených nebo zastaralých zásob. | ||
| Proč je to důležité Jde o koncovou událost, která představuje finanční ztrátu. Analýza vyřazování pomáhá odhalit problémy se stárnutím zásob, postupy při manipulaci nebo prognózováním poptávky. Kde data získat Zaznamenává se v tabulce MATDOC. Určuje se podle typů pohybu (BWART) pro vyřazení, například 551 (z volně použitelných zásob), 553 (z kontroly kvality) nebo 555 (z blokovaných zásob). Zachycení Zachycuje se z dokladů materiálu v tabulce MATDOC s typy pohybu pro vyřazení, například 551. Typ události explicit | |||
| Zaúčtování opravy zásob | Zaznamenává změnu množství zásob na základě fyzické inventury nebo jiné zjištěné nesrovnalosti. Tato událost upraví účetní stav zásob tak, aby odpovídal fyzicky zjištěnému množství. | ||
| Proč je to důležité Tyto opravy jsou důležité pro přesnou evidenci zásob. Časté opravy ukazují na možné problémy s manipulací se zásobami, zabezpečením nebo zadáváním dat. Kde data získat Zaznamenává se v tabulce MATDOC. Určuje se podle typů pohybu (BWART) pro fyzickou inventuru, například 701 (přebytek zásob) nebo 702 (úbytek zásob). Zachycení Zachycuje se z dokladů materiálu v tabulce MATDOC s typy pohybu pro opravy při fyzické inventuře, například 701 nebo 702. Typ události explicit | |||
| Zaúčtování převodu do skladu | Zaznamenává fyzický přesun šarže z příjmové nebo přechodné zóny na konečné skladovací místo či pozici. V SAP se eviduje jako doklad materiálu o převodu. | ||
| Proč je to důležité Dokončuje příjem zboží. Doba potřebná k této aktivitě, tedy doba zaskladnění, je důležitým KPI efektivity skladu. Kde data získat Zaznamenává se v tabulce MATDOC jako převod, často mezi skladovými místy, například typem pohybu 311. Konkrétní pohyb závisí na uspořádání skladu. Zachycení Určuje se podle dokladů o převodu v tabulce MATDOC, které přesouvají zásoby z přechodného či příjmového skladového místa (SLoc) na konečné skladové místo (SLoc). Typ události explicit | |||
| Zaúčtování příjmu zboží | Zaznamenává první příjem šarže zásob do skladu, obvykle od dodavatele nebo z výroby. Tato událost se v SAP S/4HANA zachytí při vytvoření dokladu materiálu při příjmu zboží. | ||
| Proč je to důležité Jde o hlavní počáteční událost životního cyklu zásob. Doba od této aktivity k dalším krokům, například k zaskladnění, je důležitým ukazatelem efektivity příjmu zboží. Kde data získat Zaznamenává se v tabulce MATDOC. Určuje se podle konkrétního typu pohybu (BWART), například 101 pro příjem z objednávky nebo 103 pro příjem na blokované zásoby. Zachycení Zachycuje se z dokladů materiálu v tabulce MATDOC s odpovídajícím typem pohybu pro příjem zboží. Typ události explicit | |||
| Zaúčtování výdeje zboží do výroby | Zaznamenává spotřebu šarže zásob ve výrobní nebo procesní zakázce. Tato transakce sníží zásoby a přiřadí náklady na materiál výrobní zakázce. | ||
| Proč je to důležité Jde o hlavní událost spotřeby, která označuje konec životního cyklu zásob pro dané komponenty. Je důležitá pro analýzu dostupnosti materiálu pro výrobu a způsobů jeho spotřeby. Kde data získat Zaznamenává se v tabulce MATDOC. Určuje se podle typů pohybu (BWART) pro výdej zboží do zakázky, například 261. Zachycení Zachycuje se z dokladů materiálu v tabulce MATDOC s typem pohybu 261. Typ události explicit | |||
| Zaúčtování výdeje zboží k dodávce | Zaznamenává závěrečný krok expedice, kdy se šarže předává zákazníkovi nebo dopravci. Jde o samostatnou transakci, která sníží zásoby a zaúčtuje pohyb do účetnictví. | ||
| Proč je to důležité Jde o důležitou událost označující dokončení vyřízení objednávky. Je nezbytná pro měření včasnosti dodání a výpočet celkové doby vyřízení objednávky. Kde data získat Zaznamenává se v tabulce MATDOC. Určuje se podle typu pohybu (BWART) pro výdej zboží k dodávce zákaznické objednávky, obvykle 601. Zachycení Zachycuje se z dokladů materiálu v tabulce MATDOC s typem pohybu 601. Typ události explicit | |||
| Převedení zásob na kontrolu kvality | Zaznamenává přesun přijaté šarže do stavu zásob určených ke kontrole kvality. Do uvolnění je nelze použít. V SAP jde o samostatnou transakci, která mění typ zásob dané šarže. | ||
| Proč je to důležité Tato aktivita zahajuje kontrolu kvality. Doba mezi tímto krokem a uvolněním z kontroly kvality je důležitým ukazatelem zpoždění souvisejících s kvalitou. Kde data získat Zaznamenává se v tabulce MATDOC. Může jít o příjem zboží, například pohyb 101, s typem zásob (INSMK) nastaveným na „Q“ (kontrola kvality), nebo o převod, například pohyb 322. Zachycení Určují se podle dokladů materiálu v tabulce MATDOC, které zařazují zásoby do typu „Kontrola kvality“. Typ události explicit | |||
| Příjem vráceného zboží od zákazníka | Zaznamenává návrat dříve vydané šarže od zákazníka zpět do skladu. Jde o samostatnou transakci, která zvýší stav zásob. | ||
| Proč je to důležité Sledování vratek je důležité pro pochopení problémů s kvalitou výrobků a nespokojenosti zákazníků. Neefektivní může být také samotné zpracování vráceného zboží a rozhodování o jeho dalším využití. Kde data získat Zaznamenává se v tabulce MATDOC. Určuje se podle typů pohybu (BWART) pro vratky od zákazníků, například 651 (na volně použitelné zásoby) nebo 653 (na kontrolu kvality). Zachycení Zachycuje se z dokladů materiálu v tabulce MATDOC s typy pohybu pro vratky od zákazníků, například 651 nebo 653. Typ události explicit | |||
| Zahájení vychystávání | Označuje začátek vyřízení objednávky, kdy se vytvoří skladový úkol k vychystání šarže z její skladovací pozice. Často se zachytí při vytvoření převodního příkazu nebo skladového úkolu. | ||
| Proč je to důležité Tato aktivita zahajuje vychystávání. Doba od této události do dokončení vychystávání pomáhá měřit efektivitu pracovníků skladu a odhalovat zpoždění. Kde data získat Tato událost se obvykle nezaznamenává v tabulce MATDOC. V systémech Warehouse Management (WM/EWM) se odvozuje z času vytvoření převodního příkazu (tabulka LTAK) nebo skladového úkolu. Zachycení Odvozuje se ze záznamu o vytvoření převodního příkazu (ve WM) nebo skladového úkolu (v EWM) propojeného s šarží materiálu. Typ události inferred | |||
| Zaúčtování interního přesunu zásob | Zaznamenává přesun šarže zásob mezi různými skladovými místy nebo pozicemi v rámci jednoho závodu. Jde o samostatnou transakci, při které vzniká doklad materiálu. | ||
| Proč je to důležité Sledování interních přesunů pomáhá vyhodnotit efektivitu provozu skladu, odhalit zbytečné pohyby a měřit dobu doplňování zásob mezi skladovými místy. Kde data získat Zaznamenává se v tabulce MATDOC. Převody mezi skladovými místy se obvykle určují podle typu pohybu (BWART) 311. Zachycení Zachycuje se z dokladů materiálu v tabulce MATDOC s typy pohybu pro interní přesuny zásob, například 311. Typ události explicit | |||
| Změna stavu šarže | Označuje změnu kmenového záznamu šarže, například změnu stavu z „Volně použitelná“ na „Omezená“. Nejde o pohyb materiálu, ale o zaznamenanou změnu kmenových dat. | ||
| Proč je to důležité Změny stavu šarže přímo ovlivňují její použitelnost při prodeji nebo ve výrobě. Jejich analýza může odhalit problémy s blížícím se koncem použitelnosti nebo kontrolou kvality, které nesouvisejí s fyzickým pohybem. Kde data získat Odvozuje se z protokolů změn kmenových tabulek šarží (MCH1, MCHA). Tabulky CDHDR a CDPOS sledují změny pole stavu šarže (MCH1-ZUSTD). Zachycení Odvozuje se z dokladů změn v CDHDR/CDPOS pro pole stavu v kmenovém záznamu šarže (MCH1-ZUSTD). Typ události inferred | |||
| Změna stavu zásob na blokované | Zaznamenává změnu stavu šarže, která ji znepřístupní pro výdej, například kvůli poškození, požadavku na pozastavení nebo jinému důvodu. V SAP jde o samostatný převod. | ||
| Proč je to důležité Upozorňuje na přerušení dostupnosti zásob. Časté blokování může poukazovat na problémy s manipulací, skladovacími podmínkami nebo kvalitou dodavatelů. Kde data získat Zaznamenává se v tabulce MATDOC jako převod. Typ pohybu (BWART) 344 obvykle převádí zásoby z „Blokovaných“ na „Volně použitelné“ a typ 343 z „Volně použitelných“ na „Blokované“. Tato aktivita odpovídá typu 343. Zachycení Určuje se podle dokladů materiálu v tabulce MATDOC s typem pohybu 343. Typ události explicit | |||
| Změna stavu zásob na volně použitelné | Zaznamenává změnu stavu šarže, která ji uvolní z blokace nebo pozastavení kvůli kontrole kvality a zpřístupní k použití. Eviduje se jako samostatný převod. | ||
| Proč je to důležité Tato aktivita označuje vyřešení blokace zásob. Analýza doby, po kterou jsou zásoby blokované, pomáhá zlepšit postupy řešení těchto případů. Kde data získat Zaznamenává se v tabulce MATDOC jako převod. Typ pohybu (BWART) 344 převádí zásoby z „Blokovaných“ na „Volně použitelné“. Zachycení Určuje se podle dokladů materiálu v tabulce MATDOC s typem pohybu 344. Typ události explicit | |||
Návody k extrakci dat
Kroky
- Zajistěte přístup do systému: Ověřte, že máte uživatele s potřebnými oprávněními pro dotazování nad pohledy Core Data Services (CDS) v systému SAP S/4HANA. Přístup obvykle uděluje správce systému.
- Vyberte SQL klienta: Zvolte nástroj SQL klienta, který se dokáže připojit k databázi SAP HANA. Mezi běžné možnosti patří SAP HANA Studio, SAP HANA Database Explorer nebo nástroje třetích stran, například DBeaver.
- Nastavte připojení k databázi: V SQL klientovi vytvořte nové připojení k databázi. Budete potřebovat název hostitele databáze HANA, číslo portu (obvykle 3<instance_number>15) a přihlašovací údaje uživatele databáze.
- Připravte SQL dotaz: Zkopírujte celý SQL dotaz uvedený v části „query“ tohoto dokumentu do editoru SQL klienta.
- Nastavte parametry dotazu: Najděte v dotazu zástupné hodnoty. Nahraďte
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'požadovaným časovým rozmezím, napříkladBETWEEN '20230101' AND '20230630'. Upravte také filtry pro společnost nebo Plant, napříkladMaterialDocumentItem.Plant IN ('Plant1', 'Plant2'), aby odpovídaly vaší organizační struktuře. - Spusťte dotaz: Spusťte upravený SQL dotaz nad databází S/4HANA. Doba zpracování závisí na zvoleném časovém rozmezí a objemu dat o zásobách v systému.
- Zkontrolujte data: Po dokončení dotazu zkontrolujte výsledky v SQL klientovi a ověřte, že jsou správné a úplné. Zkontrolujte, zda obsahují různé aktivity a vyplněné důležité atributy.
- Exportujte záznam událostí: Exportujte celou sadu výsledků z SQL klienta do souboru CSV. Nastavte kódování UTF-8, aby nedocházelo k problémům se znaky.
- Připravte soubor k nahrání: Názvy sloupců v souboru CSV musí přesně odpovídat aliasům v dotazu, například
InventoryBatchLot,ActivityName,EventTimea dalším. Soubor je nyní připraven k nahrání do nástroje process mining.
Konfigurace
- Oprávnění: Uživatel spouštějící dotaz potřebuje oprávnění
SELECTpro následující CDS View:I_MaterialDocumentItem,I_BatchChangeDocumentaI_WarehouseTask. Je také nutný přístup k databázovému schématu, ve kterém se tyto pohledy nacházejí. - Filtrování podle časového rozmezí: Je důležité nastavit filtr časového rozmezí pro pole
PostingDate,ChangeDocumentCreationDateneboWarehouseTaskCreationDate. Pro analýzu se obvykle používá období 3 až 12 měsíců. Dotazování za několik let může výrazně zpomalit systém. - Organizační filtry: Pro lepší výkon a cílenější analýzu přidejte klauzule
WHERE, které filtrují podlePlantneboCompanyCode. Tím omezíte objem dat a zaměříte extrakci na relevantní části provozu. - Objem dat: Počítejte s tím, že systémy pro správu zásob vytvářejí velké množství dat. Při širokém časovém rozmezí mohou výsledky obsahovat miliony řádků, což může ovlivnit výkon zdrojového systému při extrakci i klientského nástroje.
- Extended Warehouse Management (EWM): Aktivita „Zahájeno vychystávání“ využívá CDS View
I_WarehouseTask, které obsahuje data pouze v případě, že používáte SAP Extended Warehouse Management. Pokud vaše organizace používá starší modul Warehouse Management (WM) nebo pouze Inventory Management (IM), tato aktivita se neextrahuje.
Ukázkový dotaz 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 Kroky
- Ověřte, že je přímý přístup SAP HANA SQL schválený a že uživatel pro extrakci má přístup pro čtení k tabulce MATDOC a k potřebným kmenovým tabulkám šarží. Zjistěte vlastníka fyzického schématu a nahraďte [Your SAP HANA schema] schváleným názvem schématu.
- Ověřte dostupná pole tabulek MATDOC a šarží v používané verzi SAP S/4HANA. Níže uvedený dotaz používá běžně dostupná pole MATDOC a MCHA, jejich dostupnost a názvy se však mohou lišit podle verze, způsobu nasazení a aktivovaného rozsahu. Před spuštěním nahraďte všechna pole označená [Configure based on your system].
- Nastavte období extrakce nahrazením [Start timestamp] a [End timestamp] hodnotami časového razítka ve formátu ISO. Při první extrakci použijte období tří až šesti měsíců. Po ověření objemu a výkonu ho případně prodlužte.
- Spusťte dotaz ve schváleném SQL klientovi, SAP HANA Database Explorer nebo jiném oprávněném databázovém nástroji. Výsledky omezte na požadované kódy společností, Planty, typy dokladů nebo typy pohybů nahrazením příslušných zástupných filtrů.
- Zkontrolujte mapování typů pohybu v CTE pro aktivity. Význam typů pohybu závisí na konfiguraci systému a provozu. Nahraďte ukázkové seznamy typů pohybu hodnotami nastavenými v cílovém systému pro příjem zboží, kontrolu kvality, uvolnění, zaskladnění, interní přesun, blokované zásoby, volně použitelné zásoby, úpravu zásob, vychystávání, výdej k dodání, výdej do výroby, vratku od zákazníka a sešrotování.
- Ověřte, že každý výstupní řádek obsahuje InventoryBatchLot, ActivityName a EventTime. Zkontrolujte, zda je identifikátor šarže dostatečně stabilní, aby mohl sloužit jako identifikátor případu v ProcessMind. Pokud je pro rozlišení stejných hodnot šarže napříč organizačními jednotkami nutné použít materiál, Plant nebo skladové místo, použijte nastavený složený identifikátor případu místo samotné hodnoty šarže.
- Ověřte pořadí událostí, duplicitní řádky, stornovací doklady, zrušené doklady a práci s časovými pásmy. MATDOC zaznamenává zaúčtování dokladů, takže stornovací a rušící záznamy se mohou objevit jako samostatné události, pokud je výslovně nevyloučíte nebo nenamapujete.
- Exportujte výsledky dotazu do plochého souboru, v němž bude jeden řádek na událost a sloupce InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity a MovementReasonCode. Časová razítka zachovejte v jednotném formátu ISO 8601 a u hodnot materiálu, šarže, Plantu a skladového místa zachovejte úvodní nuly.
- Nahrajte výsledný záznam událostí do ProcessMind a namapujte InventoryBatchLot jako identifikátor případu, ActivityName jako aktivitu a EventTime jako časové razítko události. Nespoléhejte na to, že ProcessMind odvodí aktivity, sloučí záznamy nebo doplní chybějící události.
Konfigurace
- Metoda extrakce: Přímý SQL dotaz nad daty SAP HANA o zásobách a šaržích. Dotaz čte MATDOC a spojuje ji s kmenovými daty šarží z MCHA. Tabulku MCH1 nebo jinou tabulku šarží přidejte až po ověření příslušných polí a úrovně šarže v cílovém systému.
- Časové rozmezí: Začněte obdobím tří až šesti měsíců. EventTime nastavte podle data a času zaúčtování materiálového dokladu dostupných v MATDOC. Při přírůstkovém načítání použijte řízené překryvné období, abyste zachytili pozdější zaúčtování, a následně odstraňte duplicity podle nastavených identifikátorů dokladu a položky.
- Povinné filtry: Podle rozsahu procesu nastavte kód společnosti, Plant, typ materiálového dokladu, typ pohybu, přítomnost šarže a datum zaúčtování. Před přidáním polí pro kód společnosti a typ dokladu do dotazu ověřte jejich dostupnost v nainstalované verzi.
- Mapování aktivit: Význam typů pohybu závisí na konfiguraci. Udržujte schválenou mapovací tabulku nebo nahraďte seznamy typů pohybu v dotazu hodnotami používanými ve vaší organizaci. Nepovažujte ukázkové seznamy za obecně platnou sémantiku SAP.
- Rozsah šarží: Dotaz vylučuje řádky bez hodnoty šarže, protože identifikátorem případu je InventoryBatchLot. Pokud je třeba odvodit šarži z jiného zdroje, před extrakcí tento zdroj výslovně nastavte.
- Podrobnost událostí: Každá odpovídající položka MATDOC se zapíše jako jeden řádek události. Dotaz neodvozuje vychystávání, rozhodnutí o kvalitě, změny stavu šarže ani jiné aktivity z pozdějších záznamů.
- Změny kmenových dat šarží: Samotná MATDOC spolehlivě nezachycuje změny stavu šarže. Pro aktivitu „Změna stavu šarže“ nastavte zdroj změnových dokladů nebo historie šarže. Dotaz obsahuje zástupnou větev, kterou je nutné před spuštěním napojit na ověřený zdroj.
- Vychystávání: Zahájení vychystávání se obvykle zaznamenává v datech o provozu skladu, nikoli jako zaúčtování v MATDOC. Nastavte ověřený zdroj skladových úloh nebo skladových příkazů a před spuštěním nahraďte zástupnou větev.
- Výkon: Filtrujte podle časového razítka nebo data zaúčtování, Plantu, kódu společnosti a relevantních typů pohybu. Vybírejte pouze potřebné sloupce, vyhněte se neomezenému procházení historických dat a dotaz spouštějte v době schválené pro zátěž systému. U velkých objemů MATDOC se doporučuje dělení extrakce na části nebo přírůstkové načítání.
- Oprávnění a předpoklady: Zajistěte schválené databázové připojení, přístup ke schématu, oprávnění ke čtení, přístup k datům o zásobách SAP S/4HANA a přístup ke všem zdrojům provozu skladu nebo historie změn, které používáte pro dvě aktivity mimo MATDOC. Ověřte, že přímý přístup k databázi odpovídá provoznímu modelu a zásadám podpory SAP ve vaší organizaci.
- Časová pásma: Ověřte časová pásma databáze a aplikace. Před nahráním do ProcessMind převádějte EventTime jednotným způsobem.
- Ochrana dat: Dodržujte pravidla organizace pro ID uživatelů, data o materiálech, zákaznická data a přihlašovací údaje k databázi. Nevkládejte přihlašovací údaje do textu dotazu.
Ukázkový dotaz 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; Kroky
- Otevřete editor ABAP: Přihlaste se do systému SAP S/4HANA. Editor ABAP otevřete pomocí transakčního kódu
SE38. - Vytvořte nový program: Do pole „Program“ zadejte název nového programu, například
Z_PM_INVENTORY_EXTRACT, a klikněte na tlačítko „Vytvořit“. Zadejte výstižný název, jako typ vyberte „Spustitelný program“ a program uložte do balíčku. - Nastavte parametry programu: V editoru programu definujte obrazovku výběru, která bude sloužit jako uživatelské rozhraní pro extrakci. Uživatelé v ní mohou zadat například časové období a závod, pro který se mají data extrahovat.
- Implementujte logiku extrakce: Zkopírujte celý kód ABAP z části „Dotaz“ a vložte jej do editoru ABAP. Kód vybírá data ze SAP tabulek pro všech 14 požadovaných skladových aktivit.
- Seznamte se se základní logikou: Program vybírá data pro každou skladovou aktivitu ze zdrojových tabulek, například
MKPFaMSEGpro pohyby materiálu neboCDHDRaCDPOSpro změny kmenových dat. Výsledky jednotlivých výběrů spojí pomocíUNION ALLdo jedné interní tabulky, která představuje záznam událostí. - Nastavte výstup do souboru: Závěrečná část kódu zapíše sloučená data z interní tabulky do souboru. Pomocí příkazu
OPEN DATASETvytvoří soubor na aplikačním serveru SAP. Zadejte platnou cestu na serveru, do které má uživatel systému SAP oprávnění zapisovat. - Spusťte program: Program uložte a aktivujte (Ctrl+F3). Spusťte jej klávesou F8. Na obrazovce výběru zadejte požadované časové období a případné další filtry, například závod nebo kód společnosti.
- Spusťte program jako úlohu na pozadí: Při zpracování velkého objemu dat je důležité spustit program jako úlohu na pozadí, aby nevypršel časový limit relace. Na obrazovce spuštění (F8) otevřete nabídku
Program -> Spustit na pozadí. Naplánujte úlohu na dobu mimo špičku. - Stáhněte výstupní soubor: Po dokončení úlohy najděte výstupní soubor na aplikačním serveru SAP. Pomocí transakčního kódu
AL11projděte adresáře serveru a soubor vyhledejte. TransakcíCG3Yjej stáhněte na svůj počítač. - Připravte soubor k nahrání: Otevřete stažený soubor v textovém editoru nebo tabulkovém procesoru. Zkontrolujte, že je ve formátu CSV se záhlavím, čárkou jako oddělovačem a dvojitými uvozovkami jako ohraničením textu. Před nahráním do nástroje process mining ověřte, že názvy sloupců odpovídají požadavkům.
Konfigurace
- Rozsah data zaúčtování: Jde o nejdůležitější parametr. Doporučujeme extrahovat data po zvládnutelných dávkách, například za 3 až 6 měsíců, aby systém pracoval spolehlivě a nevypršel časový limit.
- Filtr závodu: Důrazně doporučujeme filtrovat podle jednoho nebo více konkrétních závodů (
WERKS). Extrakce dat ze všech závodů najednou může výrazně zatížit zdroje. - Filtr kódu společnosti: Pokud vaše organizace používá v jednom systému více kódů společností, můžete rozsah dat dále omezit volitelným filtrem podle kódu společnosti (
BUKRS). - Cesta k souboru na aplikačním serveru: Program ABAP potřebuje předem nastavenou platnou cestu k adresáři na aplikačním serveru SAP. Ověřte, že uživatel systému SAP (
SY-UNAME) má na úrovni operačního systému potřebná oprávnění k zápisu do tohoto adresáře. - Oprávnění: Uživatel, který extrakci spouští, potřebuje oprávnění k transakci
SE38(pro vytvoření a spuštění programu), přístup pro zobrazení tabulekMKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKaLTAPa možnost plánovat úlohy na pozadí (SM36/SM37).
Ukázkový dotaz 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. Chcete začít?
Pomocí této šablony připravíte data pro analýzu správy zásob a získáte přehled o provozu. Začněte hledat možnosti, jak zvýšit efektivitu a snížit náklady.
Zlepšete správu zásob v SAP S/4HANA
Odhalte neefektivitu, zkraťte dobu cyklu o 30 % a snižte náklady.
Bez platební karty • Nastavení během několika minut