Készletgazdálkodási adatsablon
Készletgazdálkodási adatsablon
- Javasolt attribútumok
- A folyamatelemzéshez követendő fő tevékenységek
- Útmutató az SAP S/4HANA rendszerből történő adatkinyeréshez
Készletgazdálkodási attribútumok
| Név | Leírás | ||
|---|---|---|---|
| Esemény időpontja EventTime | Az a pontos dátum és időpont, amikor a készlethez kapcsolódó tevékenységet rögzítették a rendszerben. | ||
| Leírás Az esemény időpontja az az időbélyeg, amely pontosan rögzíti, mikor történt egy tevékenység. Ez az adat szükséges az események időrendi sorba rendezéséhez és az egyes készlettételek folyamatmenetének rekonstruálásához. Minden időalapú process mining elemzés erre épül. Az esemény időpontjának pontossága elengedhetetlen a teljesítménymutatók, például a ciklusidők, az átfutási idők és az időtartamok kiszámításához. Segítségével különböző időszakokban elemezhető a folyamat teljesítménye, feltárható, mikor alakulnak ki szűk keresztmetszetek, és tényszerűen megérthetők a késedelmek, például az, hogy mennyi időt tölt egy készlettétel a minőségellenőrzésen a felszabadítás előtt. Miért fontos? Ez az időbélyeg időrendbe rendezi az eseményeket, és minden időtartam- és teljesítményszámítás alapja. Hol szerezhető be? Ez jellemzően az anyagbizonylat fejlécét tartalmazó MKPF táblából származó könyvelési dátum (MKPF-BUDAT) és rögzítési idő (MKPF-CPUTM) kombinációja. Példák 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| Készlettétel vagy -sarzs InventoryBatchLot | Egy adott termékmennyiség egyedi azonosítója, amely esetazonosítóként szolgál az életciklus nyomon követéséhez. | ||
| Leírás A készlettétel vagy -sarzs száma az elsődleges esetazonosító, amely egy adott, jól körülhatárolható termékmennyiséghez kapcsolódó összes tevékenységet összefogja. Így időrendben követhető a készlet útja a raktári átvételtől a különféle belső mozgásokon és állapotváltozásokon át az értékesítéshez, termeléshez vagy selejtezéshez történő kiadásig. A folyamatok elemzésében ez az attribútum alapvető. Segítségével minden készlettétel teljes folyamata nyomon követhető, pontosan mérhetők a ciklusidők, azonosíthatók a folyamat eltérései, és megérthető, hogyan kezelik az egyes tételeket. A tételszintű elemzés különösen fontos ott, ahol a nyomon követhetőség, a minőségellenőrzés és a lejárati idők kezelése meghatározó, például a gyógyszeriparban, az élelmiszer- és italgyártásban, valamint a vegyiparban. Miért fontos? Ez az alapvető azonosító kapcsolja egyetlen esethez az összes kapcsolódó készleteseményt, így lehetővé teszi a teljes folyamat elemzését. Hol szerezhető be? Ez jellemzően a sarzsszám, amely az SAP olyan tábláiban található meg, mint az MCHA (Batch Master) vagy az MCH1 (Batches), a CHARG mezőben. Példák B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Tevékenység ActivityName | A készletgazdálkodási folyamat egy adott pontján bekövetkezett üzleti esemény neve. | ||
| Leírás A Tevékenység attribútum a készlettétel életciklusának egyetlen lépését vagy eseményét írja le. Ilyen esemény például az áru átvétele, a készlet áthelyezése, a minőségellenőrzés vagy az anyag kiadása. Minden tevékenység egy adott időpontban a készlettétellel történt eseményt rögzít. A tevékenységek elemzése a process mining alapja. Lehetővé teszi a folyamatmenet megjelenítését, a gyakori és ritka útvonalak azonosítását, a késedelmet okozó szűk keresztmetszetek feltárását, valamint az ismételt munkavégzési körök elemzését. Az olyan tevékenységek sorrendjének és gyakoriságának megértésével, mint a „Készlet selejtezése” vagy a „Minőségellenőrzés”, a vállalatok azonosíthatják a folyamatfejlesztés és a hatékonyabb működés lehetőségeit. Miért fontos? Meghatározza a folyamat lépéseit, így megjeleníthető és elemezhető a készlet életciklusa. Hol szerezhető be? Származtatott attribútum, amelyet gyakran az SAP mozgásnemeiből (MSEG-BWART) vagy tranzakciókódjaiból (MKPF-TCODE2) képeznek felhasználóbarát megnevezésekké. Példák Áruátvétel könyveléseBetárolási áthelyezés könyveléseKiszállításhoz kapcsolódó árukiadás könyveléseKészlet selejtezése | |||
| Anyagszám MaterialNumber | A kezelt termék vagy anyag egyedi azonosítója. | ||
| Leírás Az anyagszám, más néven SKU (Stock Keeping Unit), egy adott termékhez rendelt egyedi kód. A készletgazdálkodás alapvető törzsadata, amelyet az áruk mennyiségének, értékének és mozgásának nyomon követésére használnak. A process mining során az anyagszám szerinti elemzés termékközpontú képet ad a készletgazdálkodási folyamatokról. Segít megválaszolni például, hogy mely termékeknél tart a legtovább a minőségellenőrzés, melyeket selejtezik le a leggyakrabban, vagy melyeknél a legnagyobb a belső áthelyezések száma. Ez a bontás elengedhetetlen a termékspecifikus problémák feltárásához és az egyes árutípusokhoz igazított készletstratégia kialakításához. Miért fontos? Lehetővé teszi az elemzés termék szerinti bontását, így feltárhatók az egyes termékekre jellemző mintázatok és problémák. Hol szerezhető be? Az anyagbizonylat tételsorait tartalmazó MSEG tábla MATNR mezőjében található. A törzsadatokat a MARA tábla tartalmazza. Példák RM-1001FG-2050-B100-400-A | |||
| Felhasználónév UserName | Az SAP-ban a tranzakciót végrehajtó személy felhasználói azonosítója. | ||
| Leírás Ez az attribútum annak a munkatársnak az SAP-felhasználói azonosítóját rögzíti, aki könyvelte a bizonylatot vagy végrehajtotta a tevékenységet. Nyomon követhetővé teszi, ki felel az egyes műveletekért a készletgazdálkodási folyamatban. A felhasználó szerinti elemzés segít megérteni a teljesítményt, a megfelelést és a képzési igényeket. A „Kézi készletkorrekciók okai” dashboard például ezzel az attribútummal mutatja meg, ki végzi a legtöbb korrekciót. Segíthet azonosítani, kinek lehet szüksége további képzésre, feltárni a jogosulatlan tevékenységeket, vagy elismerni a kiemelkedő teljesítményt nyújtó munkatársakat. Miért fontos? Segít egyértelművé tenni a felelősséget, és feltárni a felhasználókhoz köthető viselkedési mintákat, képzési igényeket vagy megfelelési problémákat. Hol szerezhető be? Az anyagbizonylat fejlécét tartalmazó MKPF tábla USNAM (User Name) mezőjében található. Példák JSMITHMBROWNWAREHOUSE_OPS | |||
| Mennyiség Quantity | A készletmozgásban érintett anyag mennyisége. | ||
| Leírás Ez az attribútum mutatja meg, hogy egy adott tevékenység során mennyi anyagot mozgattak, vételeztek be, adtak ki vagy korrigáltak. Az értéket az anyag alapmértékegységében rögzítik. A mennyiség elemzése segít megérteni a készletkezelési folyamatok volumenét és hatását. Olyan dashboardok készíthetők vele, amelyek például az anyagszám (SKU) szerinti árukiadási mennyiséget mutatják. A mennyiség olyan KPI-k kiszámításához is használható, mint a selejtezett vagy ártalmatlanított készlet aránya. Így a folyamatelemzés az események puszta számlálásán túl a mennyiségi adatokat is figyelembe veszi. Miért fontos? Megmutatja az egyes tevékenységekben érintett anyagmennyiséget, így elemezhető az áteresztőképesség, a selejt mennyisége és a korrekciók hatása. Hol szerezhető be? Az anyagbizonylat tételtáblájában, az MSEG táblában található, a MENGE (Quantity) mezőben. Példák 10012.55000-10 | |||
| Mozgásindok kódja MovementReasonCode | A készletmozgás okát jelölő kód. | ||
| Leírás A Reason for Movement kód megadja, miért történt az áruforgalmi mozgás. Gyakran nem tervezett mozgások, például készletkorrekciók, visszáruk vagy selejtezések indoklására használják. Ez az attribútum különösen hasznos a kiváltó okok elemzéséhez. A „Kézi készletkorrekciók okai” dashboardon az indokkód szerinti elemzés feltárhatja az eltérések okait, például a sérülést, a lopást vagy az adatrögzítési hibákat. Így a vállalatok nemcsak a tüneteket javíthatják ki, hanem a problémák kiváltó okait is kezelhetik. Miért fontos? Megmutatja, miért történt nem tervezett készletmozgás, így célzottan vizsgálhatók a kiváltó okok. Hol szerezhető be? Az anyagbizonylat tételtáblájában, az MSEG táblában található, a GRUND (Reason for Movement) mezőben. Példák 00010005102 | |||
| Mozgásnem MovementType | Háromjegyű SAP-kód, amely meghatározza az árukészlet-mozgás könyvelésének módját. | ||
| Leírás A mozgásnem a készletgazdálkodás egyik fontos SAP-vezérlőkódja, amely meghatározza az anyagmozgás jellemzőit. Megadja, mely számlák frissülnek, hogyan jelenik meg a tranzakció képernyője, és mely mennyiségi vagy értékmezők módosulnak. Például a 101-es az áruátvételt, a 311-es az áthelyezési könyvelést, az 551-es pedig a selejtezést jelöli. Ebből az attribútumból gyakran a felhasználóbarát „Tevékenység” megnevezés is származtatható. A mozgásnem szerinti elemzés részletes, technikai képet ad a készletmozgásokról. Elengedhetetlen a folyamattérkép pontosságának ellenőrzéséhez, valamint a szűk keresztmetszeteket vagy eltéréseket okozó tranzakciótípusok azonosításához. Miért fontos? Minden készleteseményt pontosan, technikai szempontból osztályoz, ami elengedhetetlen a tevékenységek meghatározásához és a részletes elemzéshez. Hol szerezhető be? Az anyagbizonylat tételsorait tartalmazó MSEG tábla BWART (Movement Type) mezőjében található. Példák 101311261551601 | |||
| Raktárhely StorageLocation | A Plant területén belüli konkrét hely, ahol a készletet fizikailag tárolják. | ||
| Leírás A Storage Location olyan szervezeti egység, amely lehetővé teszi a Plant készletének elkülönítését. Egy üzemben például külön raktárhely szolgálhat az alapanyagok, a késztermékek és a minőségellenőrzésre váró készletek tárolására. Ez az attribútum a Plantnél részletesebben mutatja meg a készlet helyét. Az elemzésben a különböző készletterületek közötti mozgások vizsgálatára használható, például a beérkeztetési területről a főraktárba történő átszállítás átfutási idejének mérésére. A raktárhelyenkénti helykihasználtság és árumozgási gyakoriság elemzése segít optimalizálni a raktár elrendezését és a belső logisztikát. Miért fontos? Részletes képet ad az üzemen belüli készlethelyekről, így elemezhetők a belső árumozgások és a tárolás hatékonysága. Hol szerezhető be? Az anyagbizonylat tételtáblájában, az MSEG táblában található, az LGORT (Storage Location) mezőben. Példák 0001RM01FG01QI01 | |||
| Telephely Plant | A készletet tároló létesítményt, például gyárat vagy elosztóközpontot jelölő szervezeti egység. | ||
| Leírás A Plant az SAP egyik központi szervezeti egysége. Jelölhet termelőüzemet, központi raktárt vagy vállalati központot. Minden készlet fizikailag vagy logikailag egy Plant területéhez tartozik. A Plant szerinti elemzés alapvető a folyamatok teljesítményének összehasonlításához a különböző telephelyeken. Segítségével olyan kérdésekre kaphat választ, mint például: „Melyik üzemben tart a legtovább a betárolás?” vagy „Magasabb a készleteltérések aránya az A üzemben, mint a B üzemben?” A földrajzi vagy szervezeti bontás segít feltárni a helyspecifikus problémákat és megosztani a bevált gyakorlatokat a szervezeten belül. Miért fontos? Lehetővé teszi a készletkezelési folyamatok és teljesítmény összehasonlítását a vállalat különböző telephelyei között. Hol szerezhető be? Az anyagbizonylat tételtáblájában, az MSEG táblában található, a WERKS (Plant) mezőben. Példák 10001710DE01US01 | |||
| Anyagbizonylat száma MaterialDocumentNumber | Az áruforgalmi mozgást rögzítő anyagbizonylat egyedi azonosítója. | ||
| Leírás Amikor az SAP-ban könyvelnek egy áruforgalmi mozgást, a rendszer bizonylatot hoz létre annak igazolására. Ez az attribútum a bizonylat egyedi azonosítója. Egy anyagbizonylat több tételt vagy tevékenységet is tartalmazhat. A process mining során az anyagbizonylat száma fontos tranzakcióazonosító. Segítségével csoportosíthatók az együtt könyvelt események. Az auditáláshoz is nélkülözhetetlen, és lehetővé teszi, hogy a folyamatelemzésből az SAP forrásrendszerbe lépve megvizsgáljon egy adott tranzakciót. Miért fontos? Tranzakcióazonosítóként szolgál az auditáláshoz, és lehetővé teszi az együtt végrehajtott tevékenységek csoportosítását. Hol szerezhető be? Az MKPF (fejléc) és az MSEG (tétel) táblában található, az MBLNR (Number of Material Document) mezőben. Példák 490000123450000056784900002345 | |||
| Forrásrendszer SourceSystem | Azonosítja azt a forrásrendszert, amelyből az adatokat kinyerték. | ||
| Leírás Ez az attribútum jelöli, melyik nyilvántartó rendszerből származnak a készletgazdálkodási adatok. Ebben az esetben az adott SAP S/4HANA-példányról van szó. Ez az információ különösen fontos, ha az adatok több ERP-rendszerből, raktárirányítási rendszerből vagy régi platformról származnak. Egyetlen rendszer elemzésekor ez az adat állandónak tűnhet, több forrás adatainak egyesítésekor azonban nélkülözhetetlen az egységes folyamatkép kialakításához. Segíti az adatirányítást, az adatkinyerési problémák elhárítását és az adatok eredetének egyértelmű nyomon követését. Miért fontos? Megadja az adatok eredetét, ami elengedhetetlen az adatirányításhoz és a több rendszert érintő elemzéshez. Hol szerezhető be? Ez jellemzően az adatátalakítás során beállított, rögzített érték, amely az adott SAP S/4HANA-példányt azonosítja. Példák S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
| Készlettípus StockType | A készlet állapotát jelzi, például szabad felhasználású, minőségellenőrzés alatt álló vagy zárolt. | ||
| Leírás A Stock Type a felhasználhatóság alapján sorolja kategóriákba a készletet. A fő típusok a szabad felhasználású készlet, a minőségellenőrzésre váró készlet és a felhasználásra nem elérhető, zárolt készlet. Az áruforgalmi mozgások gyakran a készlettípus megváltozásával járnak. A készlettípus-változások követése alapvető a készlet rendelkezésre állásának megértéséhez. Közvetlenül támogatja például a „Készlet minőségellenőrzésre könyvelve” és a „Készletállapot zároltra változott” tevékenységek elemzését. Az egyes készlettípusokban, különösen a minőségellenőrzés alatt töltött idő vizsgálata segít feltárni azokat a késéseket, amelyek befolyásolják az áruk értékesíthetőségét vagy termelési felhasználását. Miért fontos? Követi a készlet felhasználhatósági állapotát, így elemezhetők a minőségellenőrzés és a készlet rendelkezésre állása körüli késések. Hol szerezhető be? Az anyagbizonylat tételtáblájában, az MSEG táblában található, az INSMK (Stock Type) mezőben. Példák Szabad felhasználásúMinőségellenőrzés alattZárolt készlet | |||
| Lejárati dátum ExpirationDate | Az a dátum, amikor az anyagtétel lejár, és többé nem használható fel. | ||
| Leírás A minőségmegőrzési idő lejáratának dátuma (SLED) fontos törzsadat a romlandó vagy időérzékeny áruknál. Tételszinten kezelik, és meghatározza, hogy egy termék mikortól nem értékesíthető vagy használható fel. Ez az attribútum nélkülözhetetlen az „Elavult és lejárt készletek elemzése” dashboardhoz. A lejárati dátum figyelembevételével végzett elemzés feltárja a lejárat kockázatának kitett tételeket, így időben lehet intézkedni. Segítségével mérhető az olyan készletforgási szabályok hatékonysága, mint a FEFO (a leghamarabb lejáró készlet felhasználása elsőként), és számszerűsíthetők a lejárt készlet selejtezéséből eredő veszteségek. Miért fontos? Lehetővé teszi az elavult és lejárt készletek elemzését, így csökkenthető a pazarlás és a pénzügyi veszteség. Hol szerezhető be? Az MCH1 vagy MCHA tételtörzsadat-táblában található, a VFDAT (Shelf Life Expiration Date) mezőben. Példák 2024-12-312025-06-302024-09-01 | |||
| Mértékegység UnitOfMeasure | Az a mértékegység, amelyben az anyag mennyiségét mérik, például darab vagy kilogramm. | ||
| Leírás A Unit of Measure adja meg a „Quantity” attribútum mértékegységét. Gyakori érték például a darab (PC), a kilogramm (KG), a liter (L) vagy a doboz (BOX). Ez adja meg a mennyiségi adat értelmezéséhez szükséges hátteret. Bár gyakran csak leíró adatként használják, az attribútum fontos az adatminőség biztosításához és azokhoz az elemzésekhez, amelyekben a különböző mértékegységeket közös alapra kell átszámítani. A selejtezett készlet teljes értékének pontos kiszámításához például ismerni kell, és szükség esetén át kell váltani az eltérő mértékegységben megadott mennyiségeket. Miért fontos? Megadja a „Quantity” attribútum értelmezéséhez szükséges mértékegységet, így pontosan értelmezhetők az anyagmennyiségek. Hol szerezhető be? Az anyagbizonylat tételtáblájában, az MSEG táblában található, a MEINS (Base Unit of Measure) mezőben. Példák DarabKilogrammDarabMéter | |||
| Raktárhely StorageBin | A raktár legkisebb tárolási egysége, ahol az anyagokat fizikailag elhelyezik. | ||
| Leírás A Storage Bin a raktár egy konkrét koordinátáját jelöli, például egy polchelyet. Ilyen részletességre jellemzően akkor van szükség, ha az SAP Warehouse Management (WM) vagy Extended Warehouse Management (EWM) modult használják. A „Raktári helykihasználtság” dashboardhoz ez az attribútum nélkülözhetetlen. Segítségével elemezhető a raktárterület kihasználtsága, azonosíthatók a zsúfolt pontok, és feltárhatók a nem hatékony betárolási vagy komissiózási útvonalak. A raktárhelyek közötti mozgások elemzése segít optimalizálni a raktár elrendezését és csökkenteni a dolgozók közlekedési idejét. Miért fontos? A lehető legrészletesebb helyadatot adja, így elemezhető a raktárterület kihasználtsága és a működés hatékonysága. Hol szerezhető be? WM használata esetén az adat az olyan átadási rendeléstáblákban található, mint az LTAK/LTAP. Készletbizonylatok esetén az MSEG-LGPBE mezőben szerepelhet. További részletekért tekintse meg az SAP S/4HANA dokumentációját. Példák A-01-01-AB-05-10-CRCV-AREA-01 | |||
| Rendelésteljesítési átfutási idő OrderFulfillmentCycleTime | A komissiózás kezdetétől az áruk kiszállításra történő kiadásáig eltelt teljes idő. | ||
| Leírás Ez a számított mutató a „Komissiózás megkezdve” és a „Kiszállításhoz szükséges árukiadás könyvelve” tevékenység közötti teljes időt méri. Megmutatja, mennyi idő alatt készíti elő és adja fel a raktár a vevői rendelést a folyamat kezdetétől számítva. Ez az attribútum közvetlenül méri a „Rendelésteljesítési átfutási idő” KPI-t. Az időtartam elemzésével felmérhető, milyen gyorsan reagál a vállalat a vevői igényekre. Termék, raktár vagy vevő szerint is bontható, így feltárhatók a komissiózás, csomagolás és kiszállítás során jelentkező késések, amelyek közvetlenül hatnak a vevői elégedettségre és a logisztika hatékonyságára. Miért fontos? A raktári kiszállítási folyamat sebességét és hatékonyságát méri, amelyek fontos tényezők a vevői elégedettségben. Hol szerezhető be? Számított attribútum: az egyes tételeknél a „Komissiózás megkezdve” és a „Kiszállításhoz szükséges árukiadás könyvelve” események időpontja közötti különbségből adódik. Példák 7200144003600 | |||
| Utolsó adatfrissítés LastDataUpdate | Az az időbélyeg, amely jelzi, mikor frissítették utoljára a rekord adatait a forrásrendszerből. | ||
| Leírás Ez az attribútum rögzíti a forrásrendszerből történő legutóbbi adatkinyerés vagy frissítés dátumát és időpontját. Fontos metaadatot ad az elemzett információk frissességéről, így a felhasználók láthatják, hogy közel valós idejű adatokat vagy egy korábbi időszak pillanatfelvételét elemzik. Az elemzés során az adatok aktualitásának ismerete elengedhetetlen a releváns és pontos következtetésekhez. Ez a mező segít az elemzőknek és az üzleti felhasználóknak ellenőrizni, mennyire frissek az adatok, és gyakran a dashboardokon is megjelenik, hogy kontextust adjon az eredményekhez. Miért fontos? Tájékoztatja a felhasználókat az adatok frissességéről, így ellenőrizhető, hogy az elemzés naprakész információkon alapul-e. Hol szerezhető be? Ez az időbélyeg az adatkinyerési, átalakítási és betöltési (ETL) folyamat során jön létre és kerül az adatokhoz. Példák 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
Készletgazdálkodási tevékenységek
| Tevékenység | Leírás | ||
|---|---|---|---|
| Áruátvétel könyvelése | A készlettétel raktárba érkezését jelöli, jellemzően beszállítótól vagy a termelésből. Az SAP S/4HANA ezt az eseményt kifejezetten rögzíti: az áru átvételekor anyagbizonylat jön létre. | ||
| Miért fontos? Ez a készlet életciklusának elsődleges kezdő eseménye. Az ettől az eseménytől a többi tevékenységig, például a betárolásig eltelt idő elemzése fontos a fogadási terület hatékonyságának méréséhez. Hol szerezhető be? A MATDOC táblában szerepel. Azonosítása meghatározott mozgásnemek (BWART) alapján történik, például a 101-es a beszerzési rendelés áruátvételét, a 103-as pedig a zárolt készletre történő áruátvételt jelöli. Rögzítés A MATDOC anyagbizonylataiból nyerhető ki, a megfelelő áruátvételi mozgásnemek alapján. Eseménytípus explicit | |||
| Betárolási áthelyezés könyvelése | A készlettétel fizikai áthelyezését jelöli a fogadási vagy átmeneti területről a végleges tárolóhelyre vagy tárhelyre. Az SAP ezt áthelyezési könyvelésként, anyagbizonylaton rögzíti. | ||
| Miért fontos? Ezzel zárul a beérkező áru átvételi folyamata. A tevékenység elvégzéséhez szükséges idő, vagyis a betárolási idő, a raktári hatékonyság fontos KPI-ja. Hol szerezhető be? A MATDOC táblában áthelyezési könyvelésként szerepel, gyakran két tárolóhely között, például a 311-es mozgásnemmel. A konkrét mozgás a raktár felépítésétől függhet. Rögzítés A MATDOC azon áthelyezési könyvelési bizonylatai alapján azonosítható, amelyek a készletet egy átmeneti vagy áruátvételi tárolóhelyről a végleges tárolóhelyre helyezik át. Eseménytípus explicit | |||
| Készlet selejtezése | A készlettétel végleges kivezetését jelöli, amellyel az véglegesen kikerül a készletnyilvántartásból. Erre jellemzően lejárt, sérült vagy elavult készlet esetén kerül sor. | ||
| Miért fontos? Ez a pénzügyi veszteséget jelző záró esemény. A selejtezések elemzése segít feltárni a készlet elöregedésével, a kezelési eljárásokkal vagy a kereslet előrejelzésével kapcsolatos problémákat. Hol szerezhető be? A MATDOC táblában szerepel. A selejtezési mozgásnemek (BWART) azonosítják, például az 551-es szabad felhasználású, az 553-as minőségellenőrzési, az 555-ös pedig zárolt készletből történő selejtezés esetén. Rögzítés A MATDOC anyagbizonylataiból nyerhető ki a selejtezési mozgásnemek, például az 551-es alapján. Eseménytípus explicit | |||
| Készletkorrekció könyvelése | A leltározás vagy más eltérés miatt módosított készletmennyiséget rögzíti. Az esemény a könyv szerinti készletet a tényleges mennyiséghez igazítja. | ||
| Miért fontos? A készletpontosság fenntartásához elengedhetetlenek ezek a korrekciók. A gyakori korrekciók a készletkezelés, a biztonság vagy az adatrögzítés mögöttes problémáira utalhatnak. Hol szerezhető be? A MATDOC táblában szerepel. A leltározási mozgásnemek (BWART) azonosítják, például a 701-es készletnövekedés, a 702-es pedig készletcsökkenés esetén. Rögzítés A MATDOC anyagbizonylataiból nyerhető ki a leltározási korrekciók mozgásnemei, például a 701-es és a 702-es alapján. Eseménytípus explicit | |||
| Kiszállításhoz kapcsolódó árukiadás könyvelése | A kimenő folyamat utolsó lépését rögzíti, amikor a készlettétel a vevő vagy a fuvarozó birtokába kerül. Ez kifejezett tranzakció, amely csökkenti a készletet, és könyvelési tételt hoz létre. | ||
| Miért fontos? Ez a rendelésteljesítési folyamat egyik fontos lezáró eseménye. Elengedhetetlen a határidőre történő kiszállítás méréséhez és a teljes rendelésteljesítési idő kiszámításához. Hol szerezhető be? A MATDOC táblában szerepel. Az értékesítési rendelés kiszállításához kapcsolódó árukiadás mozgásneme (BWART) azonosítja, jellemzően a 601-es. Rögzítés A MATDOC anyagbizonylataiból nyerhető ki a 601-es mozgásnem alapján. Eseménytípus explicit | |||
| Minőségellenőrzési készlet felszabadítása | Azt jelzi, hogy a készlettétel megfelelt a minőségellenőrzésen, és felhasználható vagy betárolható. Az SAP ezt kifejezett áthelyezési könyvelésként rögzíti, amely a minőségellenőrzési készletből egy másik készlettípusba, például szabad felhasználású készletbe helyezi át a tételt. | ||
| Miért fontos? Ez a mérföldkő jelzi a minőségellenőrzési folyamat végét, amikor a készlet felhasználhatóvá válik. Az itt jelentkező késedelem komoly problémákat okozhat a termelésben vagy a rendelések teljesítésében. Hol szerezhető be? A MATDOC táblában áthelyezési könyvelésként szerepel. Jellemzően a 321-es mozgásnem (BWART) azonosítja, amely a készletet „Quality Inspection” állományból „Unrestricted-use” állományba helyezi át. Rögzítés A MATDOC anyagbizonylataiból nyerhető ki a 321-es mozgásnem alapján. Eseménytípus explicit | |||
| Termelési árukiadás könyvelése | A készlettétel termelési vagy folyamatmegrendeléshez történő felhasználását jelöli. Ez a tranzakció csökkenti a készletet, és az anyagköltséget a gyártási rendeléshez rendeli. | ||
| Miért fontos? Ez az egyik elsődleges felhasználási esemény, amely az alkatrészek készlet-életciklusának végét jelöli. Fontos a termeléshez szükséges anyagok rendelkezésre állásának és felhasználási mintáinak elemzéséhez. Hol szerezhető be? A MATDOC táblában szerepel. A rendeléshez történő árukiadás mozgásnemei (BWART) azonosítják, például a 261-es. Rögzítés A MATDOC anyagbizonylataiból nyerhető ki a 261-es mozgásnem alapján. Eseménytípus explicit | |||
| Belső készletáthelyezés könyvelése | A készlettétel egy telephelyen belüli tárolóhelyek vagy tárhelyek közötti mozgását rögzíti. Ez kifejezett tranzakció, amely anyagbizonylatot hoz létre. | ||
| Miért fontos? A belső áthelyezések nyomon követésével elemezhető a raktári működés hatékonysága, feltárhatók a szükségtelen mozgatások, és mérhető a készlet egyik tárolóhelyről a másikra történő utánpótlásának átfutási ideje. Hol szerezhető be? A MATDOC táblában szerepel. A tárolóhelyek közötti áthelyezést jellemzően a 311-es mozgásnem (BWART) azonosítja. Rögzítés A MATDOC anyagbizonylataiból nyerhető ki a belső készletmozgások mozgásnemei, például a 311-es alapján. Eseménytípus explicit | |||
| Készlet felszabadítása | A készlettétel állapotának megváltozását jelöli: a tétel kikerül a zárolás vagy a minőségellenőrzési zárolás alól, és felhasználhatóvá válik. Az SAP ezt kifejezett áthelyezési könyvelésként rögzíti. | ||
| Miért fontos? Ez a tevékenység jelzi a készlet zárolásának feloldását. A zárolt állapotban töltött idő elemzésével javíthatók a probléma megoldására szolgáló folyamatok. Hol szerezhető be? A MATDOC táblában áthelyezési könyvelésként szerepel. A 344-es mozgásnem (BWART) a „Blocked” készletet „Unrestricted-use” készletbe helyezi át. Rögzítés A MATDOC azon anyagbizonylatai alapján azonosítható, amelyeknél a mozgásnem 344. Eseménytípus explicit | |||
| Készlet minőségellenőrzésre könyvelése | A beérkezett készlettétel minőségellenőrzési zárolt állományba helyezését jelöli. A tétel az ellenőrzés lezárásáig nem használható fel. Az SAP ezt kifejezett tranzakcióként rögzíti, amely megváltoztatja a tétel készlettípusát. | ||
| Miért fontos? Ez a tevékenység indítja el a minőségellenőrzést. A tevékenység és a minőségellenőrzési készlet felszabadítása között eltelt idő fontos mutató a minőségellenőrzésből eredő késedelmek megértéséhez. Hol szerezhető be? A MATDOC táblában szerepel. Ez lehet például 101-es áruátvételi mozgásnem, ahol a készlettípus (INSMK) értéke „Q” (minőségellenőrzés), vagy 322-es áthelyezési könyvelés. Rögzítés A MATDOC azon anyagbizonylatai alapján azonosítható, amelyek a készletet „Quality Inspection” készlettípusba sorolják. Eseménytípus explicit | |||
| Készlet zárolása | A készlettétel állapotának megváltozását jelöli, amely miatt a készlet nem adható ki. Ennek oka lehet például sérülés, zárolási kérelem vagy más körülmény. Az SAP ezt kifejezett áthelyezési könyvelésként rögzíti. | ||
| Miért fontos? Rávilágít a készlet elérhetőségét megszakító eseményekre. A gyakori zárolás kezelési, tárolási vagy beszállítói minőségi problémákra utalhat. Hol szerezhető be? A MATDOC táblában áthelyezési könyvelésként szerepel. A 344-es mozgásnem (BWART) jellemzően a „Blocked” készletet „Unrestricted” készletbe helyezi át, a 343-as pedig az „Unrestricted” készletet „Blocked” készletbe. Ez a tevékenység a 343-as mozgásnemre vonatkozik. Rögzítés A MATDOC azon anyagbizonylatai alapján azonosítható, amelyeknél a mozgásnem 343. Eseménytípus explicit | |||
| Készlettétel állapotának módosítása | A készlettétel törzsadatában bekövetkező változást jelöli, például amikor az állapot „Unrestricted” értékről „Restricted” értékre változik. Ez nem anyagmozgás, hanem naplózott törzsadat-módosítás. | ||
| Miért fontos? A készlettétel állapotának változása közvetlenül befolyásolja, hogy a tétel felhasználható-e értékesítésre vagy termelésre. Ezeknek a változásoknak az elemzése fizikai mozgatással nem járó, például lejáró készlettel vagy minőségellenőrzéssel kapcsolatos problémákat tárhat fel. Hol szerezhető be? A készlettétel törzstábláinak (MCH1, MCHA) módosítási naplóiból következtethető ki. A CDHDR és CDPOS táblák rögzítik a készlettétel állapotmezőjének (MCH1-ZUSTD) változásait. Rögzítés A készlettétel törzsrekordjának állapotmezőjére (MCH1-ZUSTD) vonatkozó CDHDR/CDPOS módosítási bizonylatokból származtatható. Eseménytípus inferred | |||
| Komissiózás indítása | A rendelésteljesítési folyamat kezdetét jelöli, amikor létrejön a raktári feladat egy készlettétel tárhelyről történő komissiózására. Ezt gyakran az áthelyezési rendelés vagy a raktári feladat létrehozásakor rögzítik. | ||
| Miért fontos? Ez a tevékenység indítja el a komissiózást. Az esemény és a komissiózás befejezése között eltelt idő elemzésével mérhető a raktári dolgozók hatékonysága és feltárhatók a késedelmek. Hol szerezhető be? Ez az adat jellemzően nem szerepel a MATDOC táblában. Raktárirányítási (WM/EWM) rendszerekben az áthelyezési rendelés (LTAK tábla) vagy a raktári feladat létrehozási időbélyegéből következtethető ki. Rögzítés Az anyagtételhez kapcsolódó áthelyezési rendelés (WM) vagy raktári feladat (EWM) létrehozási rekordjából következtethető ki. Eseménytípus inferred | |||
| Vevői visszáru átvétele | A korábban kiadott készlettétel vevőtől a raktárba történő visszaérkezését rögzíti. Ez kifejezett tranzakció, amely növeli a készletet. | ||
| Miért fontos? A visszáruk nyomon követése elengedhetetlen a termékminőségi problémák és a vevői elégedetlenség megértéséhez. A visszáruk kezelésének és további sorsuk meghatározásának folyamata szintén okozhat hatékonysági problémákat. Hol szerezhető be? A MATDOC táblában szerepel. Az értékesítési visszáruk mozgásnemei (BWART) azonosítják, például a 651-es szabad felhasználású készletbe, a 653-as pedig minőségellenőrzési készletbe történő visszáru esetén. Rögzítés A MATDOC anyagbizonylataiból nyerhető ki az értékesítési visszáruk mozgásnemei, például a 651-es és a 653-as alapján. Eseménytípus explicit | |||
Adatkinyerési útmutatók
Lépések
- Rendszerhozzáférés beállítása: Gondoskodjon róla, hogy rendelkezésére álljon egy olyan felhasználó, akinek van jogosultsága az SAP S/4HANA rendszer Core Data Services (CDS) nézeteinek lekérdezésére. Ehhez általában a rendszergazdának kell hozzáférést biztosítania.
- SQL-kliens kiválasztása: Válasszon olyan SQL-klienst, amely csatlakozni tud az SAP HANA adatbázishoz. Ilyen például az SAP HANA Studio, az SAP HANA Database Explorer vagy egy külső eszköz, például a DBeaver.
- Adatbázis-kapcsolat beállítása: Hozzon létre új adatbázis-kapcsolatot az SQL-kliensben. Szüksége lesz a HANA-adatbázis gazdagépnevére, portszámára (általában 3<instance_number>15), valamint az adatbázis-felhasználó hitelesítő adataira.
- SQL-lekérdezés előkészítése: Másolja a dokumentum „query” szakaszában található teljes SQL-lekérdezést az SQL-kliens szerkesztőjébe.
- Lekérdezési paraméterek megadása: Keresse meg a lekérdezésben a helyőrző értékeket. Cserélje le az
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'részt a kívánt dátumtartományra, például erre:BETWEEN '20230101' AND '20230630'. A vállalatra vagy üzemre vonatkozó szűrőket is igazítsa a szervezeti felépítéshez, például aMaterialDocumentItem.Plant IN ('Plant1', 'Plant2')feltételt. - Lekérdezés futtatása: Futtassa a módosított SQL-lekérdezést az S/4HANA adatbázison. A futási idő a dátumtartománytól és a rendszerben tárolt készletadatok mennyiségétől függ.
- Adatok ellenőrzése: A lekérdezés befejezése után ellenőrizze az eredményeket az SQL-kliensben. Győződjön meg arról, hogy az adatok helyesek és teljesek, a különböző tevékenységek megjelennek, és a fontos attribútumok ki vannak töltve.
- Eseménynapló exportálása: Exportálja az SQL-kliens teljes eredményhalmazát CSV-fájlba. A karakterkódolási problémák elkerüléséhez UTF-8 kódolást állítson be.
- Feltöltés előkészítése: A CSV-oszlopok neve pontosan egyezzen meg a lekérdezésben megadott aliasokkal, például
InventoryBatchLot,ActivityName,EventTimeés így tovább. A fájl ezután feltölthető egy process mining eszközbe.
Konfiguráció
- Jogosultságok: A lekérdezést futtató felhasználónak
SELECTjogosultságra van szüksége a következő CDS nézetekhez:I_MaterialDocumentItem,I_BatchChangeDocumentésI_WarehouseTask. A nézeteket tartalmazó adatbázissémához is hozzáférés szükséges. - Dátumtartomány szűrése: Feltétlenül szűrje a
PostingDate,ChangeDocumentCreationDatevagyWarehouseTaskCreationDatemezőt dátumtartományra. Elemzéshez általában 3–12 hónap megfelelő. Több év adatainak lekérdezése jelentősen ronthatja a teljesítményt. - Szervezeti szűrők: A jobb teljesítmény és a célzott elemzés érdekében adjon meg
WHEREfeltételeket aPlantvagyCompanyCodemezőre. Ezzel csökkentheti az adatmennyiséget, és az üzlet szempontjából releváns területekre összpontosíthat. - Adatmennyiség: A készletkezelő rendszerek nagy mennyiségű adatot állítanak elő. Tág dátumtartomány esetén akár több millió sor is keletkezhet, ami az adatkinyerés során a forrásrendszer, valamint a klienseszköz teljesítményét is befolyásolhatja.
- Extended Warehouse Management (EWM): A „Komissiózás megkezdve” tevékenység az
I_WarehouseTaskCDS nézetből származik, amely csak SAP Extended Warehouse Management használata esetén tartalmaz adatokat. Ha a szervezet a régebbi Warehouse Management (WM) modult vagy csak Inventory Management (IM) modult használ, ez a tevékenység nem kerül be az adatkinyerésbe.
Példa-lekérdezés sql
SELECT
mat_doc.Batch AS "InventoryBatchLot",
CASE
WHEN mat_doc.MovementType = '101' AND mat_doc.InventoryStockType = '2' THEN 'Stock Posted to Quality Inspection'
WHEN mat_doc.MovementType = '101' THEN 'Goods Receipt Posted'
WHEN mat_doc.MovementType = '321' THEN 'Quality Inspection Stock Released'
WHEN mat_doc.MovementType = '311' THEN 'Internal Stock Transfer Posted'
WHEN mat_doc.MovementType = '344' THEN 'Stock Status Changed to Blocked'
WHEN mat_doc.MovementType IN ('343', '322') THEN 'Stock Status Changed to Unrestricted'
WHEN mat_doc.MovementType IN ('701', '702') THEN 'Inventory Adjustment Posted'
WHEN mat_doc.MovementType = '601' THEN 'Goods Issue for Delivery Posted'
WHEN mat_doc.MovementType = '261' THEN 'Goods Issue for Production Posted'
WHEN mat_doc.MovementType IN ('651', '653') THEN 'Sales Return Received'
WHEN mat_doc.MovementType = '551' THEN 'Stock Scrapped'
WHEN mat_doc.MovementType = '313' THEN 'Put-Away Transfer Posted' -- Example for two-step transfers
ELSE 'Unknown Material Movement'
END AS "ActivityName",
TO_TIMESTAMP(mat_doc.PostingDate || LPAD(mat_doc.CreationTime, 6, '0'), 'YYYYMMDDHH24MISS') AS "EventTime",
mat_doc.Material AS "MaterialNumber",
mat_doc.CreatedByUser AS "UserName",
mat_doc.MovementType AS "MovementType",
mat_doc.Plant AS "Plant",
mat_doc.StorageLocation AS "StorageLocation",
mat_doc.QuantityInEntryUnit AS "Quantity",
mat_doc.ReasonForMovement AS "MovementReasonCode"
FROM
I_MaterialDocumentItem AS mat_doc
WHERE
mat_doc.Batch IS NOT NULL AND mat_doc.Batch <> ''
AND mat_doc.PostingDate BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
-- AND mat_doc.Plant IN ('Plant1', 'Plant2') -- Placeholder: Add filters for relevant plants
UNION ALL
SELECT
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 3) AS "InventoryBatchLot",
'Batch Status Changed' AS "ActivityName",
change_doc.ChangeDocumentCreationDateTime AS "EventTime",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 1) AS "MaterialNumber",
change_doc.ChangedByUser AS "UserName",
NULL AS "MovementType",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 2) AS "Plant",
NULL AS "StorageLocation",
NULL AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_BatchChangeDocument AS change_doc
WHERE
change_doc.ChangeDocumentTable = 'MCHA' AND change_doc.ChangeDocumentTableFieldName = 'ZUSTD'
AND TO_VARCHAR(change_doc.ChangeDocumentCreationDate) BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
UNION ALL
SELECT
wh_task.Batch AS "InventoryBatchLot",
'Picking Initiated' AS "ActivityName",
wh_task.WarehouseTaskCreationDateTime AS "EventTime",
wh_task.Product AS "MaterialNumber",
wh_task.CreatedByUser AS "UserName",
NULL AS "MovementType",
wh_task.Plant AS "Plant",
wh_task.SourceStorageLocation AS "StorageLocation",
wh_task.TargetQuantity AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_WarehouseTask AS wh_task
WHERE
wh_task.Batch IS NOT NULL AND wh_task.Batch <> ''
AND wh_task.WarehouseProcessType IN ('P210', 'P220') -- Placeholder: Adjust process types based on your picking configuration
AND TO_VARCHAR(wh_task.WarehouseTaskCreationDate) BETWEEN '20230101' AND '20231231'; -- Placeholder: Set your date range Lépések
- Ellenőrizze, hogy engedélyezett-e a közvetlen SAP HANA SQL-hozzáférés, és hogy az adatkinyerést végző felhasználó rendelkezik-e olvasási jogosultsággal a MATDOC táblához és a rendszer által igényelt tételtörzsadat-táblákhoz. Erősítse meg a fizikai séma tulajdonosát, és cserélje le a [Your SAP HANA schema] értéket a jóváhagyott sémanévre.
- Ellenőrizze, hogy a célként megadott SAP S/4HANA-verzióban mely MATDOC- és tételtábla-mezők érhetők el. Az alábbi lekérdezés gyakran elérhető MATDOC- és MCHA-mezőket használ, de a mezők elérhetősége és elnevezése verziónként, telepítési módonként és az aktivált funkciók szerint eltérhet. Futtatás előtt állítsa be a [Configure based on your system] jelölésű mezőket.
- Adja meg az adatkinyerés időszakát a [Start timestamp] és [End timestamp] helyőrzők ISO-időbélyegre cserélésével. Elsőként három-hat hónap adatait nyerje ki, majd az adatmennyiség és a teljesítmény ellenőrzése után bővítse az időszakot.
- Futtassa a lekérdezést egy jóváhagyott SQL-kliensben, az SAP HANA Database Explorerben vagy más engedélyezett adatbázis-eszközben. A megfelelő szűrőhelyőrzők cseréjével korlátozza az eredményeket a szükséges vállalatkódokra, üzemekre, bizonylattípusokra vagy mozgástípusokra.
- Ellenőrizze a mozgástípusok tevékenység-hozzárendelését a CTE-ben. A mozgástípusok jelentése a rendszer beállításaitól és az üzleti konfigurációtól függ. Cserélje le a példaként megadott mozgástípus-listákat a célrendszerben az áruátvételhez, minőségellenőrzéshez, felszabadításhoz, betároláshoz, belső áthelyezéshez, zárolt készlethez, szabad felhasználású készlethez, készletkorrekcióhoz, komissiózáshoz, kiszállítási árukiadáshoz, termelési kiadáshoz, vevői visszáruhoz és selejtezéshez beállított értékekre.
- Ellenőrizze, hogy minden kimeneti sor tartalmazza az InventoryBatchLot, ActivityName és EventTime mezőt. Győződjön meg arról, hogy a tételazonosító kellően stabil a ProcessMind esetazonosítójaként. Ha az üzleti igény szerint az anyagot, az üzemet vagy a raktárhelyet is figyelembe kell venni az azonos tételértékek szervezeti egységek közötti megkülönböztetéséhez, a tételérték önálló használata helyett alkalmazza a beállított összetett esetazonosítót.
- Ellenőrizze az események sorrendjét, a duplikált sorokat, a sztornóbizonylatokat, a törölt bizonylatokat és az időzóna kezelését. A MATDOC a bizonylatok könyvelését rögzíti, ezért a sztornó- és törlési rekordok külön eseményként jelenhetnek meg, ha nem zárja ki vagy rendeli hozzá őket kifejezetten.
- Exportálja a lekérdezés eredményét egyszerű, eseményenként egy sort tartalmazó fájlba. Az oszlopok legyenek: InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity és MovementReasonCode. Az időbélyegeket egységes ISO 8601 formátumban tárolja, az anyag-, tétel-, üzem- és raktárhelyértékek kezdő nulláit pedig őrizze meg.
- Töltse fel az eseménynaplót a ProcessMindba, majd rendelje hozzá az InventoryBatchLot mezőt az esetazonosítóhoz, az ActivityName mezőt a tevékenységhez, az EventTime mezőt pedig az esemény időbélyegéhez. Ne számítson arra, hogy a ProcessMind kikövetkezteti a tevékenységeket, összevonja a rekordokat vagy pótolja a hiányzó eseményeket.
Konfiguráció
- Adatkinyerési módszer: Közvetlen SQL-lekérdezés az SAP HANA készlet- és tételadataira. A lekérdezés a MATDOC táblából olvas, és az MCHA táblából származó tételtörzsadatokkal kapcsolja össze az eredményeket. Az MCH1 táblát vagy más tételtáblát csak azután vegyen fel, hogy ellenőrizte a releváns mezőket és a tételkezelés szintjét a célrendszerben.
- Dátumtartomány: Elsőként három-hat hónap adataival dolgozzon. Az EventTime értékét a MATDOC-ban elérhető anyagbizonylat-könyvelési dátum és idő alapján határozza meg. Növekményes betöltésnél használjon szabályozott átfedési időszakot a késve könyvelt adatok rögzítéséhez, majd távolítsa el a duplikátumokat a beállított bizonylat- és tételazonosítók alapján.
- Szükséges szűrők: A folyamat hatókörének megfelelően állítsa be a vállalatkódot, az üzemet, az anyagbizonylat típusát, a mozgástípust, a tétel meglétét és a könyvelési dátumot. A vállalatkód és a bizonylattípus mezőinek elérhetőségét a lekérdezésbe való felvétel előtt ellenőrizze a telepített verzióban.
- Tevékenységek hozzárendelése: A mozgástípusok jelentése a konfigurációtól függ. Használjon jóváhagyott hozzárendelési táblát, vagy cserélje le a lekérdezésben szereplő mozgástípus-listákat az üzlet által használt értékekre. A példaként megadott listákat ne tekintse az SAP minden rendszerére érvényes jelentésnek.
- Tételek köre: A lekérdezés kizárja a tételérték nélküli sorokat, mivel az esetazonosító az InventoryBatchLot. Ha másik forrásból kell meghatározni a tételazonosítót, az adatkinyerés előtt állítsa be kifejezetten ezt a forrást.
- Események részletessége: Minden megfelelő MATDOC-tétel egy eseménysorként jelenik meg. A lekérdezés nem következtet a komissiózásra, a minőségellenőrzési döntésekre, a tételállapot változásaira vagy más tevékenységekre későbbi rekordok alapján.
- Tételtörzsadatok módosításai: A tételállapot változásai önmagukban a MATDOC alapján nem állapíthatók meg megbízhatóan. A Batch Status Changed tevékenységhez állítson be változásbizonylat- vagy tételtörténeti adatforrást. A lekérdezés olyan helyőrző ágat tartalmaz, amelyet futtatás előtt ellenőrzött forráshoz kell kapcsolni.
- Komissiózás: A komissiózás megkezdésének adatai általában a raktári végrehajtásból, nem pedig MATDOC-könyvelésből származnak. Állítson be ellenőrzött raktári feladat- vagy átadási rendelésforrást, és futtatás előtt cserélje le a helyőrző ágat.
- Teljesítmény: Szűrjön könyvelési időbélyeg vagy dátum, üzem, vállalatkód és releváns mozgástípusok alapján. Csak a szükséges oszlopokat válassza ki, kerülje a teljes előzményállomány korlátozás nélküli lekérdezését, és jóváhagyott terhelési időszakban futtassa a lekérdezést. Nagy MATDOC-adatmennyiségnél javasolt a particionált vagy növekményes adatkinyerés.
- Jogosultságok és előfeltételek: Szerezze be a jóváhagyott adatbázis-kapcsolatot, a sémához való hozzáférést, az olvasási jogosultságot, az SAP S/4HANA készletadatainak eléréséhez szükséges engedélyeket, valamint a két nem MATDOC-alapú tevékenységhez használt raktári végrehajtási vagy változástörténeti forrásokhoz való hozzáférést. Ellenőrizze, hogy a közvetlen adatbázis-hozzáférés megfelel-e a szervezet SAP-üzemeltetési modelljének és támogatási szabályzatának.
- Időzónák: Ellenőrizze az adatbázis és az alkalmazás időzónáját. A ProcessMindba való feltöltés előtt egységesen alakítsa át az EventTime értékét.
- Adatvédelem: Tartsa be a felhasználói azonosítókra, az anyagadatokra, a vevőkhöz kapcsolódó adatokra és az adatbázis-hitelesítő adatokra vonatkozó szervezeti szabályokat. Ne helyezzen hitelesítő adatokat a lekérdezés szövegébe.
Példa-lekérdezés sql
WITH
params AS (
SELECT
TO_TIMESTAMP('[Start timestamp]') AS start_ts,
TO_TIMESTAMP('[End timestamp]') AS end_ts
FROM DUMMY
),
movement_map AS (
SELECT '101' AS movement_type, 'Goods Receipt Posted' AS activity_name FROM DUMMY
UNION ALL SELECT '105', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '107', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '109', 'Goods Receipt Posted' FROM DUMMY
UNION ALL SELECT '321', 'Stock Posted to Quality Inspection' FROM DUMMY
UNION ALL SELECT '322', 'Quality Inspection Stock Released' FROM DUMMY
UNION ALL SELECT '343', 'Stock Status Changed to Unrestricted' FROM DUMMY
UNION ALL SELECT '344', 'Stock Status Changed to Blocked' FROM DUMMY
UNION ALL SELECT '311', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '301', 'Internal Stock Transfer Posted' FROM DUMMY
UNION ALL SELECT '311', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '309', 'Put-Away Transfer Posted' FROM DUMMY
UNION ALL SELECT '701', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '702', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '703', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '704', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '705', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '706', 'Inventory Adjustment Posted' FROM DUMMY
UNION ALL SELECT '601', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '602', 'Goods Issue for Delivery Posted' FROM DUMMY
UNION ALL SELECT '261', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '262', 'Goods Issue for Production Posted' FROM DUMMY
UNION ALL SELECT '651', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '653', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '654', 'Sales Return Received' FROM DUMMY
UNION ALL SELECT '551', 'Stock Scrapped' FROM DUMMY
UNION ALL SELECT '552', 'Stock Scrapped' FROM DUMMY
),
matdoc_events AS (
SELECT
m.MATNR AS MaterialNumber,
m.CHARG AS InventoryBatchLot,
COALESCE(m.BUDAT_MKPF, m.BUDAT) AS EventTime,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(m.BWART AS NVARCHAR(3)) AS MovementType,
m.WERKS AS Plant,
m.LGORT AS StorageLocation,
m.MENGE AS Quantity,
m.GRUND AS MovementReasonCode,
mm.activity_name AS ActivityName,
m.MBLNR AS MaterialDocumentNumber,
m.MJAHR AS MaterialDocumentYear,
m.ZEILE AS MaterialDocumentItem
FROM [Your SAP HANA schema].MATDOC m
INNER JOIN movement_map mm
ON CAST(m.BWART AS NVARCHAR(3)) = mm.movement_type
CROSS JOIN params p
WHERE m.CHARG IS NOT NULL
AND TRIM(m.CHARG) <> ''
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) >= p.start_ts
AND COALESCE(m.BUDAT_MKPF, m.BUDAT) < p.end_ts
AND m.WERKS IN ([Configure based on your system])
),
batch_enriched_events AS (
SELECT
e.InventoryBatchLot,
e.ActivityName,
e.EventTime,
e.MaterialNumber,
e.UserName,
e.MovementType,
e.Plant,
e.StorageLocation,
e.Quantity,
e.MovementReasonCode,
e.MaterialDocumentNumber,
e.MaterialDocumentYear,
e.MaterialDocumentItem,
c.CUOBJ_BM AS BatchObjectNumber
FROM matdoc_events e
LEFT JOIN [Your SAP HANA schema].MCHA c
ON c.MATNR = e.MaterialNumber
AND c.CHARG = e.InventoryBatchLot
AND c.WERKS = e.Plant
),
verified_batch_status_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Batch Status Changed' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
verified_picking_events AS (
SELECT
CAST(NULL AS NVARCHAR(40)) AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CAST(NULL AS TIMESTAMP) AS EventTime,
CAST(NULL AS NVARCHAR(40)) AS MaterialNumber,
CAST(NULL AS NVARCHAR(80)) AS UserName,
CAST(NULL AS NVARCHAR(3)) AS MovementType,
CAST(NULL AS NVARCHAR(4)) AS Plant,
CAST(NULL AS NVARCHAR(4)) AS StorageLocation,
CAST(NULL AS DECIMAL(31,3)) AS Quantity,
CAST(NULL AS NVARCHAR(3)) AS MovementReasonCode,
CAST(NULL AS NVARCHAR(20)) AS MaterialDocumentNumber,
CAST(NULL AS NVARCHAR(4)) AS MaterialDocumentYear,
CAST(NULL AS NVARCHAR(6)) AS MaterialDocumentItem,
CAST(NULL AS NVARCHAR(40)) AS BatchObjectNumber
FROM DUMMY
WHERE 1 = 0
),
all_events AS (
SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM batch_enriched_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_batch_status_events
UNION ALL SELECT InventoryBatchLot, ActivityName, EventTime, MaterialNumber, UserName, MovementType, Plant, StorageLocation, Quantity, MovementReasonCode, MaterialDocumentNumber, MaterialDocumentYear, MaterialDocumentItem, BatchObjectNumber FROM verified_picking_events
)
SELECT
InventoryBatchLot,
ActivityName,
EventTime,
MaterialNumber,
UserName,
MovementType,
Plant,
StorageLocation,
Quantity,
MovementReasonCode
FROM all_events
WHERE InventoryBatchLot IS NOT NULL
AND EventTime IS NOT NULL
ORDER BY InventoryBatchLot, EventTime, MaterialDocumentYear, MaterialDocumentNumber, MaterialDocumentItem, ActivityName; Lépések
- Nyissa meg az ABAP-szerkesztőt: Jelentkezzen be az SAP S/4HANA-rendszerbe, majd nyissa meg az ABAP-szerkesztőt a
SE38tranzakciókóddal. - Hozzon létre új programot: A „Program” mezőben adja meg az új program nevét, például
Z_PM_INVENTORY_EXTRACT, majd kattintson a „Létrehozás” gombra. Adjon meg egy leíró címet, a „Típus” mezőben válassza a „Futtatható program” lehetőséget, majd mentse a programot egy csomagba. - Adja meg a program paramétereit: A programszerkesztőben állítsa be a kiválasztóképernyőt, amely az adatok kinyerésének felülete lesz. Itt adhatók meg például a dátumtartomány és az üzem adatai.
- Valósítsa meg az adatkinyerést: Másolja ki a „Lekérdezés” szakaszban található teljes ABAP-kódot, és illessze be az ABAP-szerkesztőbe. A kód a készletkezeléshez szükséges mind a 14 tevékenység adatait választja ki különböző SAP-táblákból.
- Ismerje meg a működés lényegét: A program az egyes készletkezelési tevékenységek adatait a forrástáblákból választja ki. Anyagmozgásokhoz például az
MKPFés azMSEG, törzsadat-módosításokhoz pedig aCDHDRés aCDPOStáblát használja. Az egyes lekérdezések eredményétUNION ALLutasítással egyetlen belső táblába fűzi össze, amely az eseménynaplót tartalmazza. - Állítsa be a fájlkimenetet: A kód utolsó része a belső táblában összegyűjtött adatok fájlba írását végzi. Az
OPEN DATASETutasítással hoz létre fájlt az SAP alkalmazáskiszolgálóján. Adjon meg egy érvényes kiszolgálóútvonalat, amelyre az SAP-rendszer felhasználójának írási jogosultsága van. - Futtassa a programot: Mentse és aktiválja az ABAP-programot a Ctrl+F3 billentyűkombinációval, majd az F8 billentyűvel futtassa. A kiválasztóképernyőn adja meg a kívánt dátumtartományt és az egyéb szűrőket, például az üzemet vagy a vállalatkódot.
- Futtassa háttérfeladatként: Nagy adatmennyiség esetén a munkamenet időtúllépésének elkerülése érdekében háttérfeladatként futtassa a programot. A futtatóképernyőn (F8) válassza a
Program -> Végrehajtás háttérbenmenüpontot. Ütemezze a feladatot csúcsidőn kívülre. - Keresse meg a kimeneti fájlt: A feladat befejezése után keresse meg a fájlt az SAP alkalmazáskiszolgálóján. Az
AL11tranzakcióval böngészheti a kiszolgáló könyvtárait. A fájl helyi számítógépre töltéséhez használja aCG3Ytranzakciót. - Készítse elő a fájlt feltöltésre: Nyissa meg a letöltött fájlt szövegszerkesztőben vagy táblázatkezelőben. Ellenőrizze, hogy a fájl CSV-formátumú, van fejlécsora, az oszlopokat vessző választja el, a szöveges értékeket pedig dupla idézőjel fogja közre. Feltöltés előtt győződjön meg arról, hogy az oszlopnevek megfelelnek az elvárásoknak.
Konfiguráció
- Könyvelési dátum tartománya: Ez a legfontosabb paraméter. A jó teljesítmény és a rendszer időtúllépésének elkerülése érdekében kezelhető, például 3–6 hónapos időszakokban nyerje ki az adatokat.
- Üzemszűrő: Erősen ajánlott egy vagy több konkrét üzemre (
WERKS) szűrni. Az összes üzem egyidejű feldolgozása rendkívül erőforrás-igényes lehet. - Vállalatkód-szűrő: Ha a szervezet ugyanazon a rendszeren belül több vállalatkóddal működik, további szűrőként megadhatja a vállalatkódot (
BUKRS), így tovább szűkítheti az adatok körét. - Fájlútvonal az alkalmazáskiszolgálón: Az ABAP-programhoz előre megadott, érvényes könyvtárútvonal szükséges az SAP alkalmazáskiszolgálóján. Ellenőrizze, hogy az SAP-rendszer felhasználója (
SY-UNAME) rendelkezik-e a könyvtárba íráshoz szükséges operációsrendszer-szintű jogosultságokkal. - Jogosultságok: Az adatkinyerést futtató felhasználónak jogosultsággal kell rendelkeznie a
SE38tranzakcióhoz (a program létrehozásához és futtatásához), megjelenítési hozzáféréssel aMKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKésLTAPtáblákhoz, valamint háttérfeladatok ütemezésére is jogosultnak kell lennie (SM36/SM37).
Példa-lekérdezés abap
REPORT Z_PM_INVENTORY_EXTRACT.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_budat FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: s_werks FOR mseg-werks.
PARAMETERS: p_fpath TYPE string DEFAULT '/usr/sap/trans/tmp/inventory_log.csv' OBLIGATORY.
" ====================================================================
" DATA STRUCTURES
" ====================================================================
TYPES: BEGIN OF ty_event_log,
InventoryBatchLot TYPE charg,
ActivityName TYPE string,
EventTime TYPE string,
MaterialNumber TYPE matnr,
UserName TYPE xubname,
MovementType TYPE bwart,
Plant TYPE werks_d,
StorageLocation TYPE lgort_d,
Quantity TYPE menge_d,
MovementReasonCode TYPE grund,
END OF ty_event_log.
DATA: lt_event_log TYPE TABLE OF ty_event_log.
" ====================================================================
" DATA SELECTION
" ====================================================================
START-OF-SELECTION.
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Receipt Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('101', '103', '105', '501', '521', '561')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~shkzg
WHEN 'H' THEN 'Stock Posted to Quality Inspection'
WHEN 'S' THEN 'Quality Inspection Stock Released'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '321' " For QI to Unrestricted
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Put-Away Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '311' AND mseg~shkzg = 'H' " Assume put-away is the credit side
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Internal Stock Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('301', '311', '313', '315')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~bwart
WHEN '343' THEN 'Stock Status Changed to Blocked'
WHEN '344' THEN 'Stock Status Changed to Unrestricted'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('343', '344')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Inventory Adjustment Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('701', '702', '711', '712')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Delivery Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '601'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Production Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '261'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Sales Return Received' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('651', '653')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Stock Scrapped' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '551'
UNION ALL
SELECT
ltap~charg AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CONCAT( ltak~bdatu, ltak~bzeit ) AS EventTime,
ltap~matnr AS MaterialNumber,
ltak~bname AS UserName,
ltak~bwart AS MovementType,
ltap~werks AS Plant,
ltap~lgort AS StorageLocation,
ltap~nista AS Quantity,
'' AS MovementReasonCode
FROM ltap
JOIN ltak ON ltak~tanum = ltap~tanum
WHERE ltak~bdatu IN s_budat
AND ltap~werks IN s_werks
AND ltap~charg IS NOT NULL AND ltap~charg <> ''
UNION ALL
SELECT
SUBSTRING( cdhdr~objectid, 5, 18 ) AS InventoryBatchLot, " Object ID for BATCH is MATNR+WERKS+CHARG
'Batch Status Changed' AS ActivityName,
CONCAT( cdhdr~udate, cdhdr~utime ) AS EventTime,
SUBSTRING( cdhdr~objectid, 1, 4 ) AS MaterialNumber,
cdhdr~username AS UserName,
'' AS MovementType,
'' AS Plant,
'' AS StorageLocation,
0 AS Quantity,
'' AS MovementReasonCode
FROM cdhdr
JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
AND cdpos~objectid = cdhdr~objectid
AND cdpos~changenr = cdhdr~changenr
WHERE cdhdr~udate IN s_budat
AND cdhdr~objectclas = 'BATCH'
AND cdpos~tabname = 'MCH1'
AND cdpos~fname = 'ZUSTD'
INTO TABLE @lt_event_log.
" ====================================================================
" WRITE OUTPUT FILE
" ====================================================================
DATA: lv_string TYPE string.
DATA: lo_conv TYPE REF TO cl_abap_conv_out_ce.
lo_conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'Error opening file.' TYPE 'E'.
RETURN.
ENDIF.
" Write Header
lv_string = 'InventoryBatchLot,ActivityName,EventTime,MaterialNumber,UserName,MovementType,Plant,StorageLocation,Quantity,MovementReasonCode'.
TRANSFER lv_string TO p_fpath.
" Write Data
LOOP AT lt_event_log ASSIGNING FIELD-SYMBOL(<fs_log>).
CONCATENATE
<fs_log>-InventoryBatchLot
<fs_log>-ActivityName
<fs_log>-EventTime
<fs_log>-MaterialNumber
<fs_log>-UserName
<fs_log>-MovementType
<fs_log>-Plant
<fs_log>-StorageLocation
<fs_log>-Quantity
<fs_log>-MovementReasonCode
INTO lv_string
SEPARATED BY ','.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
WRITE: 'Extraction complete. File written to:', p_fpath. Készen áll a kezdésre?
Használja ezt a sablont az adatok magabiztos előkészítéséhez, és tárja fel a készletgazdálkodás működésével kapcsolatos hasznos összefüggéseket. Kezdje el még ma a hatékonyság növelését és a költségek csökkentését.
Optimalizálja készletgazdálkodását az SAP S/4HANA rendszerben
Azonosítsa a hatékonysági problémákat, csökkentse 30%-kal az átfutási időt, és takarítson meg költségeket.
Nincs szükség bankkártyára • Beállítás néhány perc alatt