× Уважаемое сообщество! Рулетка сейчас находится на обновлении. Как только обновление будет завершено, мы сразу включим ее обратно. Не переживайте!

Готовый перевод An Ordinary Programmer Uses SAP and XR to Conquer the World / Обычный программист с SAP и XR завоёвывает мир: Глава 42: «Формирование Ядра, 6-й уровень»

(Ctrl + влево) Предыдущая глава   |    Оглавление    |   Следующая глава (Ctrl + вправо)

Чжан Вэй точил свои клинки. Имея при себе десять мощнейших орудий, он вторгся в самые недра BAPI, начав настоящее прочесывание местности в поисках сокровищ!

Войдя в интерфейс BAPI, Чжан Вэй принялся за детальный анализ. Система предлагала два способа поиска: древовидное иерархическое меню или подбор по ключевым словам. Заготовив десять приманок для исследования, Чжан Вэй сразу же устремился к поиску по ключевым словам.

Первым делом он решил проверить основные данные. Стоило прокрутить список ключевых слов чуть ниже, как он наткнулся на «Customer» – основные данные дебитора. Все-таки название начиналось с латинской «C»!

Чжан Вэй кликнул по строке и обнаружил, что внутри скрывался целый список конкретных BAPI: «create», «edit», «change», «delete» и так далее – всего несколько десятков различных BAPI.

Переведя взгляд в правую часть экрана, Чжан Вэй заметил до боли знакомое обозначение – «KNA1». Прекрасно! Эту таблицу основных данных дебитора он использовал бесчисленное количество раз при написании отчетов. Однако здесь, в заголовке над «KNA1», название изменилось. Теперь там значилось «objecttype» – тип объекта?

Что за чертовщина! Почему больше нет имени таблицы? Что еще за тип объекта «objecttype» и какой в этом смысл? Object – объект… Объектно-ориентированное программирование?

Чжан Вэй вспомнил, как во время формирования твердого Синего Ядра он разделял языки программирования по поколениям. Первое поколение – машинно-ориентированные языки вроде ассемблера; второе – процедурные, такие как C; третье – объектно-ориентированные, как Java; четвертое – прикладно-ориентированные, к которым относился ABAP от SAP, на котором он сейчас работал. Позже Чжан Вэй детализировал четвертое поколение: это должны быть языки для узкоспециализированных прикладных направлений. Его нынешний ABAP можно использовать только внутри SAP для написания местных программ, для других нужд он не подходил. Сфера применения узкая, но инкапсуляция выполнена превосходно – стандартная бизнес-логика сферы ERP практически полностью упакована в готовые блоки, бери и пользуйся! Следовательно, в четвертом поколении должно быть множество языков под конкретные конечные прикладные задачи: для анимации, для проектирования… Языки программирования, запертые внутри своих областей.

Однако в Синем Ядре SAP, которое сформировал Чжан Вэй, отсутствовал третий, объектно-ориентированный уровень. От языка C он совершил прямой переход к ABAP! Тогда это не давало Чжан Вэю покоя. Ему казалось, что это вступает в конфликт с его собственной классификацией четырех поколений – посередине зияла пустота.

Тогда он думал: если встроить туда объектно-ориентированный уровень, то ведь ABAP нельзя назвать объектно-ориентированным в полной мере. Во время работы Чжан Вэй явно не ощущал привычного объектно-ориентированного мышления. ABAP казался ему слишком простым по сравнению с каноничными объектно-ориентированными языками вроде Java или C#. При этом эффективность разработки оставалась высочайшей, ориентированной напрямую на нужды конечного пользователя. Поэтому на третьем уровне своего Синего Ядра SAP он тогда закрепил именно программирование на ABAP.

Но сейчас, при попытке сформировать шестой уровень ядра, внезапно выскочил этот самый «object», знатно ошарашив Чжан Вэя! И выскочил он не где-нибудь, а прямо над таблицей основных данных дебитора «KNA1»!

Неужели KNA1 рассматривается как объект, для работы с которым пишется BAPI?

Эта внезапная мысль привела Чжан Вэя в неописуемый восторг. Возможно, шестой уровень закроется и закрепится в ядре с самого начала! К тому же это выглядело крайне логично. Что ж, нужно провести проверку!

В запасе у Чжан Вэя оставалось еще много грозного оружия и приманок. Он использовал всего одну – «основные данные дебитора», даже не изучил ее до конца, а уже получил улов. Пора забрасывать вторую и третью приманки!

Азарт нарастал. Раз можно забрасывать наживку, значит, рыба уже клюет! Можно идти на решительный штурм!

Он забросил вторую приманку – «vendor», основные данные поставщика. Буква «V» находится в самом конце алфавита, так что Чжан Вэю пришлось прокрутить список почти до самого низа.

Сгорая от нетерпения, Чжан Вэй кликнул по строке, мысленно твердя про себя: «LFA1». Это таблица основных данных поставщика. Открыв меню, он тут же уставился в правую колонку с информацией.

О боги! Точно! Перед глазами возникла знакомая «LFA1». Черт возьми, родная таблица! При написании отчетов он обращался к LFA1 бесчисленное количество раз и знал ее как свои пять пальцев!

И сейчас она находилась именно там, где он ожидал: сразу после типа объекта «objecttype» следовало «LFA1».

Пришел черед третьей приманки – «Material: основные данные материала». Чжан Вэй в предвкушении открыл это меню. Он был абсолютно уверен, что увидит там ожидаемое и столь знакомое имя таблицы «MARA» – таблицу основных данных материалов, которую он использовал в отчетах великое множество раз!

Но стоило экрану обновиться, как Чжан Вэй буквально окаменел. Вместо желанной «MARA» там красовалось совершенно чуждое «Objecttype: BUS1001»!

Да что за дела! Ведь имя объекта четко обозначено как «Material». Почему тогда тип объекта – не «MARA»?

Чжан Вэй почувствовал себя как монах, который не может дотянуться до собственной макушки. Полное замешательство!

Он тут же забросил все оставшиеся приманки. И повсюду всплывали абсолютно незнакомые, странные имена типов объектов!

Голова пошла кругом. Неужели в первых двух случаях у него просто зарябило в глазах? Ошибся?

Чжан Вэй вернулся к основным данным дебитора и поставщика. Нет, все по-прежнему! Там действительно стояли таблицы «KNA1» и «LFA1», никакой ошибки!

Но почему только эти две, а остальные – мимо? Чжан Вэй погрузился в раздумья. Неужели логика его рассуждений дала сбой? Он начал сомневаться в себе.

«Язык ABAP перешагнул через целое поколение языков программирования, – рассуждал Чжан Вэй, – а значит, этот разрыв должен где-то компенсироваться. И кажется, я нащупал это место!»

Но почему первые две сущности соответствовали его представлениям об объектно-ориентированном подходе, а последующие – нет? В чем же причина?

При этом имена объектов были абсолютно верными! Для материала – «Material», для заказа на закупку – «PurchaseOrder»… Но почему типы объектов не соответствовали именам таблиц с данными?

Черт побери! Что происходит? Чжан Вэй едва не выл от досады.

Имена объектов полностью укладывались в его картину объектно-ориентированного мира, но типы объектов рушили все к чертям!

Проклятье! Где ошибка? В чем изъян? Чжан Вэю безумно хотелось почесать в затылке, но офисная обстановка не позволяла устроить подобное представление.

Ладно, надо сходить в туалет, умыться. Освежить мозги!

Вернувшись на рабочее место, он немного успокоился.

Непонятно, какой импульс им двинул, но Чжан Вэй просто дважды кликнул по имени объекта.

Ого! Потайная дверь! Здесь была скрытая дверь!

На экране развернулось совершенно новое содержимое. Настоящий Новый континент!

Надо же, тайный ход! Дизайнеры этого сокровища запрятали его на славу!

Отлично! Чжан Вэй ощутил, как тьма рассеивается, уступая место свету.

После перехода его взгляду открылась строка «Businessobject: BUS2012PurchaseOrder». Имя изменилось! Теперь это называлось коммерческим объектом, или, если точнее, бизнес-объектом!

Чжан Вэй уже натренировал навык перевода с английского, пусть даже это касалось исключительно узкоспециализированных терминов SAP и исключительно в формате отдельных слов, а не целых фраз.

«Бизнес-объект»! Вот оно. Идеальное название! Да, именно так он и должен называться. Заказ на закупку – это ведь единая сущность бизнес-процесса. То есть полноценный бизнес-объект! Использовать здесь одну таблицу было бы неверно, ведь заказ на закупку состоит как минимум из двух таблиц: заголовка и позиций. Так что концепция бизнес-объекта подходила идеально!

Но ведь должен существовать хотя бы физический объект таблицы «EKKO». Стоит поискать.

Взглянув ниже, Чжан Вэй увидел еще пять свернутых подменю. Одно из них называлось «Keyfields» – ключевые поля. Но ведь это и есть таблица!

Дрожащими от волнения пальцами Чжан Вэй кликнул по нему. О да! Нашелся!

«EKKO»! Столь желанная, искомая, снившаяся во сне… Чжан Вэй мысленно перебрал все известные ему слова, которыми описывают тоску по любимому человеку, и обратил их к этой аббревиатуре.

Да, все сошлось!

Только после этого Чжан Вэй внимательно изучил содержимое остальных четырех разделов меню, и его догадка подтвердилась окончательно. Это было чистейшее объектно-ориентированное мышление!

Разделы именовались: «Interfaces» – интерфейсы, «Attributes» – атрибуты, «Methods» – методы, «Events» – события!

Классическое объектно-ориентированное проектирование во всей красе!

Чжан Вэй обнаружил, что абсолютно все BAPI, связанные с обработкой заказов на закупку, находятся именно в разделе «Methods» – методы.

Он тут же бросился проверять остальные заготовленные приманки.

Невероятно!

Все сошлось, структура везде была идентичной! Даже у тех самых первых поставщиков и дебиторов все обстояло точно так же!

Чжан Вэй подумал, что термин «Businessobject» – бизнес-объект – подходит здесь как нельзя лучше. То, что для дебиторов и поставщиков в качестве типа бизнес-объекта напрямую использовались имена таблиц, объяснялось, скорее всего, их простотой. Вот разработчики и оставили имена таблиц. А почему не сделали так для остальных? Да потому что структуры сложнее! Бизнес-объект должен объединять в себе слишком много сущностей, и имя одной физической таблицы просто не смогло бы покрыть все многообразие. Либо какой-то программист в свое время банально поленился и выбрал путь наименьшего сопротивления, дав простые имена.

Чжан Вэй усмехнулся. Версия с ленью программистов казалась самой правдоподобной, если опираться на принцип Бритвы Оккама.

Но почему для него была так важна эта связь между таблицами и объектами? И почему название «Businessobject» показалось ему настолько точным?

В теории Чжан Вэя формирование ядра SAP шло сначала по слоям, а затем переплеталось в единую сеть.

Сформированный им пятый уровень состоял из таблиц данных. Поля пятого и четвертого уровней были связаны между собой, как и сами таблицы пятого уровня. На самом деле связь между таблицами Чжан Вэй вывел теоретически, основываясь на своем опыте написания отчетов, но у него не было системного подтверждения. Не хватало связующего звена, уходящего вверх, к шестому уровню.

И теперь все встало на свои места! Бизнес-объект. Например, заказ на закупку содержит две физические таблицы – «EKKO» и «EKPO», в то время как для дебитора достаточно одной – «KNA1». Следовательно, для документов вроде заказа на закупку, имеющих несколько физических сущностей, с точки зрения бизнес-объекта нельзя определять тип объекта именем только одной таблицы. Требовалось принципиально новое обозначение.

На примере заказа на закупку: таблицы EKKO и EKPO объединялись в единую бизнес-сущность – заказ на закупку, то есть в бизнес-объект.

Вот она – истинная причина, почему ранее он обнаружил совпадение типов объектов с именами таблиц только у поставщиков и дебиторов, тогда как для всех остальных сущностей типы объектов были переопределены.

И это же являлось истинной связью шестого уровня!

Каждый бизнес-объект оборачивал в себя одну или несколько физических таблиц. Таблицы и бизнес-объекты сливались воедино внутри BAPI на основе бизнес-логики. То есть связи между таблицами на самом деле определялись именно посредством BAPI. Ранее Чжан Вэй считал, что таблицы связаны между собой, лишь судя по конечному результату: ведь при составлении отчетов их приходилось соединять, чтобы получить корректные данные.

Но почему они связаны и как именно – Чжан Вэй не знал. Теперь же тайна раскрылась: их связывала воедино логика BAPI!

Формирование шестого уровня ядра было официально завершено!

Пятый уровень – это таблицы, шестой – уровень BAPI, или уровень бизнес-объектов. Один бизнес-объект включает в себя множество BAPI. И каждый BAPI определяет взаимосвязи между таблицами.

Отныне пятый уровень неразрывно соединился с шестым!

Чжан Вэй продвинул Наследие Дао SAP на шестой уровень, сформировав твердое Синее Ядро SAP, вобравшее в себя силу всех шести уровней.

http://tl.rulate.ru/book/196473/21673006

(Ctrl + влево) Предыдущая глава   |    Оглавление    |   Следующая глава (Ctrl + вправо)

Обсуждение главы:

Еще никто не написал комментариев...
Чтобы оставлять комментарии Войдите или Зарегистрируйтесь

Инструменты
Настройки

Готово:

100.00% КП = 1.0

Скачать как .txt файл
Скачать как .fb2 файл
Скачать как .docx файл
Скачать как .pdf файл
Ссылка на эту страницу
Оглавление перевода
Интерфейс перевода