Gyártástervezési adatsablon
Gyártástervezési adatsablon
- Javasolt attribútumok
- Követendő fontos tevékenységek
- Gyakorlati útmutató az adatok kinyeréséhez
Gyártástervezési attribútumok
| Név | Leírás | ||
|---|---|---|---|
| Esemény időpontja EventTime | Az esemény bekövetkezésének pontos időbélyege. | ||
| Leírás Az esemény időpontja rögzíti, hogy egy adott tevékenységet mikor hajtottak végre, vagy mikor naplóztak egy státuszt a rendszerben. Ez az időbélyeg alapvető minden időalapú folyamatelemzéshez, beleértve a ciklusidő, a várakozási idő és a teljes folyamatidő kiszámítását. A pontos időbélyegek szükségesek az események helyes sorrendbe állításához és a teljesítmény elemzéséhez. Segítségükkel mérhető a tevékenységek közötti idő, feltárhatók a késések, és összevethető a teljesítmény az ütemtervekkel vagy a szolgáltatási szintre vonatkozó megállapodásokkal. A termeléstervezésben így megérthető, mennyi ideig tartanak a tervezés és a végrehajtás egyes szakaszai. Miért fontos? Megadja az események időrendi sorrendjét, amely szükséges az időtartamok kiszámításához, a teljesítmény elemzéséhez és a szűk keresztmetszetek feltárásához. Hol szerezhető be? A tranzakciókhoz és státuszváltozásokhoz kapcsolódó dátum- és időmezőkből származik, például az anyagbizonylatok BUDAT (könyvelési dátum) mezőjéből vagy a CDHDR változás-időbélyegeiből. Példák 2023-04-15T10:05:30Z2023-04-15T14:22:00Z2023-04-18T08:59:11Z2023-04-20T16:45:00Z | |||
| Gyártási rendelés ProductionOrder | A gyártási rendelés egyedi azonosítója, amely a termeléstervezési és -végrehajtási folyamat elsődleges esetazonosítójaként szolgál. | ||
| Leírás A gyártási rendelés száma egyedi alfanumerikus azonosító, amelyet az SAP ECC PP minden gyártási rendeléshez hozzárendel. Ez az a központi objektum, amely összekapcsolja a rendeléshez tartozó összes tevékenységet a létrehozástól és a tervezéstől a végrehajtásig és a végső elszámolásig. A process mining során ez az attribútum szükséges ahhoz, hogy az egy gyártási menethez tartozó eseményeket csoportosítsuk. Így elemezhető a gyártási rendelés teljes életciklusa, nyomon követhető az előrehaladása, mérhetők a ciklusidők, és feltárhatók a szabványos folyamattól való eltérések. A gyártási rendelés szerinti elemzés megmutatja, hogyan teljesülnek az egyes gyártási igények. Miért fontos? Ez az alapvető azonosító kapcsolja össze a folyamathoz tartozó eseményeket, így a gyártás teljes útja rekonstruálható és elemezhető a kezdetétől a végéig. Hol szerezhető be? Az attribútum az SAP AUFK táblájának AUFNR mezőjében található. Példák 1000345100034610003471000348 | |||
| Tevékenység neve ActivityName | A gyártási rendeléshez egy adott időpontban kapcsolódó üzleti vagy rendszeresemény neve. | ||
| Leírás A tevékenység neve a termeléstervezési folyamat egy adott lépését vagy státuszváltozását jelöli. Az események az SAP ECC PP változásnaplóiból, státuszfrissítéseiből és tranzakciós rekordjaiból nyerhetők ki. Ilyen fontos mérföldkő például a „Gyártási rendelés létrehozva”, az „Anyag rendelkezésre állásának ellenőrzése” vagy a „Késztermék-bevételezés könyvelve”. Ez az attribútum adja a folyamattérkép alapját: segítségével az elemzők megjeleníthetik az események sorrendjét, feltárhatják a folyamatváltozatokat, és azonosíthatják a szűk keresztmetszeteket vagy az újramunkálási köröket. A tevékenységnevek egyértelműsége és részletessége elengedhetetlen ahhoz, hogy a folyamatmodell pontosan tükrözze a tényleges működést. Miért fontos? Meghatározza a folyamattérkép lépéseit, így a gyártási munkafolyamat megjeleníthető, elemezhető és megérthető. Hol szerezhető be? Többféle forrásból származik, például a JEST/JSTO táblák státuszváltozásaiból, a tranzakciós naplókból és a CDHDR/CDPOS változásdokumentumaiból. Példák Gyártási rendelés felszabadítvaAnyagkiadás könyvelveVégső visszaigazolás rögzítveRendelés műszakilag lezárva | |||
| Forrásrendszer SourceSystem | Megadja, melyik rendszerből nyerték ki az adatokat. | ||
| Leírás Ez az attribútum jelöli meg a rekord forrásrendszerét, például az adott SAP ECC-példány nevét vagy azonosítóját. Több ERP-rendszert, illetve régi és modern platformokat egyaránt használó szervezeteknél ez a mező fontos az adatok eredetének követéséhez és értelmezéséhez. Az elemzés során a forrásrendszer alapján szűrhetők a folyamatok. Ez hasznos lehet a különböző rendszerek folyamatainak összehasonlításakor vagy az adatok elkülönítésekor több rendszer adatainak egyesítése során. Miért fontos? Fontos információt ad az adatok eredetéről, különösen akkor, ha a szervezet több SAP-példányt vagy integrált rendszert használ. Hol szerezhető be? Általában az adatkinyerés során adják hozzá, gyakran az SAP rendszerazonosítójából (SY-SYSID) származtatva. Példák ECC_PROD_100S4H_FIN_200ECC_DE | |||
| Utolsó adatfrissítés LastDataUpdate | Az időbélyeg, amely megmutatja, mikor frissítették vagy nyerték ki utoljára az esemény adatait. | ||
| Leírás Ez az attribútum rögzíti, mikor töltötték be az adatokat a forrásrendszerből a process mining eszközbe. Nem üzleti eseményt jelöl, hanem adatkezelési célú technikai időbélyeg. Elsősorban az adatok frissességének ellenőrzésére szolgál, és segít az adminisztrátoroknak, illetve az elemzőknek megállapítani, mennyire aktuálisak az elemzett adatok. Folyamatos működés nyomon követésekor különösen fontos annak ellenőrzéséhez, hogy az elemzés naprakész információkon alapul-e. Miért fontos? Igazolja az adatok frissességét, így az elemzések a rendelkezésre álló legaktuálisabb információkra épülnek. Hol szerezhető be? Ezt az értéket az adatbetöltés során általában az adatkinyerést, átalakítást és betöltést végző ETL-eszköz vagy szkript hozza létre és rögzíti. Példák 2023-10-27T02:00:00Z2023-10-28T02:00:00Z2023-10-29T02:00:00Z | |||
| Gyártóüzem ProductionPlant | Az a gyártóüzem vagy telephely, ahol a gyártási rendelést végrehajtják. | ||
| Leírás A gyártóüzem az SAP egyik fontos szervezeti egysége, amely egy gyártási telephelyet jelöl. Minden gyártási rendeléshez hozzárendelik, és meghatározza, hol zajlik fizikailag a termelés. A folyamat gyártóüzem szerinti elemzésével összehasonlítható a különböző telephelyek teljesítménye. Így feltárható, mely üzemek működnek hatékonyabban, hol gyakoribbak a késések vagy az anyaghiányok, és hol érdemes megosztani a bevált gyakorlatokat. Ez alapvető elemzési szempont az átbocsátásra és az erőforrás-kihasználtságra vonatkozó dashboardokon. Miért fontos? Lehetővé teszi a különböző gyártóhelyek teljesítményének összehasonlítását, és segít feltárni a telephelyspecifikus problémákat, illetve a bevált gyakorlatokat. Hol szerezhető be? Az attribútum az SAP AUFK táblájának WERKS mezőjében található. Példák 100017102000DE01 | |||
| Leszállított mennyiség DeliveredQuantity | A ténylegesen legyártott és készletre vett termék mennyisége. | ||
| Leírás A leszállított mennyiség, más néven késztermék-bevételezési mennyiség, az adott gyártási rendeléshez legyártottként visszaigazolt késztermék teljes mennyisége. Az érték a „Késztermék-bevételezés könyvelve” események rögzítésekor frissül. Ez az attribútum a „Tervezett mennyiség” párja, és szükséges a „Tervezett és tényleges mennyiség eltérése” KPI kiszámításához. A termelési kibocsátás pontos mérőszámaként segít feltárni a selejt, a kihozatali veszteség vagy más gyártási probléma okozta eltéréseket. A leszállított mennyiségek üzem, termék vagy időszak szerinti összehasonlítása megmutatja, hol vannak hatékonysági problémák. Miért fontos? A termelési folyamat tényleges kibocsátását méri, így közvetlenül összevethető a tervezett célokkal a teljesítmény értékeléséhez. Hol szerezhető be? Az érték az SAP AFPO táblájának WEMNG (bevételezett mennyiség) mezőjében található. Példák 984950751255 | |||
| Tényleges befejezési dátum ActualEndDate | Az utolsó termelési tevékenység időbélyege, amely a rendelés tényleges befejezését jelöli. | ||
| Leírás A tényleges befejezési dátum annak az eseménynek az időbélyege, amely a rendelés összes gyártási tevékenységének befejezését jelzi. Ez általában a „Végső visszaigazolás rögzítve” vagy az utolsó „Késztermék-bevételezés könyvelve” esemény időbélyegéből állapítható meg. Ez az attribútum szükséges a teljes gyártási ciklusidő méréséhez és az ütemterv-tartás elemzéséhez. A tényleges és a tervezett befejezési dátum összevetésével megállapítható, hogy a rendelés időben készült-e el. A tényleges kezdési és befejezési dátum közötti idő a termelés valós átfutási ideje. Miért fontos? Jelöli a termelés befejezését, így pontosan mérhető a határidőre történő szállítás és a teljes végrehajtási idő. Hol szerezhető be? Az eseménynaplóból származik: a fontos befejezési tevékenységek, például a „Végső visszaigazolás rögzítve” vagy az „Áruátvétel könyvelve” időbélyegei közül a legkésőbbit veszi alapul. Példák 2023-05-14T16:00:00Z2023-06-29T11:30:00Z2023-07-05T17:00:00Z | |||
| Tényleges kezdési dátum ActualStartDate | Az első rögzített termelési tevékenység időbélyege, amely a végrehajtás tényleges kezdetét jelöli. | ||
| Leírás A tényleges kezdési dátum annak az első eseménynek az időbélyege, amely a fizikai termelési munka kezdetét jelzi. Ez jellemzően az első termelési visszaigazolásból vagy az első, rendeléshez kapcsolódó alapanyag-kiadásból állapítható meg. Ez a származtatott attribútum szükséges az ütemterv-tartás elemzéséhez. Megadja a tényleges kezdési időpontot, amely összevethető a tervezett kezdési dátummal, így pontosan kiszámítható a kezdési eltérés. A tervezett és tényleges kezdés közötti különbség segít feltárni az anyag-előkészítéshez, a gépek beállításához vagy az erőforrások rendelkezésre állásához kapcsolódó, termelés előtti késéseket. Miért fontos? Megadja a termelés végrehajtásának tényleges kezdetét, így pontosan mérhető a kezdési késés és a teljes gyártási átfutási idő. Hol szerezhető be? Az eseménynaplóból származtatható: gyártási rendelésenként keresse meg az adott végrehajtási tevékenységek, például az „Első visszaigazolás rögzítve” vagy az „Anyagkiadás könyvelve” legkorábbi időbélyegét. Példák 2023-05-11T08:30:00Z2023-06-22T14:00:00Z2023-07-02T09:15:00Z | |||
| Termékkód ProductCode | A gyártott anyag vagy termék egyedi azonosítója. | ||
| Leírás A termékkód, más néven anyagszám, azonosítja a gyártási rendelésben szereplő terméket. Ez központi törzsadatelem, amely összekapcsolja a termeléstervezést a készletgazdálkodással, az értékesítéssel és a költségszámítással. A process mining során a termékkód szerinti szűrés és csoportosítás elengedhetetlen a termékspecifikus gyártási folyamatok megértéséhez. Segítségével megválaszolható például, hogy mely termékeknél a leghosszabb a ciklusidő, illetve hogy bizonyos termékeknél gyakoribbak-e a minőségi problémák vagy az anyagellátási késések. Ez az elemzés fontos a termékportfólió kezeléséhez, valamint az egyes anyagtípusok folyamatainak egységesítéséhez és optimalizálásához. Miért fontos? Lehetővé teszi a termékspecifikus folyamatelemzést, és megmutatja, mely anyagokhoz kapcsolódnak hatékonysági problémák, késések vagy magas költségek. Hol szerezhető be? Az érték az SAP AFPO táblájának MATNR mezőjében található. Példák FG-123RM-45AHALB-7890CHEM-22 | |||
| Tervezett mennyiség PlannedQuantity | A rendelésben gyártásra ütemezett termék teljes mennyisége. | ||
| Leírás A tervezett mennyiség a gyártási rendelés tervezési szakaszában meghatározott célmennyiség. Ehhez viszonyítják a tényleges termelési mennyiséget. Ez az attribútum alapvető a termelési teljesítményhez és az ütemterv-tartáshoz kapcsolódó KPI-k, például a „Tervezett és tényleges mennyiség eltérése” kiszámításához. Segít felmérni a termeléstervezés pontosságát, és feltárni a túl- vagy alultermeléshez kapcsolódó rendszerszintű problémákat. Elemzésével megérthető, mennyire felel meg a végrehajtás az eredeti terveknek. Miért fontos? Ez az attribútum szolgál alapul a termelési mennyiség eltérésének méréséhez és a tervezés pontosságának értékeléséhez. Hol szerezhető be? Az érték az SAP AFKO táblájának GAMNG (teljes rendelési mennyiség) mezőjében található. Példák 1005000751250 | |||
| Anyag rendelkezésre állása MaterialAvailabilityStatus | Azt jelzi, hogy rendelkezésre áll-e a gyártási rendeléshez szükséges összes alkatrész. | ||
| Leírás Az anyag rendelkezésre állási státusza a gyártásra való felkészültség fontos mutatója. A rendszer a rendeléshez szükséges összes alkatrész rendelkezésre állását ellenőrzi. A „Rendelkezésre áll” státusz azt jelenti, hogy az anyagellátás nem akadályozza a gyártást, a „Hiány” pedig problémát jelez. Ez az attribútum elengedhetetlen az „Anyaghiány hatásának elemzése” dashboardhoz. Ha megvizsgálja, mennyi ideig várakoznak a rendelések anyaghiány miatt, számszerűsítheti, hogyan hatnak az ellátási lánc problémái a gyártási ütemtervre. Így azonosíthatók a megbízhatatlan beszállítók és a gyakran késést okozó alkatrészek. Miért fontos? Közvetlenül megmutatja az anyaghiány okozta késéseket, amelyek gyakran jelentős okai a gyártási ütemtervtől való eltérésnek. Hol szerezhető be? Ezt nem egyetlen tárolt mező tartalmazza, hanem egy rendelkezésre állási ellenőrzés (ATP check) eredménye. Az eredmény gyakran a CO02 tranzakcióban vagy a csoportos rendelkezésre állási ellenőrzésben, a COHV tranzakcióban látható. Maga a státusz is naplózható, például MACM (anyag lefoglalva). További információért tekintse meg az SAP ECC PP dokumentációját. Példák Rendelkezésre állHiányRészben áll rendelkezésreNincs ellenőrizve | |||
| Felelős felhasználó ResponsibleUser | Annak a személynek a felhasználói azonosítója, aki létrehozta vagy utoljára módosította a gyártási rendelést. | ||
| Leírás A felelős felhasználó azonosítja azt az SAP-fiókot, amely a gyártási rendelés életciklusának fontos eseményeihez, például a létrehozáshoz vagy a felszabadításhoz kapcsolódik. Ez biztosítja a rendszerben végzett műveletek nyomon követhetőségét és az egyértelmű felelősséget. A process miningben ez az attribútum a felhasználói viselkedésből adódó folyamateltérések elemzésére használható. Segít azonosítani azokat a felhasználókat, akiknek további képzésre lehet szükségük, vagy akik nem szabványos eljárásokat követnek. Az erőforrások elemzését is támogatja, mert megmutatja, hogyan oszlik meg a munka a felhasználók között. Miért fontos? A folyamattevékenységeket konkrét személyekhez kapcsolja, így felhasználói szinten elemezhető a teljesítmény, és egyértelműbbé válik a felelősség. Hol szerezhető be? A rendelést létrehozó felhasználó az AUFK-ERNAM mezőben, az utoljára módosító felhasználó pedig az AUFK-AENAM mezőben található. A módosítási dokumentumok (CDHDR-USERNAME) az egyes módosításokhoz tartozó felhasználók előzményeit tartalmazzák. Példák JSMITHPROD_PLANNER1BATCH_USERAMILLER | |||
| Gyártási prioritás ProductionPriority | A gyártási rendelés sürgősségét vagy prioritását jelző besorolás. | ||
| Leírás A gyártási prioritás a gyártási rendelések relatív fontosságát jelzi. Ennek alapján a gyártásütemezők és az üzemi dolgozók előre sorolhatják a feladatokat, így a sürgős rendelések gyorsabban haladhatnak végig a folyamaton. Az attribútum elemzésével felmérhető, mennyire hatékony a prioritási rendszer. A magas és alacsony prioritású rendelések ciklusidejének összehasonlításából kiderül, hogy a sürgős rendelések valóban gyorsabban készülnek-e el. Ha nem, annak kommunikációs probléma, az erőforrások elosztása vagy a végrehajtási folyamat lehet az oka. Miért fontos? Segít felmérni, hogy a prioritáskezelés megfelelően működik-e, vagyis a sürgős rendelések valóban hamarabb készülnek-e el a normál rendelésekhez képest. Hol szerezhető be? Ez gyakran nem szabványos mező a gyártási rendelés fejlécében. Lehet egyedi mező, származhat az értékesítési rendelés prioritásából, vagy része lehet egy besorolási rendszernek. További információért tekintse meg az SAP ECC PP dokumentációját vagy a rendszer konfigurációját. Példák MagasKözepesAlacsonySürgős | |||
| Gyártási rendelés státusza ProductionOrderStatus | A gyártási rendelés aktuális feldolgozási státusza, például létrehozva, felszabadítva vagy műszakilag lezárva. | ||
| Leírás A gyártási rendelés státusza megmutatja, hogy a rendelés éppen hol tart az életciklusában. Az SAP státuszkódokkal követi a rendelés előrehaladását, például CRTD (létrehozva), REL (felszabadítva), CNF (visszaigazolva), DLV (leszállítva) és TECO (műszakilag lezárva). A különböző státuszokban eltöltött idő elemzése a gyártási process mining egyik alapja. Ebből kiderülhet, mennyit várnak a rendelések a felszabadításra a létrehozás után, vagy mennyi ideig maradnak részben leszállított állapotban. Ha a státuszváltásokat tevékenységként követi, magas szinten láthatóvá válik a folyamat menete. Miért fontos? Pillanatképet ad a rendelés előrehaladásáról, és segít megtalálni azokat a szűk keresztmetszeteket, ahol a rendelések hosszabb időre elakadnak. Hol szerezhető be? A státuszadatokat a JEST és JSTO táblák tárolják, a rendelés objektumszámához (AUFK-OBJNR) kapcsolva. A státuszok szövege a TJ02T táblában található. A státuszok lekérdezése gyakran olyan funkciómodulokkal történik, mint a STATUS_TEXT_EDIT. Példák CRTD (létrehozva)REL (felszabadítva)DLV (leszállítva)TECO (műszakilag lezárva) | |||
| Mennyiségi eltérés QuantityVariance | A tervezett gyártási mennyiség és a ténylegesen leszállított mennyiség különbsége. | ||
| Leírás A mennyiségi eltérés számított mutató, amely a gyártási kibocsátás tervtől való eltérését méri. A leszállított mennyiség és a tervezett mennyiség különbségeként számítható ki. A pozitív érték túltermelést, a negatív érték alultermelést vagy kihozatali veszteséget jelez. Ez az attribútum elengedhetetlen a „Tervezett és tényleges gyártási kibocsátás” dashboardhoz és a hozzá tartozó KPI-hoz. Az eltérés elemzése segít feltárni a kihozatallal, a selejtarányokkal vagy az adatrögzítési hibákkal kapcsolatos problémákat. Közvetlenül méri, mennyire megbízhatóan teljesíti a gyártási folyamat a kibocsátási célokat. Miért fontos? Számszerűsíti, mennyire felel meg a gyártási kibocsátás a tervnek, és rávilágít a kihozatallal, a selejttel vagy a folyamatirányítással kapcsolatos problémákra. Hol szerezhető be? Számított mező: 'DeliveredQuantity' - 'PlannedQuantity'. Példák -2-5005 | |||
| Tervezett befejezési dátum PlannedEndDate | Az a tervezett dátum, ameddig a rendelés gyártását be kell fejezni. | ||
| Leírás A tervezett befejezési dátum a gyártási rendelés célzott befejezési dátuma, amelyet az ütemezés során határoznak meg. Megadja, mikorra kell befejezni az összes gyártási tevékenységet, beleértve a végső visszaigazolásokat és a késztermék-bevételezést. Ez a dátum szükséges az ütemterv-tartási arány KPI kiszámításához. A tervezett befejezési dátum és a tényleges befejezési idő, például a „Késztermék-bevételezés könyvelve” vagy a „Végső visszaigazolás rögzítve” tevékenység időbélyegének összevetésével megállapítható, hogy a rendelések időben készülnek-e el. Az elemzés segít felmérni a termelési ütemtervek megbízhatóságát, és feltárni a késedelmes szállítások kiváltó okait. Miért fontos? Ez az összehasonlítási alap annak megállapításához, hogy a gyártási rendelések időben készülnek-e el. Közvetlenül hat a vevői elégedettségre és a tervezés megbízhatóságára. Hol szerezhető be? Ez az alapbefejezési dátum, amely az SAP AFKO táblájának GLTRP mezőjében található. Példák 2023-05-152023-06-282023-07-05 | |||
| Tervezett kezdési dátum PlannedStartDate | Az a tervezett dátum, amikor a rendelés gyártása megkezdődik. | ||
| Leírás A tervezett kezdési dátum a termeléstervezés és -ütemezés során meghatározott ütemezési paraméter. Azt a céldátumot jelöli, amikor a rendelés gyártási tevékenységeinek el kell kezdődniük. Ez az attribútum szükséges az ütemterv-tartás méréséhez. A tervezett kezdési dátum és a termelés tényleges kezdési időpontjának, például az „Első visszaigazolás rögzítve” tevékenység időbélyegének összevetésével feltárhatók a termelésindítási késések. Ezek okainak elemzése a process mining egyik fő alkalmazási területe. Miért fontos? Ez az ütemterv-tartás mérésének alapja, és segít feltárni a termelés végrehajtásának megkezdése előtti késéseket. Hol szerezhető be? Ez az alapkezdési dátum, amely az SAP AFKO táblájának GSTRP mezőjében található. Példák 2023-05-102023-06-222023-07-01 | |||
| Tervezőcsoport PlannerGroup | A rendelésért felelős anyagszükséglet-tervezők vagy gyártástervezők csoportja. | ||
| Leírás A tervezőcsoport olyan szervezeti egység, amely egy adott anyagkör vagy gyártási rendelések tervezéséért és kezeléséért felelős munkatársakat fog össze. A rendelések tervezőcsoportokhoz rendelése segít elosztani a munkát és egyértelművé tenni a felelősségi köröket. A process miningben ez az attribútum lehetővé teszi a felelős tervezőcsapatok teljesítményének elemzését. Segítségével megválaszolhatók például az olyan kérdések, mint hogy „Melyik tervezőcsoportnál térnek el leggyakrabban az ütemtervtől?” vagy „Eltér-e a ciklusidő a különböző csoportok által kezelt rendelések esetében?”. Az eredmények segítenek kiegyensúlyozni a munkaterhelést és felmérni a képzési igényeket. Miért fontos? Lehetővé teszi a teljesítmény felelős csapat szerinti elemzését, így feltárhatók a tervezés hatékonyságában és a munkaterhelésben mutatkozó különbségek. Hol szerezhető be? Ez az MRP Controller mező, amely az SAP AFKO táblájának DISPO mezőjében található. Példák 001002P01P02 | |||
| Ütemterv betartásának státusza ScheduleAdherenceStatus | Azt jelzi, hogy a gyártási rendelés a tervezett befejezési dátumig elkészült-e. | ||
| Leírás Az ütemterv betartásának státusza számított logikai vagy kategóriaérték, amely gyors áttekintést ad a határidőre történő teljesítésről. A tényleges befejezési dátum és a tervezett befejezési dátum összehasonlításával számítható ki. Ha a tényleges befejezés a tervezett dátumon vagy előtte történt, a státusz „Határidőre”; egyébként „Késik”. Ez az attribútum egyszerűbbé teszi a dashboardokon végzett elemzést és az adatok megjelenítését. Könnyen szűrhető és összesíthető, így kiszámítható az „Ütemterv betartási arány” KPI, és azonosíthatók a késő rendelések fő okai, például bizonyos termékek, üzemek vagy anyaghiányok. Miért fontos? Egyszerűbbé teszi a teljesítmény elemzését azzal, hogy a rendeléseket „Határidőre” vagy „Késik” kategóriába sorolja. Így könnyen mérhető és jelenthető az ütemterv megbízhatósága. Hol szerezhető be? Számított mező: IF('ActualEndDate' <= 'PlannedEndDate', 'On-Time', 'Late'). Példák HatáridőreKésik | |||
Gyártástervezési tevékenységek
| Tevékenység | Leírás | ||
|---|---|---|---|
| Első visszaigazolás rögzítve | Ez az esemény jelzi a rendelés tényleges gyártási munkájának kezdetét. Akkor rögzíthető, amikor a gyártási rendelés bármely műveletének első idő-visszaigazolását beviszik a rendszerbe. | ||
| Miért fontos? Ez a tevékenység megadja a termelés tényleges kezdési időpontját. Ez szükséges az ütemterv-tartás méréséhez, valamint az erőforrások kiosztása és a munka megkezdése közötti késések feltárásához. Hol szerezhető be? Az esemény az AFRU táblában a rendeléshez rögzített összes visszaigazolás közül a legkorábbi könyvelési dátum (AFRU-BUDAT) megkeresésével állapítható meg. Az első bejegyzés jelöli a tényleges gyártás kezdetét. Rögzítés Az AFRU táblában szereplő könyvelési dátum alapján keresse meg a rendelés első visszaigazolási rekordját. Eseménytípus inferred | |||
| Gyártási rendelés felszabadítva | Ez a tevékenység a gyártási rendelés hivatalos jóváhagyását és végrehajtásra történő felszabadítását jelzi. A felszabadítás után aktiválódnak az anyagfoglalások, és megkezdődhetnek az olyan termelési tevékenységek, mint az anyagkiadás és a visszaigazolás. | ||
| Miért fontos? Ez fontos mérföldkő, amely a tervezésről a végrehajtásra való áttérést jelzi. A létrehozás és a felszabadítás közötti idő a tervezés hatékonyságának egyik fontos mutatója. Hol szerezhető be? A rendszer akkor rögzíti az eseményt, amikor a gyártási rendelés megkapja a „REL” (I0002) státuszt. A változást időbélyeggel naplózza a JCDS tábla, a rendelés objektumszámához (AUFK-OBJNR) kapcsolva. Rögzítés Határozza meg, mikor válik aktívvá a rendelés „REL” státusza. Eseménytípus explicit | |||
| Gyártási rendelés létrehozva | Ez az esemény egy új gyártási rendelés létrehozását jelöli. A rendelés általában egy tervezési futtatásból vagy kézi rögzítésből indul. A rendszer akkor rögzíti az eseményt, amikor az új rendelés rekordját elmentik, és a rendelés megkapja a „CRTD” (Created) státuszt. | ||
| Miért fontos? Ez minden gyártásirendelés-eset kiindulópontja. Az esemény és a felszabadítás közötti idő elemzésével feltárhatók a gyártás előtti tervezés és az adminisztratív előkészítés késései. Hol szerezhető be? Az esemény a gyártási rendelés létrehozási dátumából (AUFK-ERDAT) és időpontjából (AUFK-ERZET) állapítható meg. A rendszer hozzárendeli a „CRTD” (I0001) státuszt, amelyet a rendelés objektumszámához (AUFK-OBJNR) kapcsolódó JEST és JCDS táblákban naplóz. Rögzítés Kövesse nyomon a létrehozás időbélyegét és a „CRTD” státusz hozzárendelését. Eseménytípus explicit | |||
| Késztermék-bevételezés könyvelve | Ez az esemény a gyártási rendelésből elkészült termék készletre vételét rögzíti. Azt jelzi, hogy a legyártott termék már rendelkezésre áll szállításra vagy további feldolgozásra. | ||
| Miért fontos? Ez fontos befejezési mérföldkő, amely a gyártási folyamat végső eredményét jelzi. A felszabadítás és a késztermék-bevételezés közötti idő a teljes gyártási átfutási idő. Hol szerezhető be? Az eseményt a gyártási rendelésre hivatkozó, jellemzően „101” mozgásnemű anyagbizonylatként rögzítik az MKPF/MSEG táblákban. A rendelés „DLV” (I0012, Delivered) rendszerstátuszt is kap. Rögzítés Rögzítse a „101” mozgásnemű anyagbizonylat könyvelési dátumát vagy a „DLV” státuszváltozás időbélyegét. Eseménytípus explicit | |||
| Rendelés műszakilag lezárva | Ez az adminisztratív zárólépés logisztikai szempontból véglegesíti a gyártási rendelést. Megakadályozza a további anyagmozgásokat és visszaigazolásokat, valamint lehetővé teszi a pénzügyi elszámolást. | ||
| Miért fontos? Ez a rendelés logisztikai életciklusának végleges lezárása. Az esemény elemzésével a teljes folyamat időtartama is megérthető, beleértve a gyártás utáni adminisztratív feladatokat. Hol szerezhető be? Az esemény akkor rögzíthető, amikor a rendelés megkapja a „TECO” (I0045, Technically Completed) rendszerstátuszt. A változást időbélyeggel naplózza a JCDS tábla. Rögzítés Keresse meg a JCDS táblában azt az időbélyeget, amikor a rendelés „TECO” státusza aktívvá válik. Eseménytípus explicit | |||
| Végső visszaigazolás rögzítve | Ez a tevékenység azt jelzi, hogy a gyártási rendelés minden művelete befejeződött a gyártósor szempontjából. Ezt az utolsó művelet végső visszaigazolása jelöli. | ||
| Miért fontos? Ez a mérföldkő a tényleges gyártási tevékenységek végét jelzi. Az első és a végső visszaigazolás közötti idő a tényleges gyártási idő. Hol szerezhető be? Az esemény akkor rögzíthető, amikor a rendszer beállítja a „CNF” (I0009, Confirmed) státuszt. Ezt jellemzően az AFRU táblában rögzített végső visszaigazolás váltja ki (AFRU-AUERU = „X”). A státuszváltozást a JCDS naplózza. Rögzítés Keresse meg a „CNF” státusz beállításának időbélyegét, vagy az AFRU táblában az utolsó visszaigazolási rekordot. Eseménytípus explicit | |||
| Anyag rendelkezésre állásának ellenőrzése | Azt jelzi, hogy ellenőrizték, rendelkezésre áll-e a gyártási rendeléshez szükséges összes alkatrész. Az ellenőrzés automatikusan, a rendelés létrehozásakor vagy felszabadításakor is lefuthat, de kézzel is elindítható. | ||
| Miért fontos? Ez a tevékenység segít megérteni az anyaghiány okozta késéseket. A gyakori ellenőrzések vagy az anyagok rendelkezésre állásáig eltelt hosszú idő ellátásilánc- vagy készletgazdálkodási problémákra utalhat. Hol szerezhető be? A rendszer például „MACM” (anyag lefoglalva) vagy „MSPT” (anyaghiány) státuszt állít be. A végrehajtás a JEST/JCDS táblákban rögzített státuszváltozás időbélyegéből állapítható meg. Az eredmény a rendelés fejlécében látható. Rögzítés Az anyag rendelkezésre állásához kapcsolódó státuszváltozások, például a „MACM” vagy az „MSPT” időbélyegéből állapítsa meg. Eseménytípus inferred | |||
| Anyagkiadás könyvelve | Ez a tevékenység a gyártási rendeléshez felhasználandó alkatrészek készletből történő kivételét jelöli. Azt igazolja, hogy a szükséges alapanyagokat vagy félkész termékeket előkészítették a gyártáshoz. | ||
| Miért fontos? Ez az esemény jelöli az anyagfelhasználás kezdetét. A rendelés felszabadítása és az anyagkiadás közötti késés raktári logisztikai, anyag-előkészítési vagy készletnyilvántartási problémákra hívhatja fel a figyelmet. Hol szerezhető be? Az eseményt a gyártási rendelés számára (MSEG-AUFNR) hivatkozó, mozgásnemmel, jellemzően „261”-gyel rögzített anyagbizonylatok tartalmazzák az MKPF (fejléc) és az MSEG (tétel) táblákban. Rögzítés Rögzítse a rendeléshez kapcsolódó, „261” mozgásnemű anyagbizonylatok könyvelési dátumát (MKPF-BUDAT). Eseménytípus explicit | |||
| Rendelés adatainak módosítása | Ez az esemény a gyártási rendelés létrehozása után végrehajtott jelentős módosításokat rögzíti, például a tervezett mennyiség, a dátumok vagy a darabjegyzék változását. A rendszer ellenőrzési célból naplózza ezeket a módosításokat. | ||
| Miért fontos? A változások követése segít felismerni a folyamat instabilitását és a gyakori újratervezést. A sok módosítás pontatlan kezdeti tervezésre, ingadozó keresletre vagy hibás adatokra utalhat. Hol szerezhető be? Az AFKO (rendelésfejléc) és az AFPO (rendeléstétel) táblák fontos mezőinek módosításait a CDHDR (fejléc) és CDPOS (tétel) változásdokumentum-táblák naplózzák. Minden releváns módosítás tevékenységként nyerhető ki. Rögzítés Nyerje ki a CDHDR és CDPOS táblákból a gyártásirendelés-objektumosztályhoz tartozó változásnapló-bejegyzéseket. Eseménytípus explicit | |||
| Rendelés elszámolása lefutott | A gyártási rendelés pénzügyi elszámolását jelöli, amely során az összegyűjtött költségeket a megfelelő költségviselőkre terhelik. Kontrolling szempontból ez a rendelés életciklusának utolsó lépése. | ||
| Miért fontos? Bár pénzügyi tevékenységről van szó, az elszámolás késése költségjelentési vagy rendelésiadat-pontossági problémákra utalhat. Ez jelöli a gyártási folyamat tényleges pénzügyi lezárását. Hol szerezhető be? Az esemény abból állapítható meg, hogy a rendelés egyenlege nullára csökken, vagy hogy a „SETC” (I0076, Settlement rule created) rendszerstátuszt elszámolási futtatás naplóbejegyzései követik. A tényleges elszámolást olyan kontrollingtáblák rögzítik, mint a COSP és a COSS. Rögzítés Állapítsa meg az eseményt a rendeléshez kapcsolódó CO-elszámolási bizonylatokból vagy a „SETC” státusz aktiválásából. Eseménytípus inferred | |||
| Rendelés törlése beállítva | Ez az esemény azt jelzi, hogy a gyártási rendelést a befejezés előtt törölték. Ez jellemzően egy adott státusz vagy törlési jelző beállításával történik, ami megakadályozza a további feldolgozást. | ||
| Miért fontos? Ez kedvezőtlen eredmény, amelyet érdemes nyomon követni. A törölt rendelések elemzése feltárhatja a kereslet-előrejelzés, a tervezés pontossága vagy a törzsadat-kezelés problémáit. Hol szerezhető be? Az esemény a „DLFL” (I0076, Deletion flag) státusz vagy, ha be van állítva, egy külön „Canceled” státusz hozzárendeléséből állapítható meg. A változást időbélyeggel naplózza a JCDS tábla. Rögzítés Keresse meg azt az időbélyeget, amikor a rendeléshez beállítják a törlési jelzőt („DLFL”) vagy a törlési státuszt. Eseménytípus inferred | |||
| Részleges visszaigazolás rögzítve | A gyártási rendelés előrehaladását jelzi egy művelet részleges visszaigazolásával. Ez gyakori a hosszú ideig tartó rendeléseknél, amikor a végső befejezés előtt is követni kell a haladást. | ||
| Miért fontos? A részleges visszaigazolások elemzése segít nyomon követni a hosszú gyártási ciklusok előrehaladását, és feltárni a gyártási folyamaton belüli szűk keresztmetszeteket, nem csak a folyamat elején vagy végén jelentkező problémákat. Hol szerezhető be? Az AFRU táblában szereplő, végső visszaigazolásként meg nem jelölt visszaigazolási rekordokból rögzíthető. Minden bejegyzéshez könyvelési dátum (AFRU-BUDAT) és időpont tartozik. Rögzítés Nyerje ki az AFRU táblából az összes olyan visszaigazolási rekordot, amely nincs végső visszaigazolásként megjelölve. Eseménytípus explicit | |||
Útmutatók az adatok kinyeréséhez
Lépések
- Hozzon létre InfoSetet az SAP Queryben: Használja az
SQ02tranzakciókódot. Hozzon létre egy új InfoSetet, példáulZPP_EVENTLOGnéven. Válassza a „Táblakapcsolás bázistáblával” adatforrás-beállítást. Kezdő bázistáblaként használja azAUFKtáblát (rendelés törzsadatai). - Kapcsolja össze a szükséges táblákat: Adja hozzá az alábbi táblákat az InfoSet táblakapcsolataihoz. A rendszer javasolhat kapcsolatokat, de ellenőrizze, hogy helyesek-e:
AUFKésAFKO(PP-rendelések fejlécadatai):AUFK-AUFNR = AFKO-AUFNRAUFKésJEST(egyedi objektum státusza):AUFK-OBJNR = JEST-OBJNRJESTésJCDS(rendszer- és felhasználói státuszok módosítási dokumentumai):JEST-OBJNR = JCDS-OBJNRÉSJEST-STAT = JCDS-STAT. Megjegyzés: Ezzel a kapcsolattal olvasható be a státuszváltozások előzménye.AUFKésAFRU(rendelés-visszaigazolások):AUFK-AUFNR = AFRU-AUFNRAUFKésMSEG(anyagmozgások dokumentumszegmense):AUFK-AUFNR = MSEG-AUFNRMSEGésMKPF(anyagmozgási bizonylat fejléce):MSEG-MBLNR = MKPF-MBLNRÉSMSEG-MJAHR = MKPF-MJAHR
- Határozza meg a mezőcsoportokat: Húzza át a szükséges mezőket a forrástáblákból a mezőcsoportokba. Vegyen fel minden, a végső lekérdezéshez szükséges mezőt, például az
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATEésMKPF-BUDATmezőket. - Adjon hozzá egyéni mezőket és kódot: Az InfoSetben nyissa meg az „Extrák” lapot. Hozzon létre egyéni mezőket az
ActivityName,EventTime,SourceSystemésLastDataUpdateszámára, majd írjon ABAP-kódot a lekérdezési részben meghatározott logika megvalósításához. A kód végiglépked a státuszváltozásokon, a visszaigazolásokon és az anyagbizonylatokon, és minden üzleti eseményhez külön rekordot hoz létre. Ez a legösszetettebb lépés, mert az InfoSet kódrészeiben a táblázatos adatokat eseménynapló-formátummá kell alakítani. - Generálja és mentse az InfoSetet: Ha minden táblakapcsolatot, mezőt és egyéni kódot beállított, mentse és generálja az InfoSetet.
- Hozzon létre SAP Query-lekérdezést: Használja az
SQ01tranzakciókódot. Hozzon létre új lekérdezést, példáulZPP_EVENTSnéven, az előző lépésekben létrehozott InfoSet alapján. - Állítsa be a lekérdezés elrendezését: A lekérdezéstervezőben határozza meg a kiválasztóképernyő mezőit. Érdemes felvenni a gyártási rendelést (
AUFNR), az üzemet (WERKS), a rendelés típusát (AUART) és a rendelés létrehozási dátumának (AUFK-ERDAT) tartományát. - Határozza meg a kimeneti listát: Válassza ki a jelentésben megjelenítendő mezőket. A listának pontosan az eseménynaplóhoz szükséges oszlopokat kell tartalmaznia, az egyéni mezőkkel, például az
ActivityNameés azEventTimemezővel együtt. - Futtassa a lekérdezést: Adja meg a kívánt kiválasztási feltételeket, például az elmúlt 3–6 hónap gyártási rendeléseit.
- Exportálja az adatokat: Ha megjelennek a lekérdezés eredményei, exportálja a listát. Erre leggyakrabban és legmegbízhatóbban a „Táblázat” vagy a „Helyi fájl” formátum használható, tabulátorral tagolt vagy CSV-fájlként.
- Készítse elő az adatokat a ProcessMindhez: Nyissa meg az exportált fájlt egy táblázatkezelőben. Ellenőrizze, hogy az oszlopfejlécek megfelelnek-e a szükséges attribútumoknak (
ProductionOrder,ActivityName,EventTimestb.), és azEventTimedátum- és időformátuma egységes, valamint megfelel az elvárt szabványnak, példáulYYYY-MM-DD HH:MI:SS. Mentse a fájlt CSV-formátumban feltöltéshez.
Konfiguráció
- InfoSet táblakapcsolatok: A módszer alapja egy összetett InfoSet, amely összekapcsolja a fejléc-, státusz-, visszaigazolási és anyagmozgási táblákat. A fő kapcsolatok:
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRU, valamintAUFK->MSEG->MKPF. A hibás vagy nem hatékony táblakapcsolatok lassú működéshez vagy pontatlan adatokhoz vezethetnek. - Kiválasztási feltételek: A rendszer teljesítményének megőrzéséhez kezelhető adatkört kell meghatározni. A lekérdezés indítóképernyőjén érdemes megadni az alábbi mezőket:
- Gyártóüzem (
AUFK-WERKS) - Gyártási rendelés típusa (
AUFK-AUART) - Rendelés létrehozásának dátuma (
AUFK-ERDAT): Javasoljuk, hogy gördülő, 3–6 hónapos időszakból nyerje ki az adatokat, így kezelhető méretű marad az adathalmaz.
- Gyártóüzem (
- Rendszerstátuszok: Az olyan események azonosításához, mint a „Létrehozva”, „Felszabadítva”, „Műszakilag lezárva” és „Törölve”, meghatározott rendszerstátuszkódokra van szükség, például I0001, I0002, I0045 és I0047. Ezek általában szabványosak az SAP-rendszerekben, de ellenőrizze őket.
- Mozgásnemek: Az „Anyagkiadás” és az „Áruátvétel” eseményeket a hozzájuk tartozó mozgásnemek (
MSEG-BWART) azonosítják, jellemzően a „261” és a „101” értékek. Ellenőrizze, hogy ezek megfelelnek-e a szervezet beállításainak. - Jogosultságok: A lekérdezést futtató felhasználónak jogosultsággal kell rendelkeznie az
SQ01,SQ02ésSQ03tranzakciók használatához, valamint az alapul szolgáló táblák (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF) megjelenítéséhez.
Példa-lekérdezés 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'; Lépések
- Állítsa be az adatbázis-hozzáférést: Kérjen csak olvasási jogosultságú hozzáférési adatokat az SAP ECC mögötti adatbázishoz. Szüksége lesz a kiszolgáló címére, portjára, az adatbázis nevére, felhasználónévre és jelszóra. A hozzáférést egyeztesse az SAP Basis- és adatbázis-adminisztrációs csapattal.
- Azonosítsa az SAP-sémát: Keresse meg azt az adatbázissémát, amelyben az SAP-táblák találhatók. Ez gyakran
SAPSR3vagy más, a rendszerre jellemző név. A lekérdezésben cserélje le a[Your SAP Schema]helyőrzőt erre az értékre. - Készítse elő az SQL-lekérdezést: Másolja ki a
queryrészben megadott teljes SQL-lekérdezést. A lekérdezés az összes megadott tevékenységet egyetlen eseménynapló-formátumba nyeri ki. - Állítsa be a lekérdezés paramétereit: Futtatás előtt módosítsa a lekérdezésben szereplő helyőrzőket. Adja meg a
[Start Date]és az[End Date]értékét az adatkinyerés időszakának meghatározásához. Az adatmennyiség korlátozásához erősen ajánlott a gyártóüzem (WERKS) vagy a rendeléstípus (AUART) szerinti szűrés is. - Csatlakozzon az adatbázishoz, és futtassa a lekérdezést: Szabványos SQL-klienssel, például DBeaverrel, SAP HANA Studióval vagy egy egyéni Python- vagy Java-szkripttel csatlakozzon az SAP-adatbázishoz az 1. lépésben kapott hozzáférési adatokkal.
- Futtassa a lekérdezést: Illessze be a beállított SQL-lekérdezést a kliensbe, majd futtassa. Az időszaktól és a rendszer méretétől függően ez több percig is eltarthat.
- Ellenőrizze az eredményeket: A lekérdezés lefutása után nézze át az első néhány száz sort. Ellenőrizze, hogy a
ProductionOrder,ActivityNameésEventTimeoszlopok megfelelően vannak-e kitöltve, és az adatok értelmezhetők-e. - Exportálja CSV-fájlba: Exportálja a teljes eredményhalmazt az SQL-kliensből CSV-fájlba. A karakterkódolási problémák elkerüléséhez UTF-8 kódolást használjon.
- Készítse elő a CSV-fájlt feltöltéshez: Nyissa meg a CSV-fájlt, és ellenőrizze, hogy az oszlopfejlécek megfelelnek-e a szükséges attribútumoknak (
ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdatestb.). AzEventTimeoszlop formátuma legyen egységes, példáulYYYY-MM-DD HH:MI:SS. - Töltse fel a ProcessMindbe: Az előkészített CSV-fájl feltölthető a ProcessMind platformra elemzésre.
Konfiguráció
- Adatbázisséma: Adja meg azt az SAP-sémát, amelyben a gyártástervezési táblák találhatók. A lekérdezésben cserélje le a
[Your SAP Schema]helyőrzőt a megfelelő névre, példáulSAPSR3. - Dátumtartomány: A teljesítmény érdekében fontos, hogy meghatározott dátumtartományra szűrjön. A lekérdezés a rendelés létrehozásának dátuma (
AUFK.ERDAT) alapján szűr. Kezdje egy friss, 3–6 hónapos időszakkal, hogy az adatmennyiség kezelhető maradjon. - Gyártási rendelés típusa: Az elemzés célzottabbá tételéhez szűrjön a gyártási rendelés típusa (
AUFK.AUART) mezőre. Így megadhatja, hogy a normál gyártási rendelések, a folyamatmegrendelések vagy az utómunkarendelések közül melyek kerüljenek be az elemzésbe. - Gyártóüzem: Erősen ajánlott egy vagy több gyártóüzemre (
AFKO.WERKS) szűrni. Az összes üzem adatainak egyidejű kinyerése jelentős erőforrásokat igényelhet. - Adatbázis-hozzáférés: Ehhez a módszerhez olyan adatbázis-felhasználó szükséges, akinek legalább olvasási jogosultsága van a következő táblákhoz:
AUFK,AFKO,JCDS,JEST,AFRU,MSEG,MKPF. A közvetlen adatbázis-hozzáférés nem minden SAP-felhasználó számára alapértelmezett, és külön jogosultságot igényel.
Példa-lekérdezés 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'; Lépések
- Ellenőrizze, hogy rendelkezésre állnak-e az SAP ECC PP termelési rendeléseinek feldolgozására, visszajelentéseire, készletgazdálkodására és kontrollingjára vonatkozó adatok. Győződjön meg arról is, hogy az adatkinyerést végző felhasználó jogosult a szükséges alkalmazástáblák olvasására és az egyéni ABAP-riportok futtatására.
- Hozzon létre egy külön futtatható riportot az ABAP Workbenchben, például az SE38 vagy az SE80 tranzakcióval. Használjon kötelező dátumparamétereket tartalmazó kiválasztóképernyőt, például [Kezdő dátum] és [Záró dátum] mezőkkel, valamint opcionális szűrőket a következőkhöz: [Vállalatkód], [Termelőüzem], [Rendeléstípus], [Anyag] és [Termelési rendelés].
- Olvassa be a termelési rendelés fejléc- és törzsadatait az AUFK táblából, valamint az SAP ECC-rendszerében beállított termelésirendelés-táblákból. A JCDS és a megfelelő státuszbeállítások alapján azonosítsa a kifejezett státuszváltozásokat, például a CRTD, a felszabadított, a műszakilag befejezett és a törléshez kapcsolódó státuszokat. Ne tekintsen egy státuszkódot eseménynek, ha a státuszelőzményben nincs időbélyeggel ellátott változás.
- Olvassa be az anyag rendelkezésre állásának ellenőrzési eredményeit a rendszerében beállított termelésirendelés-adatokból. Ha az ellenőrzés eredménye nem marad meg olyan táblában, amely megbízhatóan összekapcsolható a rendeléssel és az időbélyeggel, használja az SAP-csapat által jóváhagyott beállított SAP-bővítést, alkalmazásnaplót vagy auditforrást. Ne következtessen az ellenőrzés megtörténtére pusztán a rendelés létrehozásából vagy felszabadításából.
- Olvassa be a rendelésmódosítások előzményeit a beállított termelésirendelés-módosításidokumentum-objektumokból és a hozzájuk tartozó módosításidokumentum-táblákból. Csak a jelentős, a folyamatgazda által jóváhagyott módosításokat nyerje ki, például a tervezett mennyiség, a dátumok, a darabjegyzék, az útvonal vagy más mezők változásait. Az EventTime értékeként a módosítási dokumentum időbélyegét használja.
- Olvassa be az anyagkiadási és -bevételezési könyveléseket a rendszerében beállított készletgazdálkodási anyagbizonylat-adatokból. Kapcsolja a könyveléseket a termelési rendeléshez az anyagbizonylat-adatokban elérhető rendelési hivatkozással. Az alkatrészek kiadását Goods Issue Posted, a késztermékek bevételezését pedig Goods Receipt Posted eseményként sorolja be. Ha rendelkezésre áll, használja a könyvelés dátumát és időpontját.
- Olvassa be a visszajelentési adatokat a rendszerében beállított termelési visszajelentési forrásból. Rendezze a visszajelentéseket termelési rendelés és időbélyeg szerint. Az első visszajelentéshez rendelje a First Confirmation Recorded eseményt, a megfelelő nem végleges visszajelentésekhez az Intermediate Confirmation Recorded eseményt, a kifejezetten véglegesnek jelölt vagy a beállított visszajelentési lezárási logika szerint véglegesnek minősülő visszajelentéshez pedig a Final Confirmation Recorded eseményt. Ne tekintse véglegesnek a tetszőleges lekérdezés utolsó sorát.
- Olvassa be a kontrolling elszámolási forrásából az elszámolás végrehajtására vonatkozó adatokat. Csak akkor hozzon létre Order Settlement Ran eseményt, ha egy elszámolás-végrehajtási rekord, elszámolási bizonylat vagy jóváhagyott elszámolási státuszelőzmény kifejezett, a termelési rendeléshez kapcsolt időbélyeget tartalmaz.
- Minden kinyert tevékenységhez hozzon létre egy belső eseménysort. Töltse ki a ProductionOrder, ActivityName, EventTime, SourceSystem, LastDataUpdate, ProductionPlant, ProductCode, PlannedQuantity, DeliveredQuantity, ActualStartDate és ActualEndDate mezőket. Alkalmazzon egységes időbélyeg-konverziót, és őrizze meg a forrásrendszer időzónáját. Ha létezik ilyen esemény, az ActualStartDate mezőbe az első visszajelentés időbélyegét, az ActualEndDate mezőbe pedig a végleges visszajelentés időbélyegét írja.
- Rendezze az eseménysorokat ProductionOrder és EventTime szerint, az azonos időbélyegű sorokhoz pedig alkalmazzon egyértelmű másodlagos rendezést. Csak a pontosan azonos forrásrekordokat távolítsa el, a jogosan ismétlődő eseményeket ne. Ellenőrizze, hogy a kimeneti séma mind a tizenkét kötelező tevékenységnevet tartalmazza, és minden létrehozott sorban szerepel az esetazonosító, a tevékenység neve és az esemény időbélyege.
- Írja az eredményt az alkalmazásszerver egyik fájljába, jóváhagyott ABAP-fájlkezelő felülettel és beállított logikai fájlútvonallal. A ProcessMind adatbetöltési beállításaival egyeztetett elválasztójelet és szövegkódolást használjon, vegyen fel fejlécsort, az elválasztójelet tartalmazó értékeket tegye idézőjelek közé, az időbélyegeket pedig egységesen, lehetőleg YYYY-MM-DDThh:mm:ss formátumban adja meg.
- Töltse le a fájlt a jóváhagyott SAP-fájlátviteli eljárással, ellenőrizze külön, majd töltse fel a ProcessMindba eseménynaplóként. A ProductionOrder legyen az esetazonosító, az ActivityName a tevékenység, az EventTime pedig az esemény időbélyege. Ellenőrizze, hogy a ProcessMind változtatás nélkül olvassa be a sorokat, és nem kell hiányzó tevékenységeket kikövetkeztetnie.
Konfiguráció
- Dátumtartomány: Az első elemzéshez használjon gördülő, három-hat hónapos adatkinyerési időszakot. Csak a teljesítmény és az adatmennyiség felmérése után bővítse az időszakot. Vegyen fel visszatekintési időszakot is, hogy a kiválasztott kezdődátum előtt létrehozott, de az elemzési időszakban aktív rendelések is bekerüljenek.
- Kiválasztási szűrők: Tegye lehetővé a [Vállalatkód], [Termelőüzem], [Rendeléstípus], [Anyag], [Termelési rendelés], a rendelés státusza, valamint a létrehozási és módosítási dátum szerinti szűrést. A pontos mezőket az SAP ECC beállításai szerint határozza meg, mert a termelési rendelések mezői kiadásonként és testreszabásonként eltérhetnek.
- Események köre: Mind a tizenkét kötelező tevékenységet külön eseménysorként nyerje ki: 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 és Order Cancellation Set.
- Időbélyegek kezelése: Elsőként a forrásesemény dátumát és időpontját használja. Ha csak dátum áll rendelkezésre, dokumentálja a kisebb pontosságot, és használjon egységesen beállított időpontot ahelyett, hogy nem létező pontosságot tüntetne fel. Minden időbélyeget alakítson át a ProcessMind által elvárt időzónára.
- Státuszok kezelése: A státuszhoz kapcsolódó tevékenységekhez használjon időbélyeggel ellátott státuszelőzményt. A belső státuszértékek és az üzleti tevékenységek közötti megfeleltetést a rendszerstátuszok beállításai és a folyamatgazda jóváhagyása alapján határozza meg.
- Rendelkezésre állás ellenőrzése: Állítsa be a rendelkezésre állás ellenőrzésének jóváhagyott adatforrását. Ne hozzon létre Material Availability Checked sort a rendelés létrehozása, felszabadítása, foglalások vagy sikeres anyagkiadás alapján, kivéve, ha az üzletileg jóváhagyott forrás kifejezetten rögzíti az ellenőrzést.
- Visszajelentések kezelése: Állítsa be az első, köztes és végleges visszajelentések megkülönböztetésére szolgáló szabályokat. Egy visszajelentés csak akkor végleges, ha a forrás kifejezetten annak jelöli, vagy a beállított SAP-visszajelentési logika lezártnak minősíti.
- Mennyiségek: Lehetőség szerint őrizze meg a forrás mértékegységét. Összesített mennyiségek esetén dokumentálja, hogy az összesítés rendelés, anyag, mozgás, visszajelentés vagy esemény szerint történik-e. A DeliveredQuantity a könyvelt késztermék-bevételezéseket jelentse, ne pusztán a visszajelentett hozamot, kivéve, ha a folyamatgazda jóváhagyja ezt az értelmezést.
- LastDataUpdate: Töltse ki az adatkinyerés futtatásának időbélyegével vagy a forrás frissítési időbélyegével, és egy futtatás minden sorában ugyanazt a dokumentált szabályt alkalmazza.
- Teljesítmény: Korlátozza a kiválasztási tartományt, csak a szükséges mezőket kérje le, csomagokban dolgozza fel az adatokat, szűrjön az adatbázisban, és kerülje a nagy ciklusokon belüli beágyazott adatbázis-lekérdezéseket. Indexet csak az SAP adatbázis-adminisztrációs eljárása szerint hozzon létre vagy használjon. Ha a memóriahasználat problémát jelent, fokozatosan írja ki az eredményt.
- Fájl kimenete: Az alkalmazásszerver könyvtárát, a logikai fájlnevet, az elválasztójelet, a kódolást, a tizedesjelölést, az időbélyeg formátumát és a fejléc kezelését a ProcessMind feltöltési előírásai szerint állítsa be. Ne jelenítsen meg hitelesítő adatokat a riportban vagy a kimeneti fájlban.
- Előfeltételek: Ellenőrizze, hogy az SAP ECC PP, a készletgazdálkodás, a visszajelentések, a termelésirendelés-státuszkezelés és a kontrolling elszámolási adatai szükség szerint aktívak-e. A futtatás előtt biztosítsa a szükséges jogosultságokat, az egyéni fejlesztések jóváhagyását, a transzport jóváhagyását, az alkalmazásszerver fájlelérését és a ProcessMind adatbetöltési hozzáférését.
- Rendszerspecifikus beállítások: A célszintű SAP ECC-rendszerben ellenőrizze a táblaneveket, mezőket, státuszkódokat, módosításidokumentum-objektumokat, visszajelentési forrásokat, rendelkezésreállás-ellenőrzési forrásokat és elszámolási forrásokat. Ha a megvalósítás nem biztosít szabványos, megbízható adatforrást, használja a [Rendszerének megfelelően állítsa be] értéket.
Példa-lekérdezés 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'. Kezdheti?
Készítse elő az adatokat ezzel a sablonnal, és kezdje el fejleszteni a gyártástervezési folyamatot. Tárja fel az összefüggéseket, és tegye hatékonyabbá a működést.
Optimalizálja most a gyártástervezést a hatékonyabb működésért
Tárja fel a hatékonysági problémákat, csökkentse 30%-kal a ciklusidőt, és teljesítse a célokat.
Nincs szükség bankkártyára. Kezdje el még ma a folyamatok fejlesztését.