4. Для информации (Архитектура SAP)
1. Сервер базы данных. Сервер базы данных используется для хранения всех долговременных данных
(persistent data) в системе SAP R/3. Однако, не все данные SAP R/3 могут быть получены посредством
SQL, поскольку некоторые из них находятся в специальных форматах: объединенных (pool) и
кластерных (cluster) таблицах. Эти таблицы сжимают несколько логических таблиц в одну физическую
таблицу. В результате, становится невозможно устанавливать соответствие между логическими
таблицами SAP R/3, описанными в словаре данных SAP R/3, и таблицами или аналитическими
выборками, хранимыми на сервере базы данных.
2. Сервер приложений. Сервер приложений связывается с сервером базы данных и исполняет
программы (написанные на ABAP), которые реализуют бизнес-модели. В большинстве случаев, к
бизнес-логике этих программ можно получить доступ, обратившись к ABAP-функциям. Кроме того,
часть информации не хранится в таблицах, а вычисляется с помощью удаленного вызова этих
функций (RFC, remote function call) во время исполнения. Сервер приложений - этот как раз то место,
где находится SAP BAPI (Business Application Programming Interface, Бизнес-интерфейс прикладного
программирования компании SAP).
3. Сервер представления информации (презентации). Верхний уровень приложения с интерфейсом
пользователя либо (GUI графический интерфейс пользователя – локальная сеть или веб интерфейс
WUI). Сервер представления информации функционирует на рабочем месте каждого пользователя:
обрабатывает команды, вводимые с клавиатуры, управляет отображением информации и
обеспечивает связь с исполняемыми на сервере приложений программами, реализующими бизнес-
модели. При этом, клиентские машины не задействованы в выполнении бизнес-логики.
5. Объекты ABAP (Advanced Business Appl Programming )-
Программа
Блок обработки
Декларация переменных
Блок обработки
Вывод выходных параметров
XXX
ABAP ключевое слово
YYY
Дополнительная информация и операнды
(в зависимости от ключевого слова)
.
Точка как конец
оператора
6. Информация о Программах
1. ABAP редактор T-code - se38, Для настройки экранов T-code - se51, репозиторий объектов T-code –
se80
2. В любом исходном коде есть возможность определения и вызова подпрограммы c помощью
операторов FORM (определение) и PERFORM (вызов)
3. Возможность создания заготовки вызова метода, ФМ и тд. Через “Pattern”
4. При создании программы существует возможность создания экранов и пользовательского
интерфейса в отличии от ФМ и классов ( список экранов и другие параметры программы можно
увидеть в репозитории объектов – T-code – se80)
7. Типы ABAP программ
Существуют следующие типы ABAP программ:
1. Тип Executable Program. Не нуждаются в использовании экранов для управления диалогом с пользователем. Управление вызовами
блоков обработки контролируется процессорами среды выполнения, которая вызывает список блоков обработки в четко определенной
последовательности. Программы данного типа ориентированы в основном на создание отчетов ( отсюда REPORT). Программа типа 1
может вызываться с помощью кода транзакции (транзакция отчета).
2. Тип Мodule Pool. Наиболее важный технический атрибут программ типа М это то, что они могут управляться только с помощью логики
DynPro (пользовательский интерфейс управления приложениями на ABAP). Они могут запускаться на выполнения только с
использованием кода транзакции, который привязан к программе и одному из её экранов. Ещё одна особенность программ типа М в
том, что для неё необходимо создавать собственные экраны диалога с пользователем (с использованием Редактора Экранов).
Программа типа М может также иметь начальный экран выбора. Программы типа М называются пулами модулей и предназначены
для разработки диалоговых программ с большим набором экранов и насыщенной логикой DynPro.
3. Тип Function group. Являются контейнерами для функциональных модулей и не могут быть запущены с использованием кода
транзакции или ввода имени напрямую. Функциональные модули – это специальные подпрограммы, которые можно вызывать из
других ABAP программ. Программы этого типа называются группами функций. Группы функций и функциональные модули создаются с
использованием редактора функций.
4. Тип Class Pool. Не могут быть запущены с использованием кода транзакции или имени программы. Они являются контейнерами для
глобальных классов. Они так же известны под названием определений классов. Создаются с использованием построителя классов.
5. Тип Interface Pool. Не могут быть запущены с использованием кода транзакции или имени программы. Они являются контейнерами
для глобальных интерфейсов. Они так же известны под названием определений интерфейсов. Создаются с использованием
построителя классов.
6. Тип Subroutine Pool. Не могут быть запущены с использованием кода транзакции или имени программы. Они являются контейнерами
для подпрограмм, которые можно вызывать из других программ. Не могут содержать экранов.
7. Тип Include Program. Данный тип позволяют разбивать программу на более мелкие модули. Программу типа Incl можно вставить в
любом месте любой программы с использованием оператора INCLUDE <Имя программы типа I>. Среда разработки ABAP/4 имеет
механизм для автоматического разбиения пулов модулей и функциональных групп на несколько программ типа Include Program.
9. Информация по ФМ
1. Построитель Функций T-code - se37, ФМ принадлежит группе функций c общими
атрибутами
2. Возможность создания BAPI модулей – интерфейс для RFC модулей ( без commit к
БД) для вызова модуля одной системы SAP из другой системы. Пример вызов
модуля SAP Marketing на стороне SAP CRM
3. Возможность вызова модуля как Create new Task ( параллелизация процессов)
4. Веб-сервисы как правило основаны на RFC ФМ после создания ФМ в se80 Create ->
Other objects -> Enterprise Service https://www.google.ru/amp/s/signatov.com/sozdanie-
web-servisa-v-sisteme-sap/amp/
10. Классы/методы и интерфейсы
Класс
(формальное описание
объектов –шаблон объекта)
Класс
(формальное описание объектов –
шаблон объекта)
• Attribute1
• Attribute2
• …
• Method1
• Method2
• …
Атрибуты объектов
Методы объектов
Объекты (экземпляр-инстанция) класса
11. Информация о классах и методах
1. Объект в программировании — некоторая сущность в виртуальном пространстве,
обладающая определённым состоянием и поведением, имеющая заданные
значения свойств (атрибутов) и операций над ними. Как правило, при рассмотрении
объектов выделяется то, что объекты принадлежат одному или нескольким классам,
которые определяют поведение (являются моделью) объекта. Термины «экземпляр
класса» (instance) и «объект» взаимозаменяемы. Объект, созданный по шаблону
класса объектов, является экземпляром класса и наследует весь набор свойств,
методов и событий данного класса
2. Метод в объектно-ориентированном программировании — это функция или
процедура, принадлежащая какому-то классу или объекту. Как и процедура в
процедурном программировании, метод состоит из некоторого количества
операторов для выполнения какого-то действия и имеет набор входных аргументов.
12. Интерфейсы
1. Интерфейсом называется семейство методов и свойств, которые сгруппированы в
единое целое и инкапсулируют какую-либо определенную функциональную
возможность.
2. После того как интерфейс определен, его можно реализовать в некотором классе.
Это означает, что класс будет поддерживать все свойства и члены, определяемые
данным интерфейсом.
3. Интерфейсы не могут существовать сами по себе. Интерфейс представляет собой не
более чем просто именованный набор абстрактных членов. В интерфейсе ни у
одного из методов не должно быть тела. Это означает, что в интерфейсе вообще не
предоставляется никакой реализации. В нем указывается только, что именно
следует делать, но не как это делать.
13. Классы и методы - ООП
1. T-code - se24
2. Основное отличие ФМ от Классов – возможность создания объектов на основании свойств класса
(инкапсуляция, наследование и полиморфизм)
3. Возможно определение локальных типов данных для класса (для всех методов)
4. Возможно создание атрибутов класса с типом (атрибут инстанции – статический атрибут, константа)
5. Типизация методов класса
14. Доступные расширения в ABAP - тот самый BADI
Расширение объектов словаря
Customer Exit
Business Transaction Event (BTE)
Доступные расширения в ABAP
Расширение словаря
BADI (exit на
основании Классов и
Интерфейсов- замена
Customer Exit)
BTE (состоит из
интерфейсов и
позволяет
вызывать
реализацию ФМ
Exit
AET и RAD в
WUI
Таблицы,
элементы
данных,
домены,
средства
поиска (T-
code Se11)
User Exit (exit на
основании
программ)
Customer Exit (exit на
основании ФМ)
16. Типы данных
Data Types
Elementary types
Fixed Length
Complex types
Reference types
Variable length
String
XString
Numeric types (P,I,F)
X
Character types (C,N,D,T)
Structure type
Table type
Object Ref.
Data Reference
Class ref
Interface ref
18. Пример использования различных объектов
Что нужно сделать? Транзакция Программа Query ФМ Класс/Метод Web-сервис Пример
Отчет по данным + + + z-Query по транзакциям и MA
Массовое изменение
данных
+ + Программа для процессинга
данных MA
Интеграция с SAP-
системой
+ (RFC) Промо-коды
Стандартные
расширение
+ (BADI) Сохранение участия
Функция + + ФМ для создания MA
CRM_LOY_MA_CREATE_API
Работа с объектом
(наследование,
инкапсуляция и
полиморфизм)
+ метод по созданию MA
ZCLENC_LOY_TRANS_MANAGEMENT
-CREATE_MA_FROM_TRNS_
Интеграция с внешней
системой
+ Web-сервис для обработки данных
транзакции ОП ( WSDL – Soap)
19. Трейс
1. ABAP trace t-code st12
2. SQL trace t-code st05
Необходимость использования трейса.
1. Поиск программ , функциональных модулей и методов для определения их участия в процессе.
2. Поиск объектов словаря и полей с помощью SQL Trace.
21. Системные переменные (глобальная структура SYST)
1. SY-DATUM - Актуальная дата сервера приложений
2. SY-UZEIT - Актуальное время сервера приложений
3. SY-INDEX – Счетчик цикла DO
4. SY-TABIX – Индекс в цикле LOOP
5. SY-DBCNT – Число считанных строк из БД
6. SY-SUBRC – Код возврата, содержит результат последней выполненной операции. SY-SUBRC = 0 в
случае успешного выполнения
7. SY-LANGU – Язык входа в систему
8. SY-BATCH – Программа выполняется в фоновом режиме
9. SY-BINPT – Программа выполняется в рамках пакетного ввода
10.SY-REPID – Имя текущей программы
11.SY-UNAME – Имя пользователя
23. Помощь в тестировании разработки
1. Отладчик (Debugger)- /h – активация отладчика в GUI
2. При тестировании ФМ позволяет сохранять тестовые данные
3. При тестировании ФМ позволяет последовательно вызывать ФМ (Test Sequence)
https://wiki.scn.sap.com/wiki/display/ABAP/Function+Module+Test+Sequence
4. Возможность сохранения точек остановки в Debug, для перемещения по коду (горячие клавиши)
1. F5 – Перейти в соответствующий объект ( метод класса, программа, ФМ и тд)
2. F6 – перейти на шаг вперед в программе
3. F7 – вернуться на шаг назад
4. F8 – выполнить код до конца или ближайшей точки остановки
5. Shift+F12 – перейти на соответствующую строчку кода, на которой находится курсор ( позволяет пропускать необходимые
ветки кода )
5. При тестировании сервисов пользоваться T-code SRT_UTIL для просмотра описания в журнале
ошибок
6. Обработка дампов – T-code ST22
24. Полезные ссылки
1. Описание типов данных в ABAP
https://help.sap.com/saphelp_47x200/helpdata/en/d3/2e974d35c511d1829f0000e829fbfe/frameset.htm
2. Как написать свою первую программу на ABAP http://www.saptraininghq.com/how-to-create-your-first-sap-abap-program/
3. Вызов метода класса в программе https://answers.sap.com/questions/6310051/how-to-call-a-method-in-a-program.html
4. Отличие обычного ФМ – BAPI и RFC https://www.stechies.com/what-is-the-difference-between-the-normal-function-
module-and-bapi-function/
5. Список всех операторов ABAP c описанием
https://help.sap.com/saphelp_46c/helpdata/en/87/56d00722c011d2954a0000e8353423/content.htm?no_cache=true
6. Общая информация по расширениям функционала
https://wiki.scn.sap.com/wiki/display/Community/An+Introduction+to+Enhancements+and+Modifications+in+SAP+for+Begin
ners
7. Информация по расширению типа CUSTOMER EXIT
https://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=107774353 https://youtu.be/CwncMPKKlnA
8. Расширение BTE https://www.youtube.com/watch?v=b-_KW3HOv6U
9. Отличие Returning и Exporting параметров https://answers.sap.com/questions/4237018/returning-value-and-
exporting.html
10. T-code - ABAPDOCU. Стандартный курс по техникам программирования с примерами.
11. Типы Функциональных модулей - https://answers.sap.com/questions/3690985/how-many-types-of-function-modules-are-
there.html