Uploaded by Mikhail Sarychev

Основы ABAP

advertisement
ОСНОВЫ АВАР
Вводный курс для консультантов
2016 год
ABAP/4
ABAP/4
(Advanced
Business
Application
Programming) - проприетарный внутренний язык
Краткое описание возможностей
программирования высокого уровня немецкой
Язык реализует работу с внутренними
софтверной компании SAP. Наряду с Java
структурами данных, интерфейсом пользователя
является языком создания приложений для SAP
SAP R/3, транзакциями, отчётами,
NetWeaver
Application
Server.
Синтаксис
наиболее близок к языку программирования
COBOL.
Название
Используется исключительно для бизнесприложений и промежуточного программного
История
ABAP
интерфейсами загрузки и выгрузки данных.
расшифровывается
как
обеспечения компании SAP. Имеет возможности
Advanced Business Application Programming, а
для объектно-ориентированного
цифра «4», по всей видимости, символизирует
программирования. Имеет сборщик мусора.
отношение к четвёртому поколению языков
Исходный текст ABAP компилируется
программирования. Язык был создан в 1980 году
(генерируется) в исполняемый ABAP байт-код,
для работы с системой SAP R/2, позднее
известный как «report load»[2]. Исполняется на
унаследован в SAP R/3.
виртуальной машине.
09.04.2021
Архитектура SAP R/3
Клиент-серверная архитектура SAP R/3:
Система SAP R/3 представляет собой
трехуровневую
клиент-серверную
архитектуру:
•
•
•
Нижний уровень – уровень базы
данных;
Уровень приложений написанных на
ABAP для SAP R/3;
Презентационный уровень –
графический пользовательский
интерфейс (SAP GUI).
09.04.2021
R/3 Repository
Presentation
Server
Layer
Application
Server
Layer
ABAP Program
Cross-client
Database
Repository
Client-specific
Customizing tables
Application tables
ã SAP AG 1999
3
Инструменты ABAP (ABAP Workbench)
ABAP Workbench Tools
Debugger
Screen Painter
Menu Painter
FI
HR
SD
MM
WM
Object
Navigator
MM
Cust.
ABAP Editor
ABAP Dictionary
Function Builder
Class Builder
 SAP AG 1999
09.04.2021
4
Инструменты ABAP (ABAP Workbench)
ABAP Workbench состоит из различных инструментов предназначенных для создания и
редактирования объектов репозитария. Инструменты ABAP Workbench обеспечивают
программиста средствами разработки на протяжении полного цикла создания программы.
ABAP-редактор (ABAP Editor) предназначен для написания программного кода
ABAP-словарь (ABAP Dictionary) предназначен для хранения структуры базы данных,
определения таблиц и глобальных типов данных.
Редактор меню (Menu Painter) предназначен для разработки интерфейса пользователя (menu bar,
standard toolbar, application toolbar, function key assignment)
Редактор экранов (Screen Painter) предназначен для разработки экранного интерфейса
пользователя для диалоговых программ.
Построитель функций (Function Builder) предназначен для разработки функциональных модулей
(ФМ). ФМ - программы с предопределённым интерфейсом, входными и выходными параметрами,
доступные для вызова из любой точки системы SAP R/3
Построитель классов (Class Builder) предназначен для разработки глобальных классов
09.04.2021
5
ABAP-словарь
•
Словарь данных - хранилище
описаний структуры данных и таблиц,
с которыми работают программы.
Можно выделить следующие уровни
иерархии словаря данных: таблицы,
структуры, элементы данных и
домены;
•
Для работы со словарём данных
используется транзакция se11.
09.04.2021
6
Иерархия типов ABAP-словаря
09.04.2021
7
Иерархия типов ABAP-словаря
Элемент данных определяет смысловое назначение данных и содержит помимо технических
атрибутов (как например тип и длина поля) и презентационные - названия элемента данных
используемое как в описании структур, так и в программных интерфейсах.
Соответственно, все структурированные данные в ABAP словаре (структуры, таблицы), как
правило, строятся на элементах данных.
Домены являются самым низкоуровневым элементом ABAP словаря. При создании домена вы
должны указать базовый тип и длину. Из домена элемент данных наследует технические
атрибуты. Один и тот же домен может быть использован в определении нескольких элементов
данных.
Использование доменов позволяет избежать множества ошибок пользовательского ввода.
Система сама проверит значение и в случае чего выдаст ошибку. Использование домена
позволяет унифицировать систему, так как создается один домен для множества общих понятий.
Если появилось новое значение с развитием системы – нужно изменить только один домен, а не
всю систему.
09.04.2021
8
Предопределённые типы ABAP-словаря
Predefined ABAP Dictionary Types
ACCP ...............
CHAR ...............
CLNT ...............
CUKY ...............
CURR ...............
DATS ...............
DEC .................
FLTP ................
INT1 .................
INT2 .................
INT4 .................
LANG ...............
LCHR ...............
LRAW ..............
NUMC ..............
PREC ...............
QUAN ..............
RAW ................
TIMS ................
VARC ...............
STRING ...........
RAWSTRING ...
UNIT .................
Accounting period YYYYMM
Character string
Client
Currency key, referenced by a CURR field
Currency field, stored as DEC
Date field (YYYYMMDD), stored as CHAR(8)
Calculation or amount field, with plus or minus sign
Floating point number with eight-byte accuracy
1 byte integer. Whole number <= 255
2 byte integer. Only for length field before LCHR or LRAW
4 byte integer. Whole number with plus or minus sign
Language key
Long character string. Must be preceded by an INT2 field.
Long byte string. Must be preceded by an INT2 field.
Character string containing only digits
Accuracy of a QUAN field.
Quantity field. Points to a units field with the type UNIT.
Uninterpreted byte sequence
Time field (HHMMSS), stored as CHAR(6)
Long character string (not supported after Release 3.0)
Character string of variable length
Byte sequence of variable length
Unit key for a QUAN field
Not
elementary
types
 SAP AG 1999
09.04.2021
9
Объекты ABAP-словаря
•
Структура – набор полей с указанием
типов данных, средств поиска и
ссылочных таблиц. По своей сути,
структура это слепок одной записи
таблицы. То есть, таблица физически
хранит какие-то данные в базе данных
и таких данных может быть много.
Структура хранится только в памяти
программы и всегда содержит только
одну запись данных.
09.04.2021
10
Закладка «Компоненты»
09.04.2021
11
Закладка «Справка / Проверка значений ввода»
09.04.2021
12
Таблицы
•
Таблица - это плоская структура с
первичным ключом и набором
значений в БД.
09.04.2021
13
Закладка "Поля"
09.04.2021
14
Элементы данных
•
Элемент данных – объект словаря
данных, представляющий собой
пользовательский тип данных, с
семантическим описанием объекта.
Элемент данных в отличие от домена
помимо технических характеристик
несёт на себе смысловую нагрузку и
привязан к какой-либо предметной
области.
09.04.2021
15
Закладка «Тип данных»
09.04.2021
16
Закладка «Дополнительные свойства»
09.04.2021
17
Закладка «Метка поля»
09.04.2021
18
Домены
•
Домен – объект словаря данных,
задающий область допустимых
значений, тип данных и формат
вывода для поля. Домен описывает
данные с технической точки зрения. С
помощью домена мы определяем
длину поля, тип, свойства вывода,
подпрограмму преобразования,
диапазон возможных значений.
09.04.2021
19
Закладка «Определение»
09.04.2021
20
Закладка «Диапазон значений»
09.04.2021
21
Как определить тип поля?
09.04.2021
22
Типы данных
Предопределённые типы. Предопределённые типы, как следует из названия, изначально
предопределены в системе SAP и не поддаются изменению. На их основании строятся более
сложные типы данных. К предопределённым типам относятся: I (Integer), P (Point number), F
(Floating point number), C (Character), N (Numeric text), D (Date), T (Time), X (Byte), String, XString.
Локальные программные типы. Типы данных, объявленные локально в программе. Актуальны
только для программы, в которой они объявлены. Строятся на основании предопределённых
типов и типов репозитария объектов, а так же на основании ранее объявленных локальных
программных типов.
Типы репозитария объектов. Типы данных объявленные и хранящиеся в репозитарии системы.
Словарь данных - хранилище описаний структуры данных, с которыми работают программы.
Группа типов – программа, специального назначения, в которой хранятся объявления типов
данных. Группы типов и словарь данных являются частью репозитария объектов.
09.04.2021
23
Типы данных
09.04.2021
24
Иерархия типов данных
09.04.2021
25
Табличные типы
Иерархия табличных типов выглядит следующим образом:
09.04.2021
26
Табличные типы
09.04.2021
27
Табличные типы
В стандартных таблицах (STANDARD TABLE) нумерация строк (индекс) является
внутренней. Существует возможность доступа как по индексу, так и по ключу. Этот тип таблицы
следует выбирать в том случае, когда для доступа к внутренней таблице, главным образом,
используется индекс.
В отсортированных таблицах (SORTED TABLE) записи данных автоматически
сортируются в восходящем порядке по ключевым полям. В этом случае индекс также является
внутренним. Существует возможность доступа как по индексу, так и по ключу. Этот тип таблицы
следует выбирать в том случае, когда для доступа к внутренней таблице, главным образом,
используется ключ, или если требуется автоматическая сортировка таблицы по ключу.
В хеш-таблицах (HASHED TABLE) для быстрого доступа по ключу используется
управление записями данных посредством процедуры хеширования. Ключ должен быть
уникальным. В случае хеш-таблиц возможен доступ только по ключу! Этот тип таблицы следует
выбирать в том случае, когда внутренняя таблица является чрезвычайно объемной, и
используется только доступ по ключу.
09.04.2021
28
ABAP-программа (взгляд пользователя)
09.04.2021
29
Взаимодействие между серверами
09.04.2021
30
Рабочий цикл ABAP-программы (старт программы)
09.04.2021
31
Контекст ABAP-программы
09.04.2021
32
Формирование селекционного экрана
09.04.2021
33
Запуск исполняемого блока
09.04.2021
34
Формирование запроса к БД
09.04.2021
35
Считывание данных из БД
09.04.2021
36
Формирование отчета
09.04.2021
37
ABAP-редактор
•
ABAP редактор – инструментальная
среда для просмотра, создания и
редактирования текстов исходных
ABAP-программ.
•
Для запуска ABAP-редактора
используется транзакция se38.
09.04.2021
38
Навигатор объектов
09.04.2021
39
Компоненты ABAP-программы
Components of an ABAP Program
Values in
variants
Screens
xy
007
xz
008
Source code
Documentation
Text elements
INCLUDE mz_test_top.
INCLUDE mz_test_i01.
INCLUDE mz_test_o01.
INCLUDE mz_test_f01.
...
PROGRAM sapmz_test_.
Interface
TYPES: ...
DATA: ....
...
Hallo Welt!
Use
...
Hello world!
Integration
...
¡Hola mundo!
Object
Edit Goto
Object Edit
MODULE s_100 OUTPUT.
...
ENDMODULE.
MODULE ok_100 INPUT.
...
ENDMODULE.
Application Help
Extras Settings
Goto
ContinueExtras
System
Help
Environment System Help
Continue
First line
FirstLetzte
line Zeile
LastZurück
line
Back
Mehr Ziele  Erstes Bild
FirstLetztes
screenBild
More
Tabellentyp

Table
Zurück
type
Back
LastErstes
screen
Feld
FirstLetztes
field Feld
Last field
FORM calc using ....
Changing .
...
ENDFORM.
 SAP AG 1999
09.04.2021
40
Структура ABAP-программы
Structure of a Program
Declarations
Dialog module
Event block
Procedure
09.04.2021
PROGRAM sapbc402_rund_test.
TYPES: ...
DATA: ....
CONSTANTS: ...
MODULE s_100 OUTPUT.
...
ENDMODULE.
...
...
INITIALIZATION.
...
...
START-OF-SELECTION.
...
...
...
...
...
FORM calc USING
...
CHANGING ...
...
ENDFORM.
 SAP AG 1999
41
Модуляризация ABAP-программы
Program Organization
Create Program
Program
Workbench Edit
SAPMZ402_RUND_TEST
Goto
Extras
Environment System Help
Object Navigator
Object name
 With TOP include

Global declarations
PBO modules
PAI modules
Subroutines
SAPMZ402_RUND_TEST
 Dictionary structures
 Fields
 PBO modules
 PAI modules
 Subroutines
 Screens
 GUI statuses
 GUI titles
 Transactions
 Includes
MZ402_RUND_TESTTOP
MZ402_RUND_TESTO01
MZ402_RUND_TESTI01
MZ402_RUND_TESTF01
MZ402_RUND_TESTE01
Events
 SAP AG 1999
09.04.2021
42
События ABAP-программы
LOAD-OF-PROGRAM.
Обработчик события загрузки программ с типом 1, M, F, или S.
Обрабатывает единожды при запуске программы.
INITIALIZATION
Обработчик события инициализации селекционного экрана. Событие
возникает до отрисовки селекционного экрана. В нём, как правило,
инициализируют экранные поля.
AT SELECTION-SCREEN OUTPUT.
Обработчик события отрисовки селекционного экрана. Событие
возникает во время вывода селекционных полей на экран.
Используется для изменения атрибутов отображения селекционных
полей.
AT SELECTION-SCREEN
Обработчик ввода команды. Событие возникает при нажатии
управляющих кнопок на селекционном экране. На момент события
селекционный экран остается активным.
AT SELECTION-SCREEN ON sel
Обработчик ввода значения в поле sel. Событие возникает при
введении значения в поле и нажатия «Выполнить» или «Ввод».
AT SELECTION-SCREEN ON VALUE REQUEST sel
Обработчик вызова СП для поля sel. Событие возникает при клике по
кнопке СП или нажатии F4.
AT SELECTION-SCREEN ON HELP REQUEST sel
Обработчик вызова справки по полю sel. Событие возникает при
нажатии F1.
START-OF-SELECTION
Обработчик выборки данных. Событие возникает после отработки
селекционного экрана. Используется для основной выборки данных.
END-OF-SELECTION
Обработчик конца выборки данных. Событие возникает после
выполнения START-OF SELECTION. Обычно используется для вывода
данных на экран.
09.04.2021
43
События ABAP-программы
09.04.2021
44
Селекционный экран
Селекционным экраном называют начальный экран отчета, на котором
располагаются параметры ограничения выборки данных этого отчета. Есть 2 вида
элементов селекционного экрана: параметры и диапазоны.
Синтаксис объявления параметров выглядит следующим образом:
PARAMETERS p
[TYPE type [DECIMALS dec]]|[LIKE g|(g)]
[DEFAULT f]
[NO-DISPLAY]
[LOWER CASE]
[OBLIGATORY]
[AS CHECKBOX]
[RADIOBUTTON GROUP radi]
[VISIBLE LENGTH vlen]
[VALUE CHECK]
[USER-COMMAND ucom].
09.04.2021
45
Селекционный экран параметры (пример)
*Параметр 10 значное число со знаком, 3 знака после запятой,
* с начальныйм значением ‘3.1415′
PARAMETERS P_NUM(10) TYPE P DECIMALS 3 DEFAULT ‘3.1415′.
*Параметр для поля ANLA-ANLN1
PARAMETERS P_ANLN1 LIKE ANLA-ANLN1.
*Строка длиной 50 символов с видимой длиной 25 символов
PARAMETERS P_CHAR1(50) TYPE C VISIBLE LENGTH 25.
*Строка длиной 50 символов без преобразовани к верхнему регистру
PARAMETERS P_CHAR2(50) TYPE C LOWER CASE.
*Чекбокс
PARAMETERS P_FLAG TYPE FLAG AS CHECKBOX.
*Обязательный параметра для поля ANLA-BUKRS с проверкой значения
PARAMETERS P_BUKRS LIKE ANLA-BUKRS VALUE CHECK OBLIGATORY.
*Группа переключателей с командой RGR1
PARAMETERS: P_RB1 RADIOBUTTON GROUP RBGR USER-COMMAND RGR1,
P_RB2 RADIOBUTTON GROUP RBGR,
P_RB3 RADIOBUTTON GROUP RBGR.
09.04.2021
46
Диапазоны (select-options)
Диапазоны на селекционном экране полностью аналогичны таблицам диапазона.
Синтаксис объявления параметров выглядит следующим образом:
SELECT-OPTIONS sel FOR f|(f)
[DEFAULT g [TO h] [OPTION xx SIGN s]]
[NO-DISPLAY]
[LOWER CASE]
[OBLIGATORY]
[NO-EXTENSION]
[NO INTERVALS]
[VISIBLE LENGTH vlen].
09.04.2021
47
Селекционный экран диапазоны (пример)
*Диапазон для ANLA-BUKRS
SELECT-OPTIONS R_BUKRS FOR ANLA-BUKRS.
*Диапазон для ANLA-ANLN1 с начальными значениями
SELECT-OPTIONS R_ANLN1 FOR ANLA-ANLN1
DEFAULT ‘1*’ TO ‘2*’ OPTION BT SIGN E.
*Диапазон для ANLA-ANLN2 без расширения
SELECT-OPTIONS R_ANLN2 FOR ANLA-ANLN2 NO-EXTENSION.
*Диапазон для ANLA-ANLN2 без интервалов
SELECT-OPTIONS R_ANLKL FOR ANLA-ANLKL NO INTERVALS.
09.04.2021
48
Подпрограммы (perform)
FORM form
[TABLES itab1 ... itabn]
[USING [VALUE(p1)| p1] … [VALUE(pn) |pn]]
[CHANGING [VALUE(p1)| p1] … [VALUE(pn) |pn]].
ENDFORM.
Вместо дополнения TABLES, по возможности используйте дополнения USING или
CHANGING. В дополнении TABLES вы можете использовать только таблицы типа
STANDARD. Описанный в дополнении TABLES формальный параметр всегда имеет строку
заголовка, даже если фактический параметр при вызове подпрограммы его не имеет. Параметр
описанный в дополнении TABLES всегда является параметром-ссылкой.
В дополнениях USING и CHANGING по умолчанию все параметры имеют тип параметрссылка. Для указания параметра-значения, имя параметра нужно заключить в «скобки»
VALUE(). Обратите внимание на то, что скобки не отделяются от имени параметра пробелами.
09.04.2021
49
Включения (includes)
Для обеспечения модульности при разработке программы на ABAP предусмотрены
включения (includes). В общем случае включение выглядит следующим образом:
INCLUDE prog.
Где prog это имя включаемой программы. При компиляции программы весь исходный
код из prog добавляется в головную программу непосредственно в строку где указано
включение. Это позволяет делить исходный код программы на логические блоки, что ускоряет
кодирование и отладку, и делает участки кода доступными в нескольких программах
одновременно.
Разновидностью включения является включение пула типов:
TYPE-POOLS tpool.
Тип пулов фактически является аналогом включения программного кода, с той лишь
разницей, что включаются не исполняемый код, а определения типа. Создание пула типов
преследует ту же цель что и модульная разработка программы - дать возможность
использовать определения типов в нескольких программах.
09.04.2021
50
Текстовые элементы
09.04.2021
51
Экранный вывод
Интерфейсы взаимодействия с пользователем
Экраны используются, для отображения данных и организации
взаимодействия с пользователем. В SAP различают три, принципиально
отличающихся друг от друга, вида экранов:
Селекционный экран (screen 1000)
09.04.2021
52
Экранный вывод
Диалоговый экран (screen n)
09.04.2021
53
Экранный вывод
ABAP-List (screen 120)
09.04.2021
54
Экранный вывод
В отличии от экранов, которые содержат в себе такие элементы как
входные/выходные поля, кнопки, и создаются при помощи специального
средства – редактора экранов, ABAP-List формируется посредством ABAPкода, при помощи операторов WRITE, ULINE и SKIP.
ABAP-лист формируется интерпретатором на сервере приложений
и хранится в памяти сервера. Переход на презентационный уровень
происходит по событию LEAVE TO LIST-PROCESSING, или автоматически
после выполнения последнего блока программы.
Для отображения ABAP-List, вызывается специальный обработчик,
который формирует экран под номером 120 и размещает на нём
содержимое ABAP-списка. Таким образом, ABAP-List это экран,
формирующийся динамически посредством ABAP-кода.
09.04.2021
55
Экранный вывод (Оператор WRITE)
Для простейшего вывода информации на
пользовательский экран в ABAP используется
оператор WRITE. Данный оператор имеет
следующий синтаксис:
… YYMMDD
WRITE [</><pos><col>] <f> [<fmt_opt>].
… ROUND r
Где <fmt_opt> это опция форматирования
выводимых данных:
… UNIT u
… NO-ZERO
… NO-SIGN
… NO GROUPING
… DD/MM/YY
… MM/DD/YY
… DD/MM/YYYY
… MM/DD/YYYY
… DDMMYY
… CURRENCY w
… DECIMALS d
… TIME ZONE tz
… EXPONENT e
… NO-GAP (only with WRITE)
… LEFT-JUSTIFIED
… CENTERED
… RIGHT-JUSTIFIED
Операнд <f> может быть текстовой строкой или
переменной программы. Сформировавшийся
экран можно тут же распечатать, посредством
нажатия на клавишу «Печать».
… MMDDYY
09.04.2021
56
Основные конструкции ABAP
Операторы сравнения, булевы операторы
09.04.2021
57
Основные конструкции ABAP
Арифметические операции
09.04.2021
58
Основные конструкции ABAP
Операции над датами
09.04.2021
59
Основные конструкции ABAP
Операции над строками. Длинна и смещение.
09.04.2021
60
Основные конструкции ABAP
Операции над строками. Модификация.
09.04.2021
61
Основные конструкции ABAP
Разделение, соединение строк.
09.04.2021
62
Основные конструкции ABAP
Сравнение строк №1
Оператор
Описание
CO
с1 содержит
только
символы из c2
CN
с1 содержит
только
символы не
содержащиеся
в c2
CA
с1 содержит
хотя бы один
символ из c2
NA
с1 не
содержит ни
одного
символа из c2
09.04.2021
Пример
‘ABCDE’ CO ‘XYZ’
is false;
‘ABCDE’ CO ‘AB’
is false;
‘ABCDE’ CO ‘ABCDE’ is true;
SY-FDPOS = 0.
SY-FDPOS = 2.
SY-FDPOS = 5.
‘ABCDE’ CA ‘CY’ is true; SY-FDPOS = 2.
‘ABCDE’ CA ‘XY’ is false; SY-FDPOS = 5.
63
Основные конструкции ABAP
Сравнение строк №2
Оператор
Описание
CS
с1 содержит
подстроку c2
NS
с1 не содержит
подстроки c2
CP
вся строка с1
соответствует
шаблону c2
NP
с1 не
соответствует
шаблону c2
09.04.2021
Пример
‘ABCDE’ CS ‘CD’ is true; SY-FDPOS = 2.
‘ABCDE’ CS ‘XY’ is false; SY-FDPOS = 5.
‘ABAAA’ CS ‘AB ’ is true; SY-FDPOS = 0.
‘ ABC’ CS ‘ AB’ is true; SY-FDPOS = 1.
‘ABC DEF’ CS ‘ ’ is true; but: SY-FDPOS = 0,
‘ABCDE’
‘ABCDE’
‘ABCDE’
‘ABCDE’
‘ABCDE’
CP
CP
CP
CP
CP
‘*CD*’ is true; SY-FDPOS = 2.
‘*CD’ is false; SY-FDPOS = 5.
‘++CD+’ is true; SY-FDPOS = 0.
‘+CD*’ is false; SY-FDPOS = 5.
‘*B*D*’ is true; SY-FDPOS = 1.
64
Основные конструкции ABAP
Циклы.
09.04.2021
65
Основные конструкции ABAP
Условия, переходы.
09.04.2021
66
Спасибо за внимание!
Контактная информация
410015, г. Саратов, ул. Фабричная, д. 1
Тел.: +7 (8452) 47-09-14, 4402
E-mail: aaariskin@sibintek.ru
09.04.2021
Download