Badi - technológia az üzleti kiterjesztések végrehajtása
Folytatása a cikksorozat „Technikák standard SAP rendszer kiterjesztését.”
BADI - Technológia végrehajtása üzleti bővítmények / kiegészítések a szabványos tranzakciós kódot; ez a technika áll rendelkezésre az összes egység a rendszer, sőt, ez a technológia, amely felhasználja az objektum-orientált megközelítés végrehajtása a rendszer kiterjesztését, jött helyére Customerexits technológia. BADI technológia célja, hogy megoldja a fő probléma a hosszabbító pontot több felhasználó - elkülöníteni egyéni megvalósítások bővítmények egymást. Ha elemezzük a rendszer kódját és nézze meg a kihívásokat, hozzátéve tér BADI, akkor cserélje ki a hívások előtt vagy után a hívás Customerexits, azaz funkciói formájában hívja ügyfélszolgálatunkat-FUNCTION. Ezért a legtöbb esetben, akkor vagy Customerexits, vagy a megfelelő BADI. Mellesleg, ebben az esetben egy osztály E BADI egy listát a rendelkezésre álló végrehajtási módszereket, ugyanaz, mint a szám a funkciók listáját keretében kiterjesztése alkatrész Customerexits-a.
Ma két lehetőség van a végrehajtására BADI technológia: az úgynevezett régi és az új BADI bővítése. A különbség a kettő között van, a végrehajtás módját, a kiterjesztés osztály. A régebbi megvalósítások BADI, akkor használja a felületet berendezések, azaz a A felhasználók felkérik, hogy valóban észre alosztály módszert és így sorakoznak a lánc független implementáció. Ez a technika lehetővé tette a terjedését a különböző megvalósítások a bővülés azonban egy probléma egyik öröklött megvalósítások Elromolhat minden egyéni bővítményeket. Csak nem oldja meg a problémát a tárolás globális változók. Ezért egy idő után, a cég egy új típusú BADI; Most, amikor írsz végrehajtása az osztály, az örökös az előre definiált osztályt, amely megvalósítja a kiterjesztést. Pontban hívást, a rendszer ellenőrzi az összes aktív és létrehoz esetekben - utódai a bázis osztály, és kéri a megfelelő bővítő módszer az osztályok összes utódai. A listát a módszerek, amelyek a hívott és hívó pont előzetes definiálva a szülő osztályban. Mechanizmus végrehajtásának új BADI a rendszer nyelvét, két új szolgáltatási parancsok a GET BADI és a CALL BADI vezettek be.
Megjegyzés: nyilatkozatok szerint az SAP fejlesztők, BADI új technológia gyorsabban működik használt mechanizmus előtt. Ugyanakkor az átlagos felhasználó nem valószínű, hogy bármilyen - vagy gyorsulás / lassulás a hívások új vagy régi végrehajtását.
Első pillantásra, különösen a felhasználó nem módosíthatja a végrehajtás a régi és az új BADI. Azonban a tény, jelentős különbségek. Új korszerű technikák döntött tárolására globális változók keretében egy osztály probléma, elég nehéz volt elvégezni, mechanizmusainak alkalmazásával örökséget. implementáló osztályokat teljesen függetlenné vált, és ennek megfelelően a fejlesztők külön tárgyakat lehet önállóan feldolgozzák. Ez egy új BADI technológia teljesen elszigetelten minden fokon megértés hiánya ezeket a különbségeket, vezet a visszaélés új BADI. Például az átmenet során a régi és az új típusú végrehajtó módszeregyütteseket öreg volt, de a módszer paramétereinek jelentősen megváltoztak, ami a teljes zavarodottság a fejlesztő, különösen a hindu. Egy egyszerű példa, a rendszer BADI: MB_MIGO_BADI - Felhasználó által definiált mezők a migo képernyőn. A régi végrehajtása CHECK_ITEM módszer, ha jól emlékszem (sajnos, a régi rendszer már nem rendelkezik), akkor át a pozícióját a dokumentum, amely akkor ellenőrizze a hibákat, és visszatér az eredmény a check in ET_BAPIRET2 opciót. Az új végrehajtása ezt a módszert csak továbbítják a változó I_LINE_ID - Egyedi azonosítója Document Line, azaz csak a pozíciók száma, hogy meg kell vizsgálni, de az adatok is átadásra kerül a pozíció van. Ez vezetett ahhoz, hogy egy halom hindu Forum az orosz nyelvű másolása és a hindu, végre egy olyan mechanizmust, tárolására a beviteli pozíció révén import MEMÓRIAKULCSRA az eljárás IF_EX_MB_MIGO_BADI
Ajánlás: Ha nem érti a működését a mechanizmus, ne folytassa a feltételezés, hogy az hajtsa végre e mechanizmust hibás volt, mivel 99% -a, akkor egyszerűen nem érti a döntést, és az 1% -os hagyok a határesetek.
Példa BADI javasolja, hogy fontolja meg a munkáján alapul az ügylet MB_MIGO_BADI. ideje már elkezdődött ez a rész annak említése. Mivel a rendszer új, akkor használja a mechanizmus végrehajtása az új BADI. By the way, ha megpróbálja használni a régi vagy az úgynevezett klasszikus BADI, ez még mindig egy bizonyos szakaszában a rendszer megmondja, hogy már van egy új végrehajtási erre BADI, így az adatok átalakítás lesz végre az új mechanizmus. Ez azt jelenti, hogy a rendszer nem létezhet egyidejűleg végrehajtásának támogatása a régi és az új BADI mechanizmusok azonos tárgy, mint MB_MIGO_BADI.
Készítsen kiterjesztési pontokat végezzük tranzakció SE19 - BAdI-Builder - végrehajtás 1. ábra. A tranzakció fut, vagy egy mód, a teremtés vagy a fejlett szerkesztési módban. Hogy őszinte legyek, nem nagyon gyakori változása az első tranzakció képernyőn. Ahhoz, hogy hozzon létre egy mellék kívánt pontot adja meg a nevét egy meglévő bővítmény pont a rendszerben, ebben az esetben MB_MIGO_BADI. Kiválasztása létre terjeszkedés módban.
Egy párbeszédablak képernyő a keresett okozta kiterjesztése pont, amely végrehajtja a terjeszkedés. Mivel a fő név MB_MIGO_BADI. a neve az új pont hagyja ZZ_MB_MIGO_BADI. név lehet bármilyen alkalmas alatt elnevezési a felhasználói objektumok, 2. ábra.
Ahhoz, hogy egy csoportba több mellék rámutat, hogy „szolgálni” egy üzleti folyamat, akkor létrehozhat egy csoport nevét, hogy fogják össze, hogy bővítéseket kezelésének egyszerűsítése minden implementáció. Ha ez csak egy helyi végrehajtása a terjeszkedés, nem lehet létrehozni a csoport nevét. Létrehozásának jóváhagyása után kéri, hogy nevét a végrehajtását bemenet, útmutatást és a választék a végrehajtási osztály definíció BADI, 3. ábra. ez mind a szervezett, mert a kiterjesztés pont is számos különböző osztályok, az aggregált alkotják a bővítés végrehajtásának pont. Ebben az esetben a kiterjesztés pont egybeesik a nevét az implementációs osztályt, a végrehajtási osztály csak egy pontot.
Kitöltése után minden területén erősítse meg a bejegyzést. A rendszer felajánlja nekünk a lehetőséget, hogy a végrehajtás (valójában egy származtatott osztály). Mivel van egy példa, a végrehajtás, és hozunk létre egy ilyen típusú bővítmények először, hogy a legjobb megoldás az lenne létrehozását végrehajtás alapján az osztály, egy példa a másolat, ha már tudod, hogyan kell építeni egy kiterjesztése, úgy dönt, hogy hozzon létre egy üres osztályt, mint amikor a másolás osztályú például létrehozott egy új osztály hajtja végre az összes class-parrenta módszerekkel (minta), bár lehet, hogy, és nem igényel a végrehajtása során alkalmazott módszerek, a 4. ábra.
Bízza a kiterjesztés pont, akkor sem továbbra is használni SE19 vagy ügylet futhat tovább a osztályt, amely megvalósítja a kiterjesztés, a tranzakció SE24 / SE80.
Mivel az osztály jött létre egy sablont, az objektumok száma az aktiválandó nagy lesz. Csak ki kell választani az összes elemet és végrehajtsa az aktiválási az összes tárgy 7. ábra mutatja.
Aktiválása után az adatokat a tranzakciós migo felhasználó könyvjelzők mezők ábra8.
A rendszer „látja”, hogy van egy megvalósítása terjeszkedés és „díszített” class örökös, így amikor elkezdjük a tranzakció, akkor létrehoz egy osztály, amely felelős a végrehajtást. A tanteremben hozzáférést eljárás INIT, amely az úgynevezett a kivitelező. Minden BADI-bővítés létre a különböző szabályokat a végrehajtási osztály emiatt az általános ajánlás az, hogy létre BADI, először, akkor jön létre másolásával a mintából, kivéve persze, hogy ez lehetséges. Az Init módszer a rendszer visszatér a neve a végrehajtás. Ebben az esetben a név a javaslat végrehajtása meghatározott állandó belül az osztályban, majd bele az állandó visszatérő paraméterek módszerével osztály indítása, 10. ábra.
Ezt követi a tényleges végrehajtása az osztály inicializálási eljárás, 11. ábra. Elvileg ez egy bemutató a helyes kódolási stílus, amikor a végrehajtási osztály nevét, amellyel a rendszer továbbra is folytatja az osztály azonosító határozza egy belső konstans egy osztályon belül.
Továbbá, ha minden egyes sorban hozzáadjuk a dokumentum anyag mozgásba Migo tranzakciós, a rendszer okoz LINE_MODIFY Módszer - hozzáadása / módosítása vonal (GOITEM), azaz Minden alkalommal, amikor hozzá vagy módosíthatja egy sor dokumentumot kap értesítést. Ennek módja, javasolt, hogy végre ez a módszer? Tehát valójában már létrehozott egy osztály, minden munkához szükséges mezőket a dokumentum elem, azt javasolják, hogy a belső privát osztályú asztalra. A szerkezet leíró táblázatot hoz létre az adatok szótárban, majd rendezzük el a belső változó az osztályban, 12. ábra.
Végrehajtásában a kódot, akkor egyszerűen csak olvasni a szükséges sort a dokumentum az asztal I_LINE_ID kulcs, amelynek tartalmaznia kell a belső felépítése, ez az egyedülálló sorszám a dokumentum terméket. Ha a string talál, akkor módosíthatja azt az asztalra, mert van új változások, ha a vonal nem, akkor ezt a sort a belső táblázatban. Így keretében egy osztályt, amely megvalósítja a kiterjesztés, akkor mindig van egy sort a táblázatban. Éppen ezért a módszer CHECK_ITEM - Ellenőrizze pont adatai Áruk mozgása rendszer elküldi Önnek csak az egyedi sorszám, amelyet be kell ellenőrizni, mivel a vonal is, meg kell tanulni a belső táblázat sorai a végrehajtásának osztályban. Önmagában ez a táblázat megőrzéséhez szükséges nemcsak a mezőket, hogy hozzáadta a saját képernyő, hanem a mezőket, hogy szükség lesz, hogy ellenőrizze a bevitt adatokat, 13. ábra. így nem kell végrehajtania a mozgások megőrzése a pozíciókat a dokumentum a memóriában
korlátozott hozzáférés
Ahhoz, hogy olvassa el a teljes cikket akkor be kell jelentkeznie a regisztrált tag.