Šablona dat pro plánování výroby
Šablona dat pro plánování výroby
- Doporučené atributy ke sběru
- Důležité aktivity ke sledování
- Praktické pokyny k extrakci dat
Atributy plánování výroby
| Název | Popis | ||
|---|---|---|---|
| Čas události EventTime | Přesné časové razítko udávající, kdy aktivita proběhla. | ||
| Popis Čas události zaznamenává datum a čas provedení konkrétní aktivity nebo uložení stavu v systému. Tento údaj je základem časové analýzy procesu, včetně výpočtu doby cyklu, čekání a celkové doby procesu. Přesná časová razítka jsou důležitá pro správné seřazení událostí a analýzu výkonnosti. Umožňují měřit dobu mezi aktivitami, odhalovat zpoždění a porovnávat výsledky s harmonogramy nebo dohodnutými úrovněmi služeb. V plánování výroby pomáhají zjistit, jak dlouho trvá každá fáze plánování a realizace. Proč je to důležité Tento atribut určuje chronologické pořadí událostí, které je nezbytné pro výpočet dob, analýzu výkonnosti a odhalování úzkých míst. Kde data získat Odvozuje se z různých datových a časových polí transakcí a změn stavů, například z BUDAT (datum zaúčtování) v materiálových dokladech nebo z časových razítek změn v CDHDR. Příklady 2023-04-15T10:05:30Z2023-04-15T14:22:00Z2023-04-18T08:59:11Z2023-04-20T16:45:00Z | |||
| Název aktivity ActivityName | Název obchodní nebo systémové události, která v určitém okamžiku nastala u výrobní zakázky. | ||
| Popis Název aktivity popisuje konkrétní krok nebo změnu stavu v procesu plánování výroby. Události se získávají ze záznamů změn, aktualizací stavů a transakčních záznamů v SAP ECC PP. Představují důležité milníky, například „Vytvoření výrobní zakázky“, „Kontrola dostupnosti materiálu“ nebo „Zaúčtování příjmu výrobku“. Tento atribut tvoří základ procesní mapy. Analytici díky němu mohou zobrazit posloupnost událostí, odhalit varianty procesu a najít úzká místa nebo opakované kroky. Jasné a dostatečně podrobné názvy aktivit jsou důležité pro vytvoření přesného a užitečného modelu procesu, který odpovídá skutečnému provozu. Proč je to důležité Určuje jednotlivé kroky v procesní mapě, které pak můžete zobrazit, analyzovat a lépe porozumět průběhu výroby. Kde data získat Získává se z různých zdrojů, například ze změn stavů v tabulkách JEST/JSTO, transakčních záznamů a změnových dokumentů v CDHDR/CDPOS. Příklady Uvolnění výrobní zakázkyZaúčtování výdeje materiáluZáznam konečného potvrzeníTechnické dokončení zakázky | |||
| Výrobní zakázka ProductionOrder | Jedinečný identifikátor výrobní zakázky, který slouží jako hlavní identifikátor případu pro proces plánování a realizace výroby. | ||
| Popis Číslo výrobní zakázky je jedinečný alfanumerický klíč přiřazený každé výrobní zakázce v SAP ECC PP. Jde o hlavní objekt, který propojuje všechny související činnosti od vytvoření a plánování až po realizaci a konečné zúčtování. V process mining tento atribut slouží ke seskupení všech událostí, které patří k jednomu výrobnímu běhu. Díky tomu můžete analyzovat celý životní cyklus výrobní zakázky, sledovat její průběh, měřit dobu cyklu a odhalovat odchylky od standardního procesu. Analýza podle výrobní zakázky ukazuje, jak se vyřizují jednotlivé požadavky na výrobu. Proč je to důležité Tento hlavní identifikátor propojuje všechny související události procesu a umožňuje rekonstruovat a analyzovat průběh každé výrobní zakázky od začátku do konce. Kde data získat Tento atribut najdete v tabulce SAP AUFK, v poli AUFNR. Příklady 1000345100034610003471000348 | |||
| Poslední aktualizace dat LastDataUpdate | Časové razítko udávající, kdy byla data této události naposledy aktualizována nebo extrahována. | ||
| Popis Tento atribut zaznamenává datum a čas přenosu dat ze zdrojového systému do nástroje pro process mining. Nejde o obchodní událost, ale o technické časové razítko pro správu dat. Slouží především ke kontrole aktuálnosti dat a pomáhá správcům i analytikům zjistit, jak stará jsou analyzovaná data. Je důležitý pro ověření, že analýza procesu vychází z aktuálních informací, zejména při sledování probíhajícího provozu. Proč je to důležité Potvrzuje aktuálnost dat a zajišťuje, že analýzy vycházejí z nejnovějších dostupných informací. Kde data získat Tuto hodnotu obvykle v průběhu načítání dat vytvoří a opatří časovým razítkem nástroj nebo skript pro extrakci, transformaci a načítání dat (ETL). Příklady 2023-10-27T02:00:00Z2023-10-28T02:00:00Z2023-10-29T02:00:00Z | |||
| Zdrojový systém SourceSystem | Určuje konkrétní systém, ze kterého byla data extrahována. | ||
| Popis Tento atribut určuje zdrojový systém záznamu, například název nebo ID konkrétní instance SAP ECC. V organizacích s více systémy ERP nebo kombinací starších a moderních platforem je toto pole důležité pro sledování původu dat a jejich kontextu. Při analýze umožňuje filtrovat procesy podle zdrojového systému. Můžete tak porovnávat výkonnost procesů v různých systémech nebo oddělit data při konsolidaci údajů z více systémů. Proč je to důležité Poskytuje důležitý kontext o původu dat, zejména v prostředí s více instancemi SAP nebo propojenými systémy. Kde data získat Obvykle se přidává při extrakci dat a často se odvozuje od ID systému SAP (SY-SYSID). Příklady ECC_PROD_100S4H_FIN_200ECC_DE | |||
| Dodané množství DeliveredQuantity | Skutečné množství produktu, které bylo vyrobeno a přijato na sklad. | ||
| Popis Dodané množství, označované také jako množství přijaté na sklad, je celkové množství hotového produktu potvrzené jako vyrobené v rámci dané výrobní zakázky. Aktualizuje se při událostech „Zaúčtování příjmu výrobku“. Tento atribut doplňuje „Plánované množství“ a je nezbytný pro výpočet KPI „Rozdíl mezi plánovaným a skutečným množstvím“. Poskytuje přesný údaj o výrobním výstupu a pomáhá odhalit rozdíly způsobené zmetkovitostí, ztrátami výtěžnosti nebo jinými výrobními problémy. Porovnání dodaného množství mezi závody, produkty nebo obdobími ukazuje, kde se vyskytují problémy s efektivitou. Proč je to důležité Měří skutečný výstup výrobního procesu a umožňuje přímé porovnání s plánovanými cíli. Kde data získat Najdete ho v tabulce SAP AFPO, v poli WEMNG (množství přijaté na sklad). Příklady 984950751255 | |||
| Kód produktu ProductCode | Jedinečný identifikátor vyráběného materiálu nebo produktu. | ||
| Popis Kód produktu neboli číslo materiálu označuje položku, kterou má výrobní zakázka vyrobit. Jde o důležitý prvek kmenových dat, který propojuje plánování výroby se správou zásob, prodejem a kalkulací nákladů. V process mining je filtrování nebo členění podle kódu produktu důležité pro analýzu výrobních procesů konkrétních produktů. Pomáhá odpovědět například na otázky: „Které produkty mají nejdelší dobu cyklu?“ nebo „U kterých produktů častěji dochází k problémům s kvalitou či zpoždění kvůli materiálu?“ Tato analýza je důležitá pro správu produktového portfolia a hledání příležitostí ke standardizaci nebo optimalizaci procesu pro konkrétní typy materiálu. Proč je to důležité Umožňuje analyzovat procesy podle produktu a zjistit, které materiály souvisejí s neefektivitou, zpožděním nebo vysokými náklady. Kde data získat Najdete ho v tabulce SAP AFPO, v poli MATNR. Příklady FG-123RM-45AHALB-7890CHEM-22 | |||
| Plánované množství PlannedQuantity | Celkové množství produktu, jehož výroba je naplánována v zakázce. | ||
| Popis Plánované množství představuje cílový výstup výrobní zakázky stanovený ve fázi plánování. Slouží jako základ pro porovnání se skutečným objemem výroby. Tento atribut je důležitý pro KPI zaměřené na výkonnost výroby a dodržování harmonogramu, například „Rozdíl mezi plánovaným a skutečným množstvím“. Pomáhá posoudit přesnost plánování výroby a odhalit systémové problémy s nadvýrobou nebo nedostatečnou výrobou. Jeho analýza ukazuje, nakolik realizace výroby odpovídá původním plánům. Proč je to důležité Tento atribut slouží jako základ pro měření rozdílu ve výrobním výstupu a posouzení přesnosti plánování. Kde data získat Tato hodnota je dostupná v tabulce SAP AFKO, v poli GAMNG (celkové množství zakázky). Příklady 1005000751250 | |||
| Skutečné datum dokončení ActualEndDate | Časové razítko poslední výrobní činnosti, které označuje skutečné dokončení zakázky. | ||
| Popis Skutečné datum dokončení je časové razítko události označující dokončení všech výrobních činností zakázky. Obvykle se odvozuje od časového razítka události „Záznam konečného potvrzení“ nebo poslední události „Zaúčtování příjmu výrobku“. Tento atribut je důležitý pro měření celkové doby výrobního cyklu a analýzu dodržování harmonogramu. Porovnáním „Skutečného data dokončení“ s „Plánovaným datem dokončení“ zjistíte, zda byla zakázka dokončena včas. Doba mezi „Skutečným datem zahájení“ a „Skutečným datem dokončení“ odpovídá skutečné průběžné době výroby. Proč je to důležité Označuje dokončení výroby a umožňuje přesně měřit včasnost dodávek i celkovou dobu realizace. Kde data získat Odvozuje se ze záznamu událostí podle nejvyššího časového razítka u důležitých dokončovacích aktivit, například „Zaznamenáno závěrečné potvrzení“ nebo „Zaúčtován příjem materiálu“. Příklady 2023-05-14T16:00:00Z2023-06-29T11:30:00Z2023-07-05T17:00:00Z | |||
| Skutečné datum zahájení ActualStartDate | Časové razítko první zaznamenané výrobní činnosti, které označuje skutečné zahájení realizace. | ||
| Popis Skutečné datum zahájení je časové razítko první události označující začátek fyzické výroby. Obvykle se odvozuje od prvního potvrzení výroby nebo prvního výdeje surovin pro zakázku. Tento odvozený atribut je důležitý pro analýzu dodržování harmonogramu. Určuje skutečný začátek, který můžete porovnat s „Plánovaným datem zahájení“ a přesně vypočítat odchylku. Rozdíl mezi plánovaným a skutečným datem zahájení pomáhá odhalit zpoždění před zahájením výroby, například při přípravě materiálu, nastavení strojů nebo zajištění zdrojů. Proč je to důležité Určuje skutečný začátek realizace výroby a umožňuje přesně vypočítat zpoždění při zahájení i celkovou průběžnou dobu výroby. Kde data získat Odvozuje se ze záznamu událostí výběrem nejstaršího časového razítka konkrétních činností realizace, například „Záznam prvního potvrzení“ nebo „Zaúčtování výdeje materiálu“, pro každou výrobní zakázku. Příklady 2023-05-11T08:30:00Z2023-06-22T14:00:00Z2023-07-02T09:15:00Z | |||
| Výrobní závod ProductionPlant | Výrobní provoz nebo místo, kde se realizuje výrobní zakázka. | ||
| Popis Výrobní závod je organizační jednotka v SAP, která představuje výrobní provoz. Přiřazuje se ke každé výrobní zakázce a určuje, kde budou výrobní činnosti fyzicky probíhat. Analýza podle výrobního závodu umožňuje porovnávat výkonnost jednotlivých míst. Pomáhá zjistit, které závody pracují efektivněji, kde dochází k větším zpožděním nebo nedostatku materiálu a kde lze sdílet osvědčené postupy. Jde o základní dimenzi pro analýzu příčin v dashboardech zaměřených na průběžnou dobu a využití zdrojů. Proč je to důležité Umožňuje porovnávat výkonnost různých výrobních míst a odhalovat problémy nebo osvědčené postupy specifické pro jednotlivé závody. Kde data získat Tento atribut je uložen v tabulce SAP AUFK, v poli WERKS. Příklady 100017102000DE01 | |||
| Dodržení výrobního plánu ScheduleAdherenceStatus | Příznak udávající, zda byla výrobní zakázka dokončena do plánovaného data ukončení. | ||
| Popis Dodržení výrobního plánu je vypočítaný logický nebo kategoriální atribut, který přehledně ukazuje, zda výroba probíhá včas. Vychází z porovnání skutečného a plánovaného data ukončení. Pokud skutečné datum ukončení připadá na plánovaný den nebo před něj, stav je „Včas“. Jinak je „Opožděno“. Tento atribut usnadňuje analýzu a vizualizaci v dashboardech. Umožňuje snadno filtrovat a agregovat data, vypočítat KPI „Míra dodržení výrobního plánu“ a určit hlavní příčiny opožděných zakázek, například konkrétní produkty, závody nebo nedostatek materiálu. Proč je to důležité Zjednodušuje analýzu výkonnosti tím, že zakázky rozděluje na včasné a opožděné. Snadno tak změříte a vykážete spolehlivost plánu. Kde data získat Vypočítané pole: IF('ActualEndDate' <= 'PlannedEndDate', 'Včas', 'Opožděno'). Příklady VčasOpožděno | |||
| Dostupnost materiálu MaterialAvailabilityStatus | Udává, zda jsou k dispozici všechny komponenty potřebné pro výrobní zakázku. | ||
| Popis Stav dostupnosti materiálu ukazuje, zda je výroba připravena k zahájení. Systém ho určuje kontrolou dostupnosti všech komponent potřebných pro zakázku. Stav „K dispozici“ znamená, že výroba může pokračovat bez zdržení kvůli materiálu. Stav „Nedostatek“ upozorňuje na problém. Tento atribut je důležitý pro dashboard „Analýza dopadu nedostatku materiálu“. Analýzou doby, po kterou zakázky čekají kvůli nedostatku materiálu, můžete vyčíslit dopad problémů v dodavatelském řetězci na výrobní plány. Pomůže vám také odhalit nespolehlivé dodavatele nebo komponenty, které opakovaně způsobují zpoždění. Proč je to důležité Přímo ukazuje zpoždění způsobená nedostatkem materiálu, který často patří k hlavním příčinám odchylek od výrobního plánu. Kde data získat Nejde o jednu uloženou hodnotu. Výsledek vzniká kontrolou dostupnosti (kontrola ATP). Obvykle ho najdete v transakci CO02 nebo v hromadné kontrole dostupnosti COHV. Do záznamu se může ukládat samotný stav, například MACM (materiál rezervován). Podrobnosti najdete v dokumentaci SAP ECC PP. Příklady K dispoziciNedostatekČástečně k dispoziciNezkontrolováno | |||
| Odchylka množství QuantityVariance | Rozdíl mezi plánovaným množstvím výroby a skutečně dodaným množstvím. | ||
| Popis Odchylka množství je vypočítaná metrika, která měří rozdíl mezi skutečným výstupem výroby a původním plánem. Vypočítá se jako dodané množství minus plánované množství. Kladná odchylka znamená nadvýrobu, záporná nedostatečnou výrobu nebo ztrátu výtěžnosti. Tento atribut je důležitý pro dashboard „Plánovaná a skutečná výroba“ a související KPI. Analýza odchylky pomáhá odhalit problémy s výtěžností výroby, zmetkovitostí nebo chybami při zadávání dat. Ukazuje, nakolik výrobní proces spolehlivě plní stanovené cíle. Proč je to důležité Vyčísluje přesnost výroby vůči plánu a upozorňuje na možné problémy s výtěžností, zmetkovitostí nebo řízením procesu. Kde data získat Vypočítané pole: 'DeliveredQuantity' - 'PlannedQuantity'. Příklady -2-5005 | |||
| Odpovědný uživatel ResponsibleUser | ID uživatele, který výrobní zakázku vytvořil nebo naposledy změnil. | ||
| Popis Odpovědný uživatel označuje účet SAP spojený s důležitými událostmi v životním cyklu výrobní zakázky, například s jejím vytvořením nebo uvolněním. Díky tomu lze určit odpovědnost a dohledat provedené kroky. V process mining se tento atribut používá k analýze rozdílů v průběhu procesu podle chování uživatelů. Pomůže určit, kdo může potřebovat další školení nebo kdo postupuje jinak než obvykle. Umožňuje také analyzovat zdroje a zjistit, jak se práce rozděluje mezi jednotlivé uživatele. Proč je to důležité Propojuje aktivity procesu s konkrétními osobami, takže můžete analyzovat výkonnost na úrovni uživatelů a určit odpovědnost. Kde data získat Uživatel, který zakázku vytvořil, je uveden v AUFK-ERNAM. Uživatel, který ji naposledy změnil, je v AUFK-AENAM. Historii uživatelů u konkrétních změn najdete v dokumentech změn (CDHDR-USERNAME). Příklady JSMITHPROD_PLANNER1BATCH_USERAMILLER | |||
| Plánované datum dokončení PlannedEndDate | Plánované datum, do kterého má být výroba dané zakázky dokončena. | ||
| Popis Plánované datum dokončení je cílový termín dokončení výrobní zakázky stanovený při plánování. Určuje očekávanou dobu dokončení všech výrobních činností včetně konečných potvrzení a příjmu výrobku. Toto datum je nezbytné pro výpočet KPI „Míra dodržování harmonogramu“. Porovnáním „Plánovaného data dokončení“ se skutečným časem dokončení, například časovým razítkem aktivity „Zaúčtování příjmu výrobku“ nebo „Záznam konečného potvrzení“, zjistíte, zda jsou zakázky dokončovány včas. Analýza pomáhá posoudit spolehlivost výrobních harmonogramů a odhalit příčiny pozdních dodávek. Proč je to důležité Slouží jako měřítko pro určení, zda jsou výrobní zakázky dokončeny včas, a přímo ovlivňuje spokojenost zákazníků i spolehlivost plánování. Kde data získat Jde o základní datum dokončení, které najdete v tabulce SAP AFKO, v poli GLTRP. Příklady 2023-05-152023-06-282023-07-05 | |||
| Plánované datum zahájení PlannedStartDate | Plánované datum zahájení výroby dané zakázky. | ||
| Popis Plánované datum zahájení je důležitý parametr harmonogramu stanovený při plánování a rozvrhování výroby. Určuje cílové datum zahájení výrobních činností pro danou zakázku. Tento atribut je důležitý pro měření dodržování harmonogramu. Porovnáním „Plánovaného data zahájení“ se skutečným časem zahájení výroby, například časovým razítkem aktivity „Záznam prvního potvrzení“, můžete odhalit zpoždění při zahájení výroby. Analýza příčin těchto zpoždění je jedním z hlavních způsobů využití process mining v této oblasti. Proč je to důležité Slouží jako základ pro měření dodržování harmonogramu a odhalování zpoždění při zahájení výroby. Kde data získat Jde o základní datum zahájení, které najdete v tabulce SAP AFKO, v poli GSTRP. Příklady 2023-05-102023-06-222023-07-01 | |||
| Priorita výroby ProductionPriority | Označení naléhavosti nebo priority výrobní zakázky. | ||
| Popis Priorita výroby vyjadřuje relativní důležitost výrobní zakázky. Plánovači výroby a pracovníci ve výrobě podle ní mohou určit pořadí práce a zajistit, aby se naléhavé zakázky zpracovaly přednostně. Analýza tohoto atributu pomáhá ověřit, zda systém priorit funguje. Porovnáním průběžné doby zakázek s vysokou a nízkou prioritou zjistíte, zda se naléhavé zakázky skutečně zpracovávají rychleji. Pokud ne, může jít o problém v komunikaci, přidělování zdrojů nebo samotném průběhu výroby. Proč je to důležité Pomáhá ověřit, zda řízení priorit funguje a zda se naléhavé zakázky dokončují rychleji než běžné. Kde data získat Tento údaj obvykle není standardním polem hlavičky výrobní zakázky. Může jít o vlastní pole, údaj odvozený z priority prodejní zakázky nebo součást klasifikačního systému. Podrobnosti najdete v dokumentaci SAP ECC PP nebo v konfiguraci systému. Příklady VysokáStředníNízkáExpresní | |||
| Skupina plánovačů PlannerGroup | Skupina plánovačů MRP nebo výroby odpovědná za zakázku. | ||
| Popis Skupina plánovačů je organizační jednotka sdružující osoby odpovědné za plánování a řízení určité skupiny materiálů nebo výrobních zakázek. Přiřazení zakázek ke skupinám plánovačů pomáhá rozdělit práci a jasně určit odpovědnost. V process mining tento atribut umožňuje analyzovat výkonnost podle odpovědného plánovacího týmu. Pomůže zodpovědět například otázky: „Která skupina plánovačů má nejčastější odchylky od plánu?“ nebo „Liší se průběžná doba zakázek podle skupiny, která je řídí?“ Výsledky pomáhají vyrovnávat pracovní zátěž a určit potřeby školení. Proč je to důležité Umožňuje analyzovat výkonnost podle odpovědného týmu a odhalit rozdíly v efektivitě plánování i pracovním vytížení. Kde data získat Jde o plánovače MRP. Údaj je v tabulce SAP AFKO, v poli DISPO. Příklady 001002P01P02 | |||
| Stav výrobní zakázky ProductionOrderStatus | Aktuální stav zpracování výrobní zakázky, například vytvořeno, uvolněno nebo technicky dokončeno. | ||
| Popis Stav výrobní zakázky označuje aktuální fázi zakázky v jejím životním cyklu. SAP používá k řízení postupu zakázky systém stavových kódů, například CRTD (vytvořeno), REL (uvolněno), CNF (potvrzeno), DLV (dodáno) a TECO (technicky dokončeno). Analýza doby strávené v jednotlivých stavech patří k základům process mining ve výrobě. Ukáže například, jak dlouho zakázky po vytvoření čekají na uvolnění nebo jak dlouho zůstávají částečně dodané. Sledování změn stavů jako aktivit poskytuje přehled o průběhu procesu. Proč je to důležité Poskytuje přehled o průběhu zakázky a pomáhá odhalit úzká místa, kde zakázky dlouho stojí. Kde data získat Informace o stavech jsou uložené v tabulkách JEST a JSTO, které jsou propojené s číslem objektu zakázky (AUFK-OBJNR). Texty stavů jsou v tabulce TJ02T. Ke čtení stavů se často používají funkční moduly, například STATUS_TEXT_EDIT. Příklady CRTD (vytvořeno)REL (uvolněno)DLV (dodáno)TECO (technicky dokončeno) | |||
Aktivity plánování výroby
| Aktivita | Popis | ||
|---|---|---|---|
| Technické dokončení zakázky | Jde o administrativní krok uzavření, který z logistického hlediska dokončí výrobní zakázku. Zabrání dalším pohybům materiálu a potvrzením a umožní finanční zúčtování. | ||
| Proč je to důležité Tímto krokem se z logistického hlediska definitivně uzavírá životní cyklus zakázky. Analýza této události pomáhá zjistit celkovou dobu procesu včetně administrativních úkonů po výrobě. Kde data získat Událost se zaznamená při přiřazení systémového stavu „TECO“ (I0045, technicky dokončeno) zakázce. Změna se ukládá s časovým razítkem do tabulky JCDS. Zachycení V tabulce JCDS určete časové razítko, kdy se pro zakázku aktivuje stav „TECO“. Typ události explicit | |||
| Uvolnění výrobní zakázky | Tato činnost označuje oficiální schválení a uvolnění výrobní zakázky k realizaci. Po uvolnění se aktivují rezervace materiálu a mohou začít výrobní činnosti, například výdej materiálu a potvrzování operací. | ||
| Proč je to důležité Jde o důležitý milník, který označuje předání zakázky z plánování do realizace. Doba mezi vytvořením a uvolněním je ukazatelem efektivity plánování. Kde data získat Událost se zaznamená při přiřazení systémového stavu „REL“ (I0002) výrobní zakázce. Změna se ukládá s časovým razítkem do tabulky JCDS a propojuje se s číslem objektu zakázky (AUFK-OBJNR). Zachycení Určete časové razítko, kdy se pro zakázku aktivuje stav „REL“. Typ události explicit | |||
| Vytvoření výrobní zakázky | Tato událost označuje vytvoření nové výrobní zakázky, obvykle na základě plánovacího běhu nebo ručního zadání. Systém ji zaznamená při uložení nového záznamu zakázky a přiřazení stavu „CRTD“ (vytvořeno). | ||
| Proč je to důležité Tímto okamžikem začíná každá výrobní zakázka. Analýza doby od této události do uvolnění pomáhá odhalit zpoždění v předvýrobním plánování a administrativní přípravě. Kde data získat Událost se zaznamenává z data vytvoření výrobní zakázky (AUFK-ERDAT) a času (AUFK-ERZET). Systémový stav „CRTD“ (I0001) se ukládá do tabulek JEST a JCDS a propojuje se s číslem objektu zakázky (AUFK-OBJNR). Zachycení Sledujte čas vytvoření a přiřazení stavu „CRTD“. Typ události explicit | |||
| Zaúčtování příjmu výrobku | Tato událost zaznamenává příjem hotového výrobku z výrobní zakázky na sklad. Znamená, že vyrobené zboží je nyní k dispozici k expedici nebo dalšímu zpracování. | ||
| Proč je to důležité Jde o důležitý milník dokončení, který představuje konečný výstup výrobního procesu. Doba od uvolnění zakázky po příjem výrobku odpovídá celkové průběžné době výroby. Kde data získat Zaznamenává se jako materiálový doklad v tabulkách MKPF/MSEG s druhem pohybu, obvykle „101“, a odkazem na výrobní zakázku. U zakázky se také nastaví systémový stav „DLV“ (I0012, dodáno). Zachycení Zaznamenejte datum zaúčtování materiálového dokladu s druhem pohybu „101“ nebo časové razítko změny stavu na „DLV“. Typ události explicit | |||
| Záznam konečného potvrzení | Tato činnost označuje, že z pohledu výroby byly dokončeny všechny operace výrobní zakázky. Zaznamená se konečným potvrzením poslední operace. | ||
| Proč je to důležité Tento milník označuje konec fyzických výrobních činností. Doba od prvního do konečného potvrzení odpovídá skutečné době realizace výroby. Kde data získat Událost se zaznamená při nastavení systémového stavu „CNF“ (I0009, potvrzeno). Obvykle se spustí zadáním konečného potvrzení do tabulky AFRU (AFRU-AUERU = „X“). Změna stavu se zaznamená v tabulce JCDS. Zachycení Určete časové razítko nastavení stavu „CNF“ nebo vyhledejte poslední záznam potvrzení v tabulce AFRU. Typ události explicit | |||
| Záznam prvního potvrzení | Tato událost označuje začátek skutečné práce na výrobní zakázce. Zaznamená se při zadání prvního časového potvrzení kterékoli operace výrobní zakázky do systému. | ||
| Proč je to důležité Tato činnost určuje skutečný čas zahájení výroby. Je nezbytná pro měření dodržování harmonogramu a odhalení zpoždění mezi přidělením zdrojů a zahájením práce. Kde data získat Událost lze odvodit z nejstaršího data zaúčtování (AFRU-BUDAT) ze všech potvrzení zakázky v tabulce AFRU. První záznam označuje začátek fyzické výroby. Zachycení Určete první záznam potvrzení zakázky podle data zaúčtování v tabulce AFRU. Typ události inferred | |||
| Kontrola dostupnosti materiálu | Označuje provedení kontroly, která ověřuje, zda jsou k dispozici všechny potřebné komponenty pro výrobní zakázku. Kontrola může proběhnout automaticky při vytvoření nebo uvolnění zakázky, případně ji lze spustit ručně. | ||
| Proč je to důležité Tato činnost pomáhá porozumět zpožděním způsobeným nedostatkem materiálu. Časté kontroly nebo dlouhá doba do zajištění materiálu mohou ukazovat na problémy v dodavatelském řetězci nebo řízení zásob. Kde data získat Systém nastaví například stav „MACM“ (materiál zajištěn) nebo „MSPT“ (nedostatek materiálu). Provedení kontroly lze odvodit z časového razítka změny tohoto stavu v tabulkách JEST/JCDS. Výsledek je viditelný v hlavičce zakázky. Zachycení Odvoďte událost z časového razítka změn stavů souvisejících s dostupností materiálu, například „MACM“ nebo „MSPT“. Typ události inferred | |||
| Nastavení zrušení zakázky | Tato událost označuje zrušení výrobní zakázky před jejím dokončením. Obvykle se nastaví konkrétní stav nebo příznak odstranění, který zabrání dalšímu zpracování. | ||
| Proč je to důležité Jde o nežádoucí výsledek, který je důležité sledovat. Analýza zrušených zakázek může odhalit problémy s prognózou poptávky, přesností plánování nebo správou kmenových dat. Kde data získat Událost lze odvodit z přiřazení stavu „DLFL“ (I0076, příznak odstranění) nebo z konkrétního stavu „Zrušeno“, pokud je nakonfigurován. Změna se ukládá s časovým razítkem do tabulky JCDS. Zachycení Určete časové razítko nastavení příznaku odstranění („DLFL“) nebo stavu zrušení zakázky. Typ události inferred | |||
| Provedení zúčtování zakázky | Označuje finanční zúčtování výrobní zakázky, při kterém se vzniklé náklady přiřadí příslušným nákladovým objektům. Z pohledu controllingu jde o poslední krok životního cyklu zakázky. | ||
| Proč je to důležité Zpoždění při zúčtování může i přes jeho finanční povahu ukazovat na problémy s vykazováním nákladů nebo přesností údajů zakázky. Tímto krokem se výrobní proces skutečně finančně uzavírá. Kde data získat Událost lze odvodit z nulového zůstatku zakázky nebo z toho, že po systémovém stavu „SETC“ (I0076, vytvořeno pravidlo zúčtování) následují záznamy o provedení zúčtování. Samotné zúčtování se zaznamenává v controllingových tabulkách, například COSP a COSS. Zachycení Odvoďte událost z dokladů zúčtování propojených se zakázkou v tabulkách CO nebo z aktivace stavu „SETC“. Typ události inferred | |||
| Zaúčtování výdeje materiálu | Tato činnost označuje výdej komponent ze skladu pro použití ve výrobní zakázce. Potvrzuje, že potřebné suroviny nebo polotovary byly připraveny pro výrobu. | ||
| Proč je to důležité Tato událost označuje začátek spotřeby materiálu. Zpoždění mezi uvolněním zakázky a výdejem materiálu může poukazovat na problémy ve skladové logistice, přípravě materiálu nebo přesnosti skladových zásob. Kde data získat Zaznamenává se jako materiálový doklad v tabulkách MKPF (hlavička) a MSEG (položka) s druhem pohybu, obvykle „261“, a odkazem na číslo výrobní zakázky (MSEG-AUFNR). Zachycení Zaznamenejte datum zaúčtování (MKPF-BUDAT) materiálových dokladů s druhem pohybu „261“, které jsou propojené se zakázkou. Typ události explicit | |||
| Záznam průběžného potvrzení | Označuje aktualizaci průběhu výrobní zakázky prostřednictvím částečného potvrzení operace. To je běžné u dlouhotrvajících zakázek, u kterých je třeba sledovat postup před konečným dokončením. | ||
| Proč je to důležité Analýza průběžných potvrzení pomáhá sledovat dlouhé výrobní cykly a odhalovat úzká místa přímo ve výrobním procesu, nejen na jeho začátku nebo konci. Kde data získat Zaznamenává se z potvrzení v tabulce AFRU, která nejsou označena jako konečná. Každý záznam obsahuje datum zaúčtování (AFRU-BUDAT) a čas. Zachycení Extrahujte z tabulky AFRU všechna potvrzení, která nejsou označena jako konečné potvrzení operace. Typ události explicit | |||
| Změna údajů zakázky | Tato událost zachycuje významné změny výrobní zakázky po jejím vytvoření, například úpravy plánovaného množství, termínů nebo kusovníku. Systém tyto změny zaznamenává pro účely auditu. | ||
| Proč je to důležité Sledování změn pomáhá odhalit nestabilitu procesu a časté přeplánování. Vysoký počet změn může ukazovat na nepřesné počáteční plánování, kolísání poptávky nebo chyby v datech. Kde data získat Změny důležitých polí v tabulkách, jako jsou AFKO (hlavička zakázky) a AFPO (položka zakázky), se zaznamenávají do tabulek změnových dokumentů CDHDR (hlavička) a CDPOS (položka). Každou relevantní změnu lze extrahovat jako aktivitu. Zachycení Extrahujte záznamy změn z tabulek CDHDR a CDPOS pro třídu objektů výrobní zakázky. Typ události explicit | |||
Návody k extrakci dat
Kroky
- Vytvořte InfoSet v SAP Query: Použijte transakční kód
SQ02. Vytvořte nový InfoSet, napříkladZPP_EVENTLOG. Jako zdroj dat vyberte možnost „Spojení tabulek pomocí základní tabulky“. Jako počáteční základní tabulku použijteAUFK(kmenová data zakázky). - Připojte potřebné tabulky: Přidejte do spojení InfoSetu následující tabulky. Systém může navrhnout spojení, ověřte však, že jsou správná:
AUFKnaAFKO(hlavičková data výrobních zakázek):AUFK-AUFNR = AFKO-AUFNRAUFKnaJEST(stav jednotlivých objektů):AUFK-OBJNR = JEST-OBJNRJESTnaJCDS(doklady změn systémových a uživatelských stavů):JEST-OBJNR = JCDS-OBJNRANDJEST-STAT = JCDS-STAT. Poznámka: Toto spojení slouží ke čtení historie změn stavů.AUFKnaAFRU(potvrzení dokončení zakázky):AUFK-AUFNR = AFRU-AUFNRAUFKnaMSEG(položka dokladu o pohybu materiálu):AUFK-AUFNR = MSEG-AUFNRMSEGnaMKPF(hlavička dokladu o pohybu materiálu):MSEG-MBLNR = MKPF-MBLNRANDMSEG-MJAHR = MKPF-MJAHR
- Definujte skupiny polí: Přetáhněte potřebná pole ze zdrojových tabulek do skupin polí. Zahrňte všechna pole potřebná pro výsledný dotaz, například
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATE,MKPF-BUDAT. - Přidejte vlastní pole a kód: V InfoSetu přejděte na kartu „Extras“. Vytvořte vlastní pole
ActivityName,EventTime,SourceSystemaLastDataUpdatea napište kód ABAP, který je naplní podle logiky popsané v části s dotazem. Kód bude procházet změny stavů, potvrzení a doklady o pohybu materiálu a vytvoří samostatný záznam pro každou obchodní událost. Jde o nejnáročnější krok, protože v sekcích kódu InfoSetu převádíte tabulková data do formátu záznamu událostí. - Vygenerujte a uložte InfoSet: Po nastavení všech spojení, polí a vlastního kódu InfoSet uložte a vygenerujte.
- Vytvořte SAP Query: Použijte transakční kód
SQ01. Vytvořte nový dotaz, napříkladZPP_EVENTS, založený na InfoSetu z předchozích kroků. - Navrhněte rozložení dotazu: V návrháři dotazu definujte pole výběrové obrazovky. Vhodná pole jsou výrobní zakázka
AUFNR, závodWERKS, typ zakázkyAUARTa časové období vytvoření zakázkyAUFK-ERDAT. - Definujte výstupní seznam: Vyberte pole, která se zobrazí ve výstupní sestavě. Seznam musí přesně odpovídat sloupcům potřebným pro záznam událostí, včetně vlastních polí, jako jsou
ActivityNameaEventTime. - Spusťte dotaz: Spusťte dotaz s požadovanými kritérii výběru, například pro výrobní zakázky za poslední 3 až 6 měsíců.
- Exportujte data: Po zobrazení výsledků exportujte seznam. Nejčastěji se používá formát „Spreadsheet“ nebo „Local File“ s oddělovačem tabulátorem či ve formátu CSV.
- Připravte data pro ProcessMind: Otevřete exportovaný soubor v tabulkovém procesoru. Ověřte, že záhlaví sloupců odpovídají požadovaným atributům (
ProductionOrder,ActivityName,EventTimeatd.) a že formát data a času ve sloupciEventTimeje jednotný a odpovídá požadavkům, například YYYY-MM-DD HH:MI:SS. Uložte soubor jako CSV pro nahrání.
Konfigurace
- Spojení v InfoSetu: Tato metoda stojí na složitém InfoSetu, který propojuje tabulky hlaviček, stavů, potvrzení a pohybů materiálu. Hlavní spojení jsou
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRUaAUFK->MSEG->MKPF. Nesprávná nebo neefektivní spojení mohou zpomalit systém nebo vést k nepřesným datům. - Kritéria výběru: Nastavte přiměřený rozsah výběru, abyste předešli problémům s výkonem systému. Na úvodní obrazovce dotazu by měla být tato hlavní pole:
- Výrobní závod (
AUFK-WERKS) - Typ výrobní zakázky (
AUFK-AUART) - Datum vytvoření zakázky (
AUFK-ERDAT): Doporučujeme extrahovat data za průběžné období 3 až 6 měsíců, aby objem dat zůstal zvládnutelný.
- Výrobní závod (
- Systémové stavy: Určení událostí, jako jsou „Vytvořeno“, „Uvolněno“, „Technicky dokončeno“ a „Zrušeno“, závisí na konkrétních systémových kódech stavů, například I0001, I0002, I0045 a I0047. Obvykle jsou ve všech systémech SAP stejné, přesto je ověřte.
- Druhy pohybu: Události jako „Výdej zboží“ a „Příjem zboží“ se určují podle konkrétních druhů pohybu (
MSEG-BWART), obvykle „261“ a „101“. Ověřte, že tyto hodnoty odpovídají konfiguraci vaší organizace. - Oprávnění: Uživatel spouštějící dotaz potřebuje oprávnění k transakcím
SQ01,SQ02aSQ03a také přístup pro zobrazení všech podkladových tabulek (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF).
Ukázkový dotaz 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'; Kroky
- Zajistěte přístup k databázi: Získejte přihlašovací údaje s přístupem pouze pro čtení k podkladové databázi SAP ECC. Budete potřebovat adresu serveru, port, název databáze, uživatelské jméno a heslo. Přístup je nezbytný a musíte ho koordinovat s týmy SAP Basis a správy databází.
- Zjistěte schéma SAP: Určete správné databázové schéma, ve kterém jsou uložené tabulky SAP. Často se jmenuje
SAPSR3nebo podobně podle konkrétního systému. V dotazu nahraďte zástupný text[Your SAP Schema]tímto názvem. - Připravte SQL dotaz: Zkopírujte celý SQL dotaz uvedený v části
query. Dotaz je navržen tak, aby zadané aktivity načetl do jednoho záznamu událostí. - Nastavte parametry dotazu: Před spuštěním upravte zástupné hodnoty v dotazu. Nastavte
[Start Date]a[End Date]a určete tak období extrakce. Doporučujeme také filtrovat podle výrobního závodu (WERKS) nebo typu zakázky (AUART), aby se omezil objem dat. - Připojte se a spusťte dotaz: Pomocí běžného SQL klienta, například DBeaveru nebo SAP HANA Studio, případně vlastního skriptu v Pythonu či Javě, se připojte k databázi SAP pomocí údajů z prvního kroku.
- Spusťte dotaz: Vložte nastavený SQL dotaz do klienta a spusťte ho. Podle rozsahu dat a velikosti systému může zpracování trvat několik minut.
- Zkontrolujte první výsledky: Po dokončení dotazu krátce zkontrolujte prvních několik set řádků. Ověřte, že sloupce jako
ProductionOrder,ActivityNameaEventTimeobsahují správné a smysluplné hodnoty. - Exportujte do CSV: Exportujte celou sadu výsledků z SQL klienta do souboru CSV. Použijte kódování UTF-8, aby nedocházelo k problémům se znaky.
- Připravte CSV k nahrání: Otevřete soubor CSV a ověřte, že záhlaví sloupců odpovídají požadovaným atributům (
ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdateatd.). Zkontrolujte také jednotný formát sloupceEventTime, napříkladYYYY-MM-DD HH:MI:SS. - Nahrajte data do ProcessMind: Připravený soubor CSV můžete nahrát na platformu ProcessMind a zahájit analýzu.
Konfigurace
- Schéma databáze: Zadejte schéma SAP, ve kterém jsou uložené tabulky pro plánování výroby. V dotazu nahraďte zástupný text
[Your SAP Schema]správným názvem pro vaše prostředí, napříkladSAPSR3. - Časové období: Filtrování podle konkrétního období je důležité pro výkon. Dotaz filtruje podle data vytvoření zakázky (
AUFK.ERDAT). Doporučujeme začít s nedávným obdobím 3 až 6 měsíců, aby objem dat zůstal zvládnutelný. - Typ výrobní zakázky: Chcete-li analýzu zaměřit, filtrujte podle pole typu výrobní zakázky (
AUFK.AUART). Můžete tak zahrnout nebo vyloučit konkrétní typy, například standardní výrobní zakázky, procesní zakázky nebo zakázky na opravy. - Výrobní závod: Doporučujeme filtrovat podle jednoho nebo více výrobních závodů (
AFKO.WERKS). Extrakce dat ze všech závodů najednou může výrazně zatížit zdroje. - Přístup k databázi: Tato metoda vyžaduje databázového uživatele, který má alespoň oprávnění ke čtení následujících tabulek:
AUFK,AFKO,JCDS,JEST,AFRU,MSEG,MKPF. Přímý přístup k databázi není standardní součástí oprávnění všech uživatelů SAP a vyžaduje zvláštní povolení.
Ukázkový dotaz 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'; Kroky
- Ověřte, že jsou k dispozici data SAP ECC PP pro zpracování výrobních zakázek, potvrzování, správu zásob a controlling. Zkontrolujte také, zda má uživatel pro extrakci oprávnění číst požadované aplikační tabulky a spouštět vlastní ABAP reporty.
- V ABAP Workbench, například v transakci SE38 nebo SE80, vytvořte samostatný spustitelný report, například [Název vlastního reportu]. Použijte výběrovou obrazovku s povinnými parametry data, například [Počáteční datum] a [Koncové datum], a volitelnými filtry pro [Kód společnosti], [Výrobní závod], [Typ zakázky], [Materiál] a [Výrobní zakázka].
- Načtěte hlavičky výrobních zakázek a kmenová data z AUFK a z tabulek výrobních zakázek nastavených ve vašem systému SAP ECC. Pomocí JCDS a odpovídající konfigurace stavů určete explicitní změny stavů, včetně CRTD, uvolnění, technického dokončení a stavů souvisejících se zrušením. Nepovažujte stavový kód za událost, pokud historie stavů neobsahuje změnu s časovým razítkem.
- Načtěte výsledky kontroly dostupnosti materiálu ze zdroje dat pro kontrolu dostupnosti výrobních zakázek nastaveného ve vašem systému. Pokud se výsledek kontroly neukládá do tabulky, kterou lze spolehlivě propojit se zakázkou a časovým razítkem, použijte rozšíření SAP, aplikační log nebo auditní zdroj schválený vaším týmem SAP. Samotné vytvoření nebo uvolnění zakázky nepovažujte za důkaz provedené kontroly.
- Načtěte historii změn zakázek z nakonfigurovaných objektů změnových dokladů výrobních zakázek a souvisejících tabulek změnových dokladů. Extrahujte pouze významné změny, například plánované množství, data, kusovník, technologický postup nebo jiná pole schválená vlastníkem procesu. Jako EventTime použijte časové razítko změnového dokladu.
- Načtěte výdeje a příjmy materiálu ze zdroje dat materiálových dokladů nastaveného ve vašem systému. Propojte zaúčtování s výrobní zakázkou pomocí reference na zakázku dostupné v datech materiálového dokladu. Výdeje komponent označte jako Goods Issue Posted a příjmy hotových výrobků jako Goods Receipt Posted. Pokud jsou k dispozici, použijte datum a čas zaúčtování.
- Načtěte data potvrzení ze zdroje potvrzení výroby nastaveného ve vašem systému. Seřaďte potvrzení podle výrobní zakázky a časového razítka potvrzení. U prvního potvrzení vytvořte událost First Confirmation Recorded, u odpovídajících průběžných potvrzení Intermediate Confirmation Recorded a u potvrzení výslovně označeného jako konečné nebo určeného nakonfigurovanou logikou dokončení potvrzení Final Confirmation Recorded. Konečnost neurčujte podle posledního řádku vráceného libovolným dotazem.
- Načtěte data o provedení zúčtování ze zdroje controllingového zúčtování nastaveného ve vašem systému. Událost Order Settlement Ran vytvořte pouze tehdy, pokud záznam o provedení zúčtování, zúčtovací doklad nebo schválená historie stavů zúčtování obsahuje explicitní časové razítko propojené s výrobní zakázkou.
- Pro každou extrahovanou aktivitu vytvořte jeden interní řádek události. Vyplňte pole ProductionOrder, ActivityName, EventTime, SourceSystem, LastDataUpdate, ProductionPlant, ProductCode, PlannedQuantity, DeliveredQuantity, ActualStartDate a ActualEndDate. Použijte jednotný převod časových razítek a zachovejte časové pásmo zdrojového systému. Pokud existují příslušné události, nastavte ActualStartDate na časové razítko prvního potvrzení a ActualEndDate na časové razítko konečného potvrzení.
- Seřaďte řádky událostí podle ProductionOrder a EventTime. U shodných časových razítek použijte deterministické sekundární řazení. Odstraňte pouze přesné duplicity zdrojových záznamů, nikoli legitimně opakované události. Ověřte, že výstupní schéma obsahuje všech dvanáct požadovaných názvů aktivit a každý vytvořený řádek má identifikátor případu, název aktivity a časové razítko události.
- Zapište výsledek do souboru na aplikačním serveru pomocí schváleného rozhraní ABAP pro práci se soubory a nakonfigurované logické cesty k souboru. Použijte oddělovač a kódování textu dohodnuté pro načítání do ProcessMind, přidejte řádek záhlaví, hodnoty obsahující oddělovač uzavřete do uvozovek a časová razítka formátujte jednotně, nejlépe jako YYYY-MM-DDThh:mm:ss.
- Stáhněte soubor schváleným postupem přenosu souborů SAP, samostatně jej zkontrolujte a nahrajte do ProcessMind jako event log. Nastavte ProductionOrder jako identifikátor případu, ActivityName jako aktivitu a EventTime jako časové razítko události. Ověřte, že ProcessMind načítá řádky beze změn a neočekává se od něj doplnění chybějících aktivit.
Konfigurace
- Rozsah dat: Pro úvodní analýzu použijte průběžné období extrakce v délce tří až šesti měsíců. Rozsah rozšiřte až po vyhodnocení výkonu a objemu dat. Zahrňte také období před začátkem vybraného rozsahu, aby byly zachyceny zakázky vytvořené dříve, které byly během analyzovaného období stále aktivní.
- Výběrové filtry: Podporujte filtry [Kód společnosti], [Výrobní závod], [Typ zakázky], [Materiál], [Výrobní zakázka], stav zakázky a datum vytvoření nebo změny. Konkrétní pole nastavte podle implementace SAP ECC, protože dostupnost polí výrobní zakázky se může lišit podle verze a úprav systému.
- Rozsah událostí: Extrahujte všech dvanáct požadovaných aktivit jako samostatné řádky událostí: 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 a Order Cancellation Set.
- Pravidla pro časová razítka: Upřednostněte datum a čas zdrojové události. Pokud je k dispozici pouze datum, zaznamenejte nižší přesnost a použijte jednotný nakonfigurovaný čas, místo abyste uváděli vymyšlený přesný čas. Všechna časová razítka převeďte do časového pásma očekávaného ProcessMind.
- Práce se stavy: U stavových aktivit použijte historii stavů s časovými razítky. Mapování interních hodnot stavů na obchodní aktivity nastavte podle konfigurace systémových stavů a po schválení vlastníkem procesu.
- Kontroly dostupnosti: Nastavte schválený zdroj záznamů o provedení kontroly dostupnosti. Nevytvářejte událost Material Availability Checked na základě vytvoření nebo uvolnění zakázky, rezervací ani úspěšného výdeje materiálu, pokud schválený obchodní zdroj kontrolu výslovně nezaznamenává.
- Práce s potvrzeními: Nastavte pravidla pro rozlišení prvního, průběžného a konečného potvrzení. Potvrzení lze označit jako konečné pouze tehdy, pokud je tak výslovně označeno ve zdroji nebo pokud dokončení potvrzuje nakonfigurovaná logika SAP.
- Množství: Pokud možno zachovejte zdrojovou měrnou jednotku. Pokud množství agregujete, zdokumentujte, zda agregace probíhá podle zakázky, materiálu, pohybu, potvrzení nebo události. DeliveredQuantity má představovat zaúčtované příjmy hotových výrobků, nikoli pouze potvrzený výtěžek, pokud vlastník procesu neschválí jiný výklad.
- LastDataUpdate: Vyplňte toto pole časovým razítkem běhu extrakce nebo obnovení zdrojových dat. V rámci jednoho běhu použijte u všech řádků stejnou zdokumentovanou konvenci.
- Výkon: Omezte rozsah výběru, načítejte pouze potřebná pole, zpracovávejte data po dávkách, filtrujte na straně databáze, vyhněte se vnořeným čtením databáze ve velkých smyčkách a indexy vytvářejte nebo používejte pouze po schválení správou databáze SAP. Pokud je problémem spotřeba paměti, zapisujte výstup průběžně.
- Výstupní soubor: Adresář aplikačního serveru, logický název souboru, oddělovač, kódování, formát desetinných čísel, formát časových razítek a záhlaví nastavte podle specifikace nahrávání do ProcessMind. V reportu ani výstupním souboru neuvádějte přihlašovací údaje.
- Předpoklady: Ověřte, že jsou podle potřeby aktivní SAP ECC PP, správa zásob, potvrzování, správa stavů výrobních zakázek a data controllingového zúčtování. Před spuštěním musí být udělena potřebná oprávnění, schválen vlastní vývoj a jeho transport, přístup k souborům na aplikačním serveru i přístup k načítání dat do ProcessMind.
- Nastavení podle konkrétního systému: Názvy tabulek a polí, stavové kódy, objekty změnových dokladů, zdroje potvrzení, kontroly dostupnosti a zúčtování ověřte v cílovém systému SAP ECC. Pokud implementace neposkytuje standardní a spolehlivý zdroj, použijte [Nastavte podle svého systému].
Ukázkový dotaz 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'. Chcete začít?
Pomocí této šablony připravte data a začněte zlepšovat proces plánování výroby. Získejte přehled o procesu a zjednodušte provoz.
Zlepšete plánování výroby a využití zdrojů
Odhalte nedostatky, zkraťte průběžnou dobu o 30 % a plňte cíle.
K zahájení nepotřebujete platební kartu. Začněte zlepšovat proces ještě dnes.