ПредишенСледващото

Продължение на поредицата статия "разширения стандартните техники SAP системата."

БАЛИ - Технология изпълнение на бизнес разширения / допълнения към стандартния код за операция; тази техника е налична във всички звена на системата, в действителност, тази технология, която използва обектно-ориентиран подход към изпълнението на разширения на системата, дойде да замени Customerexits технология. БАДИ технология е предназначена за решаване на основния проблем за използване на разширения точки от няколко потребители - да се изолират персонализирани решения разширения един от друг. Ако анализираме кода на системата и да видим на предизвикателствата на добавяне пространство БАДИ, можете да замените че разговори са добавени преди или след Customerexits разговора, т.е. функции на форма CALL КЛИЕНТИТЕ-функция. Поради това, в повечето случаи, можете да използвате или Customerexits или съответните БАДИ. Между другото, в този случай, в един клас на това БАДИ за списък с налични методи за изпълнение, същите, както в броя на списъка на функциите в рамките на Customerexits-а на разширение на отделните компоненти.

Днес, има два варианта за изпълнение на БАДИ технология: така наречените стари и нови Разширяването БАДИ. Разликата между двете е в начина на изпълнение на класа на разширение. В по-стари приложения БАДИ, той използва интерфейс оборудване, т.е. Потребителите се приканват да всъщност се реализира метод подклас и така подредени верига от независими реализации. Тази техника позволява на разгънатата им различни приложения в своята експанзия, обаче, е проблем в един от наследени реализации може да се съборят всички потребителски разширения. Само не се реши проблема за съхранение на глобални променливи. Поради това, след известно време, компанията премина на нов тип БАДИ; Сега, когато пишете на изпълнението на този клас, като наследник на предварително определен клас, който реализира разширението. В точка повикване, системата проверява всички активни и създава случаи - наследници от базовия клас и призовава най-подходящия метод за разширяване на класовете на всички наследници. Списък от методи, които се наричат ​​и призвание точка предварително дефинирани в класа родител. Механизъм за прилагане на нов БАДИ на езика на системата, два нови команди за услуги на GET бяха въведени БАДИ и CALL Бади.

Забележка: Според изявленията на разработчиците SAP, БАДИ нова технология работи по-бързо механизъм, използван преди това. Въпреки това, на обикновения потребител е малко вероятно да забележите - или ускорение / забавяне на поканите нови или стари изпълнение.

На пръв поглед, особено за потребителя не се променя с изпълнението на двете стари и нови БАДИ. Въпреки това, в действителност, значителни разлики. Нови съвременни техники решиха съхраняване на глобални променливи в рамките на проблем клас, това е доста трудно да се извърши, като се използват механизмите на наследяване. класове за изпълнение напълно станаха независими и, съответно, разработчиците имат отделни предмети, които могат да се обработват самостоятелно. Това е нов БАДИ технология осигурява пълна изолация на всеки отделен случай; липсата на разбиране на тези различия, води до злоупотреба с нов БАДИ. Например, по време на прехода от старата към новата вида на прилагане на набор от методи, беше стар, но параметрите на метода са се променили значително, което води до пълна дезориентация на предприемача, особено индусите. Един прост пример, системата има БАДИ: MB_MIGO_BADI - дефинирани от потребителя полета в екрана Migo. В стария метод на изпълнение CHECK_ITEM, ако си спомням правилно (за съжаление, старата система вече нямам), можете да прехвърли позицията на документа, който можете да проверите за грешки и да се върне на резултата от проверката в ET_BAPIRET2 опция. Новият прилагането на този метод се предава само към променлив I_LINE_ID - уникален идентификационен номер на документа Line, т.е. само броя на позициите, които трябва да бъдат проверени, но самите данни се прехвърля в позицията си. Това доведе до факта, че на купчина на форума индуски на рускоезичното и копиран от индусите, внедри механизъм за съхраняване на позицията за въвеждане чрез ВНОС в паметта в метода IF_EX_MB_MIGO_BADI

Препоръка: Ако не разбирате работата на механизма, не се изхожда от предположението, че за прилагането на този механизъм е бил дефектен, тъй като 99% от вас просто не се разбира решението, а 1% Оставям на гранични случаи.

Пример с БАДИ, предложи да се разгледа, въз основа на работата със сделката MB_MIGO_BADI. време вече е започнала тази секция с внимание. Тъй като системата е нова, тя ще използва механизма на осъществяване на новата Бади. Между другото, ако се опитате да използвате стария или така наречените класически Бади, тя все още е на определен етап на системата ще ви кажа, че вече има нова реализация за тази БАДИ, така че превръщането на данните ще се извършва за новия механизъм. Това означава, че системата не може да съществува в същото време подкрепи прилагането на стари и нови механизми Бади за един и същ обект, като за MB_MIGO_BADI.

Създаването на разширение точки се извършва в сделка SE19 - Badi-Builder - изпълнение Фиг.1. Сделката работи или е в режим на създаване, или в разширен режим на редактиране. За да бъда честен, не много често срещан вариант на първия екран сделка. За да създадете точка разширение, което искате да въведете името на съществуващо разширение точки в системата, в този случай MB_MIGO_BADI. Изборът режим създаване експанзия.

Бади - технология изпълнение на бизнес разширения

Диалогов екран с запитването, породен от точката за разширение, което ще изпълни нашата експанзия. Като главен името MB_MIGO_BADI. Името на новата точка ще ви позволи ZZ_MB_MIGO_BADI. Името може да бъде всеки подходящ при спазване на принципа за именуване на потребителски обекти, фиг.2.

Към група многократно удължаване посочва, че "служи" на бизнес процес, можете да създадете име на група, които ще бъдат комбинирани, за да създадете такива, да опрости управлението на всички реализации. Ако това е просто една местна прилагане на разширяването, не можете да създадете име на групата. След потвърждаване на създаването подканени да дадете име на изпълнението на вход, ориентиране и избор на определение клас изпълнение БАДИ, Фигура 3. всичко това е организирана така, защото точката на разширение може да включва няколко различни класове, в съвкупност представляват прилагането на точката за удължаване. В този случай, точката за удължаване съвпада с името на класа на изпълнение, клас на изпълнение само за една точка.

След като попълните всички полета потвърдите записа. Системата ще ни предложи опцията за създаване на изпълнение (всъщност извлечен клас). Тъй като ние имаме един пример за изпълнение, а ние създаваме удължаване на този вид за първи път, най-доброто решение би било създаването на изпълнение на базата на класа, пример за копието, ако вече знаете как да се изгради разширение, можете да изберете да създадете празен клас, както при копиране клас-пример създава нов клас ще приложи всички методи клас-parrenta (образец), въпреки че може да бъде, и не изисква прилагането на всички методи, фигура 4.

Бади - технология изпълнение на бизнес разширения

Бади - технология изпълнение на бизнес разширения

Работа с точката за разширение, можете да продължите да използвате SE19 или сделка може да работи по-дълго с един клас, който реализира разширението, използвайки сделка SE24 / SE80.

От този клас е създаден от шаблон, броя на обектите да бъдат активирани, ще бъде страхотно. Просто трябва да изберете всички елементи и да извършват активирането на всички обекти фиг.7.

Бади - технология изпълнение на бизнес разширения

След активирането на данните в сделката Migo потребителят ще показалец полета Фиг.8.

Бади - технология изпълнение на бизнес разширения

Бади - технология изпълнение на бизнес разширения

Системата "вижда", че е налице реализиране на разширяване и "украсени" клас наследник, така че при стартиране на операция, тя създава един клас, който е отговорен за изпълнението. В класната стая влизате метод INIT, който се нарича в конструктора. За всеки БАЛИ-разширение може да създаде различни правила за класа на изпълнение поради тази причина, общата препоръка е да се създаде БАДИ, за първи път, ще се създаде чрез копиране от извадката, освен ако, разбира се, че е възможно. При метода на INIT на системата трябва да се върне името на вашето изпълнение. В този случай, името на изпълнението на предложената определи константа в рамките на вашия клас и след това да се включи тази константа в параметрите на връщане на метода на клас инициализация, Фигура 10.

Бади - технология изпълнение на бизнес разширения

Това е последвано от действителното изпълнение на метода на клас инициализация, Фиг.11. По принцип, това е демонстрация на правилния стил кодиране, когато името на класа изпълнение, с което системата ще продължи да преследва вашата идентификация клас се определя чрез вътрешна постоянна в рамките на един клас.

Бади - технология изпълнение на бизнес разширения

Освен това, когато всеки ред се добавя към материала на документ в движение Migo операция, системата ще доведе до LINE_MODIFY Метод - Добавяне / Промяна на линия (GOITEM), т.е. всеки път, когато добавяте или променяте ред на документа, който ще бъде изпратено уведомление. Като начин предлага да се приложи този метод? Така че в действителност сте създали клас, всичко необходимо, за да работят на полето от елемента на документа, се предлага да се запази вътрешната частна маса клас. Структурата, описващ една маса е създаден в речника на данните, а след това да организира вътрешния променлива в рамките на класа, Фиг.12.

Бади - технология изпълнение на бизнес разширения

При изпълнението на кода, можете просто да прочетете необходимата ред на документа от масата на ключ I_LINE_ID, които трябва да бъдат включени в вътрешна структура, като тази уникална линия номер на елементите на документа. Ако се установи, низа, след което можете да го промените в масата си, тъй като има нови промени, ако линията не, тогава трябва да добавите тази линия в своята таблица с. По този начин, в рамките на един клас, който реализира разширението, вие винаги ще имате един ред маса. Ето защо метод CHECK_ITEM - Проверете показател за данни на система Стоките Движение ви изпраща само уникален номер на ред, които трябва да бъдат проверени, тъй като самата линия, ще трябва да се учим от вътрешните редове от таблицата на своя клас изпълнение. Сама по себе си, тази таблица е необходимо да се запази не само полетата, които сте добавили към собствения си екран, но и полетата, които ще трябва да се провери данните, въведени, Фиг.13. така че не е нужно да извършва движения, за да се запазят позициите на документа чрез паметта

ограничен достъп

За да прочетете цялата статия, трябва да сте влезли като регистриран потребител.

Подкрепете проекта - споделете линка, благодаря!